Установка Nginx 1.4.x на систему Unix

Данная документация описывает процесс установки и настройки PHP с PHP-FPM для Nginx 1.4.x HTTP сервера.

Данное руководство подразумевает, что вы собрали Nginx из исходников, следовательно, все бинарные файлы и файлы конфигурации располагаются в /usr/local/nginx. Если нет, и вы получили Nginx другим способом, тогда, пожалуйста, обратитесь к » Nginx Wiki, чтобы перевести данное руководство для вашей установки.

Данное руководство охватывает азы настройки Nginx сервера, для обработки PHP приложений и отображения их на порту 80. Рекомендуется изучить документацию Nginx и PHP-FPM, если вы хотите оптимизировать вашу установку за рамками данной документации.

Пожалуйста, обратите внимание, что во всей данной документации номера версий были заменены на 'x', чтобы данная документация оставалась корректной в будущем. Пожалуйста, замените 'x' на необходимый вам номер версии.

  1. Рекомендуется посетить » страницу установки на Nginx Wiki, для информации о получении и установке Nginx.

  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, если файл не существует, что помогает избежать атаки инъекции скрипта.

    Мы может исправить это путем установки директивы cgi.fix_pathinfo равной 0 в нашем php.ini файле.

    Редактирование php.ini:

    vim /usr/local/php/php.ini
    

    Найдите опцию cgi.fix_pathinfo= и измените ее следующим образом:

    cgi.fix_pathinfo=0
    
  6. php-fpm.conf должен быть модифицирован, чтобы точно определить, что php-fpm должен работать под пользователем www-data и группой www-data до того, как мы запустим сервис:

    vim /usr/local/etc/php-fpm.d/www.conf
    

    Найдите и измените следующее:

    ; Unix user/group of processes
    ; Замечание: Пользователь является обязательным. Если группа не установлена, 
    ; то будет использована стандартная группа пользователя.
    user = www-data
    group = www-data
    

    Теперь можно запускать сервис php-fpm:

    /usr/local/bin/php-fpm
    

    Более в этом рукомодстве мы не будет касаться настройки php-fpm. Если вам необходимо произвести дополнительные настройки - обратитесь к документации по php-fpm.

  7. Теперь Nginx должен быть настроен на поддержку выполнения PHP:

    vim /usr/local/nginx/conf/nginx.conf
    

    Измените блок "location", заданный по умолчанию, так, чтобы можно было обрабатывать .php файлы:

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

    Следующий шаг - убедиться, что .php файлы отправляются в бэкенд PHP-FPM. Введите следующее:

    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().

Следуя вышеуказанным шагам, вы получите рабочий Nginx сервер с поддержкой PHP как модуля FPM SAPI. Конечно, доступно большое число опций настроек для Nginx и PHP. Для более подробной информации наберите ./configure --help в соответствующем дереве исходных кодов.