1. 개요
A. PHP-fpm이란?
PHP-fpm에 대해 살펴보기 전에 먼저 PHP와 CGI에 대해 간단하게 알아보겠습니다.
- PHP : PHP(Hypertext Preprocessor)는 C언어를 기반으로 만들어진 서버 측에서 실행되는 서버 사이드 스크립트 언어입니다.
- PHP는 정적인 페이지만을 전달해주는 HTML을 보완하여 동적인 페이지를 표현할 수 있게 도와줍니다.
- 최근에는 HTML과 PHP를 다른 파일로 작성하는 것이 일반적입니다.
- 그리고 따로 작성된 PHP는 웹서버가 아닌 PHP-fpm을 통해 실행된다고 합니다.
-
CGI : CGI(Common Gateway Interface)는 동적인 페이지 구현을 위한 프로그램에 클라이언트의 요청을 전달해주는 프로그램입니다.
-
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에 요청을 전달하는지 알아보겠습니다.
- NGINX에 PHP파일을 요청받게되면 PHP 처리가 정의 되어 있는 LOCATION 안의 제어문을 처리합니다.
- LOCATION 제어문 안에 있는 지시어를 활용하여 PHP-fpm에게 전달할 php 파일을 지정합니다.
- 전달하기 위해 지정된 파일을 fastcgi_pass 경로의 PHP-fpm에 전달합니다.
- 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. 참고
우연히 들어온 velog가 djeon님 velog라니! 잘배우고갑니다!