LANGUAGE/PHP

[PHP] CGI, PHP-CGI, PHP-FPM

보겸삼촌 2020. 2. 19. 10:21

1. CGI

CGI(Common Gateway Interface) : 웹 서버와 외부 프로그램을 연결해주는 표준화된 프로토콜

- 웹 서버가 처리할 수 없는 정보가 웹 서버로 요청되면, 그 정보를 처리할 수 있는 외부 프로그램을 호출하고, 외부 프로그램은 요청받은 프로그램 파일을 읽어 HTML으로 반환하는 단계를 거치고, 그 결과를 웹 서버가 받아와 웹 브라우저에게 전송하는 형태

 

2. FastCGI

FastCGI(Fast Common Gateway Interface)

CGI는 요청할 때마다 새로운 프로세스를 생성하여 구동하게 되는데 부하가 심해 느려질 수 있음.

FastCGI는 요청이 있을 때마다 프로세스를 만드는 것이 아니라, 이미 생성한 프로세스를 재활용하는 방법을 사용하기에 처리가 빠름, 프로세스를 생성하고 제거하는데 드는 부하가 줄어듦

 

3. PHP-FPM

PHP-FPM(PHP FastCGI Process Manager) : PHP를 FastCGI 모드로 동작하도록 해줌

PHP5.4 RC버전부터 PHP에 기본으로 내장되어 있음

 

  - 장점 설명 참조 [https://soohyeon317.tistory.com/entry/CGI-FastCGI-%EA%B0%9C%EB%85%90]

 

4. Nginx와 연동

 

php 프로그램을 Nginx 웹에서 사용하려면 연동이 필요함

# nginx/nginx.conf

    server {

        listen       80;

        server_name  localhost;

        ...

 

      # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

      location ~ \.php$ {

            root           ci;

            fastcgi_pass   127.0.0.1:9000;

            fastcgi_index  index.php;

            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

            include        fastcgi_params;

       }