Unix 시스템의 Nginx 1.4.x

이 문서에서는 Nginx 1.4.x HTTP 서버용 PHP-FPM으로 PHP를 설치하고 구성하는 방법을 다룹니다.

이 가이드에서는 소스에서 Nginx를 빌드했으며 따라서 모든 바이너리와 구성 파일이 /usr/local/nginx에 있다고 가정합니다. 그렇지 않고 다른 수단을 통해 Nginx를 얻은 경우 이 설명서를 설정으로 번역하려면 » Nginx Wiki를 참조하세요.

이 가이드는 PHP 애플리케이션을 처리하고 포트 80에서 서비스하도록 Nginx 서버를 구성하는 기본 사항을 다룰 것입니다. 이 문서의 범위를 넘어서 설정을 최적화하려면 Nginx 및 PHP-FPM 문서를 공부하는 것이 좋습니다.

이 문서 전체에서 버전 번호는 'x'로 대체되어 이 문서가 향후에도 올바르게 유지될 수 있도록 하였으므로 필요에 따라 해당 버전 번호로 교체하십시오.

  1. 시스템에 Nginx를 다운로드하여 설치하려면 Nginx Wiki » 설치 페이지를 방문하는 것이 좋습니다.
  2. PHP 소스를 구하고 압축을 풉니다.
    tar zxf php-x.x.x
  3. PHP를 구성하고 빌드합니다. 여기에서 활성화할 확장과 같은 다양한 옵션으로 PHP를 사용자 정의할 수 있습니다. 사용 가능한 옵션 목록을 보려면 ./configure --help를 실행하십시오. 이 예에서는 PHP-FPM 및 MySQLi 지원으로 간단한 구성을 수행합니다.
    cd ../php-x.x.x
    ./configure --enable-fpm --with-mysqli
    make
    sudo make install
                        
  4. 구성 파일을 가져와 올바른 위치로 이동
    cp php.ini-development /usr/local/php/php.ini
    cp /usr/local/etc/php-fpm.d/www.conf.default /usr/local/etc/php-fpm.d/www.conf
    cp sapi/fpm/php-fpm /usr/local/bin
                        
  5. 파일이 존재하지 않는 경우 Nginx가 PHP-FPM 백엔드로 요청을 전달하지 않도록 하여 임의의 스크립트 삽입을 방지하는 것이 중요합니다.

    php.ini 파일에서 cgi.fix_pathinfo 지시문을 0으로 설정하여 이 문제를 해결할 수 있습니다.

    php.ini 불러오기:

    vim /usr/local/php/php.ini

    cgi.fix_pathinfo=를 찾아 다음과 같이 수정합니다.

    cgi.fix_pathinfo=0
  6. 서비스를 시작하기 전에 php-fpm이 www-data 사용자 및 www-data 그룹으로 실행되어야 함을 지정하도록 php-fpm.conf를 수정해야 합니다.
    vim /usr/local/etc/php-fpm.d/www.conf

    다음을 찾아 수정합니다.

    ; Unix user/group of processes
    ; Note: The user is mandatory. If the group is not set, the default user's group
    ;       will be used.
    user = www-data
    group = www-data
                        

    이제 php-fpm 서비스를 시작할 수 있습니다.

    /usr/local/bin/php-fpm

    이 가이드는 php-fpm을 더 이상 구성하지 않을 것입니다. php-fpm을 추가로 구성하는 데 관심이 있다면 문서를 참조하십시오.

  7. 이제 PHP 애플리케이션 처리를 지원하도록 Nginx를 구성해야 합니다.
    vim /usr/local/nginx/conf/nginx.conf

    기본 위치 블록을 수정하여 .php 파일을 제공해야 함을 인식합니다.

    location / {
        root   html;
        index  index.php index.html index.htm;
    }
                        

    다음 단계는 .php 파일이 PHP-FPM 백엔드로 전달되었는지 확인하는 것입니다. 주석 처리된 기본 PHP 위치 블록 아래에 다음을 입력합니다.

    location ~* \.php$ {
        fastcgi_index   index.php;
        fastcgi_pass    127.0.0.1:9000;
        include         fastcgi_params;
        fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
        fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
    }
                        

    Nginx를 다시 시작하십시오.

    sudo /usr/local/nginx/sbin/nginx -s stop
    sudo /usr/local/nginx/sbin/nginx
                        
  8. 테스트 파일 만들기
    rm /usr/local/nginx/html/index.html
    echo "<?php phpinfo(); ?>" >> /usr/local/nginx/html/index.php
                        

    이제 http://localhost로 이동합니다. 이제 phpinfo()가 표시되어야 합니다.

    위의 단계를 따르면 PHP를 FPM SAPI 모듈로 지원하는 실행 중인 Nginx 웹 서버를 갖게 됩니다. 물론 Nginx 및 PHP에 사용할 수 있는 더 많은 구성 옵션이 있습니다. 자세한 내용을 보려면 해당 소스 트리에서 ./configure --help를 입력하십시오.