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

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

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

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

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

  1. Рекомендовано зайти » на страницу установки Nginx Wiki, чтобы получить и установить HTTP-сервер 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» по умолчанию так, чтобы HTTP-сервер знал, что он должен обслуживать файлы .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, чтобы получить больше информации.