Установка 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.conf.default /usr/local/etc/php-fpm.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.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://localhsot. phpinfo() теперь должно отображаться.

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

add a note add a note

User Contributed Notes 4 notes

up
12
Lenny
1 year ago
Building from source is not easy if something is a bit different, and I had a hard time with some directory and configuration options. I was floundering around the web until I found this site that translated from Chinese. No one else had the solution.  I couldn't get php fpm to start until I changed the directory (Item 2.ERROR: Unable to globalize). I had other issues listed but I was able to solve them. Please don't delete this, it is very useful info.

The original site  (it is in Chinese, not my site, but I want to give credit):

(there is some more there, you can goto the site)

blog.dream1987.top/?paged=2

Installation problems:

1. configure: error:. Xml2-config not found Please check your libxml2 installation.

solution:

apt-get install libxml2-dev



2.Warning: Declaration of PEAR_Installer :: download () should be compatible with & PEAR_Downloader :: download ($ params) in phar: ///root/php-7.0.0alpha1/pear/install-pear-nozlib.phar/PEAR /Installer.php on line 43

Warning: Declaration of PEAR_PackageFile_Parser_v2 :: parse () should be compatible with PEAR_XMLParser :: parse ($ data) in phar: ///root/php-7.0.0alpha1/pear/install-pear-nozlib.phar/PEAR/PackageFile/ Parser / v2.php on line 113
[PEAR] Archive_Tar - already installed: 1.3.13
[PEAR] Console_Getopt - already installed: 1.3.1
[PEAR] Structures_Graph- already installed: 1.0.4

Warning: Declaration of PEAR_Task_Replace :: init () should be compatible with PEAR_Task_Common :: init ($ xml, $ fileAttributes, $ lastVersion) in phar: ///root/php-7.0.0alpha1/pear/install-pear-nozlib. phar / PEAR / Task / Replace.php on line 31
[PEAR] XML_Util - already installed: 1.2.3

Warning: Declaration of PEAR_Task_Windowseol :: init () should be compatible with PEAR_Task_Common :: init ($ xml, $ fileAttributes, $ lastVersion) in phar: ///root/php-7.0.0alpha1/pear/install-pear-nozlib. phar / PEAR / Task / Windowseol.php on line 76

Warning: Declaration of PEAR_Task_Unixeol :: init () should be compatible with PEAR_Task_Common :: init ($ xml, $ fileAttributes, $ lastVersion) in phar: ///root/php-7.0.0alpha1/pear/install-pear-nozlib. phar / PEAR / Task / Unixeol.php on line 76
[PEAR] PEAR - already installed: 1.9.5

solution:

Workaround not found (http://pear.php.net/bugs/bug.php?id=20554)

3. Start php-fpm

1.ERROR: failed to open configuration file '/usr/local/etc/php-fpm.conf': No such file or directory (2)
ERROR: failed to load configuration file '/usr/local/etc/php-fpm.conf'
ERROR: FPM initialization failed

solution:

Php-fpm.conf copy files from the source file to that location.

cp /root/php-7.0.0alpha1/sapi/fpm/php-fpm.conf /usr/local/etc/php-fpm.conf

2.ERROR: Unable to globalize '/usr/local/NONE/etc/php-fpm.d/*.conf' (ret = 2) from /usr/local/etc/php-fpm.conf at line 125.
ERROR: failed to load configuration file '/usr/local/etc/php-fpm.conf'
ERROR: FPM initialization failed

solution:

Edit /usr/local/etc/php-fpm.conf document introduced * .conf part, change to the correct path include = / usr / local / etc / php-fpm.d / *. Conf

If there is no /usr/local/etc/php-fpm.d directory, create the directory.

3.WARNING: Nothing matches the include pattern '/usr/local/etc/php-fpm.d/*.conf' from /usr/local/etc/php-fpm.conf at line 125.
ERROR:. No pool defined at least one pool section must be specified in config file
ERROR: failed to post process the configuration
ERROR: FPM initialization failed

solution:

cp www.conf.default www.conf

4.ERROR: [pool www] can not get gid for group 'nobody'
ERROR: FPM initialization failed

solution:

Www.conf open files, user and group users into nginx default settings, usually the default is www-data.
up
3
Akash Kumar Sharma
1 year ago
If you get "File not found" error then add "root ROOT_DIR_LOCATION" directive to PHP location block i.e. "location ~* \.php$ { }" , where ROOT_DIR_LOCATION is root directory like "/usr/share/nginx/html" .
up
1
nguyentienlong88 at gmail dot com
2 years ago
at step 3, after command "sudo make install"
if there is problem with pear.php.net (https). Need to change this line (from https to http) in Makefile
PEAR_INSTALLER_URL = http://pear.php.net/install-pear-nozlib.phar
up
1
nguyentienlong88 at gmail dot com
2 years ago
at step 3, if there is no configure script yet, you need to rebuiding configure script using this command:
  
./buildconf --force
To Top