PHP-fpm

DaewoongJeon·2021년 5월 14일
2

Web

목록 보기
3/6

1. 개요

A. PHP-fpm이란?

PHP-fpm에 대해 살펴보기 전에 먼저 PHP와 CGI에 대해 간단하게 알아보겠습니다.

  1. PHP : PHP(Hypertext Preprocessor)는 C언어를 기반으로 만들어진 서버 측에서 실행되는 서버 사이드 스크립트 언어입니다.
  • PHP는 정적인 페이지만을 전달해주는 HTML을 보완하여 동적인 페이지를 표현할 수 있게 도와줍니다.
  • 최근에는 HTML과 PHP를 다른 파일로 작성하는 것이 일반적입니다.
  • 그리고 따로 작성된 PHP는 웹서버가 아닌 PHP-fpm을 통해 실행된다고 합니다.
  1. CGI : CGI(Common Gateway Interface)는 동적인 페이지 구현을 위한 프로그램에 클라이언트의 요청을 전달해주는 프로그램입니다.

  2. PHP-fpm : PHP-fpm(PHP FastCGI Process Manager)는 보통의 CGI보다 빠른 버전입니다.

  • 외부 PHP 프로그램에 클라이언트의 요청을 전달해줍니다.
  • FastCGI는 클라이언트의 요청을 전달할 때마다 새로운 프로세스를 생성하는 것이 아니라 이미 생성된 프로세스를 재활용하는 방식을 사용하여 처리가 빠릅니다.

2. Nginx와 PHP-fpm 연동하기

Nginx 웹 서버가 PHP 프로그램을 사용하는 서비스에 요청을 전달하려면 Nginx와 PHP-fpm간 연동이 필요합니다.

A. Nginx에서 PHP-fpm로의 PHP파일 전달 과정

Nginx 웹서버가 클라이언트에게 PHP 파일을 요청받았을 경우, 어떻게 PHP-fpm에 요청을 전달하는지 알아보겠습니다.

  1. NGINX에 PHP파일을 요청받게되면 PHP 처리가 정의 되어 있는 LOCATION 안의 제어문을 처리합니다.
  2. LOCATION 제어문 안에 있는 지시어를 활용하여 PHP-fpm에게 전달할 php 파일을 지정합니다.
  3. 전달하기 위해 지정된 파일을 fastcgi_pass 경로의 PHP-fpm에 전달합니다.
  4. php 파일을 전달 받은 PHP-fpm은 php가 실행될 수 있도록 외부 프로그램에 연결시켜 줍니다.

B. Nginx 서버 설정

위의 전달 과정을 참고하여 Nginx 서버 설정 파일인 default.conf 파일을 수정할 것입니다.

	location ~ \.php$ {
		fastcgi_pass      127.0.0.1:9000;
		fastcgi_index     index.php;
		include           fastcgi.conf;
	}
  • PHP-fpm 연결 주소는 php-fpm.conf 파일에서 확인 가능합니다.
  • php-fpm.conf 파일 설정을 통해 php-fpm의 성능을 향상시키고 php-fpm 프로그램을 사용하는 컴퓨터 자원을 효율적으로 관리할 수 있습니다.
  • Location 안에서 추가적으로 사용할 수 있는 fastcgi_param이라는 지시어는 PHP-fpm에 전달할 변수를 정의합니다.
    (ex. fastcgi_param SCRIPT_FILENAME [웹 사이트 경로][사용자가 요청한 파일] : 사용자가 요청한 디렉토리와 사용자가 요청한 파일을 조합해서 SCRIPT_FILENAME 이라는 변수에 저장하고, fastcgi_pass 정의 되어 있는 PHP-FPM 에게 변수의 내용을 전달하여 파일을 처리합니다)

3. 참고

1개의 댓글

comment-user-thumbnail
2022년 1월 8일

우연히 들어온 velog가 djeon님 velog라니! 잘배우고갑니다!

답글 달기