Nginx 1.4.x на Unix системах

В цьому розділі описано встановлення та конфігурування PHP з PHP-FPM для HTTP-сервера Nginx 1.4.x.

Якщо ви збирали Nginx з сирців, то всі бінарні та конфігураційні файли зберігаються в /usr/local/nginx. В іншому випадку, можете описати ваш процес встановлення на » Nginx Wiki.

Тут буде описуватись лише основне конфігурування сервера Nginx, щоб він міг обробляти PHP застосунки на 80-му порту. В іншому випадку рекомендуємо прочитати документацію Nginx для PHP-FPM.

Нижче на цій сторінці будуть зустрічатись маски 'x' на місці номера версії. Це зроблено з узагальнюючою метою, оскільки викладені тут рекомендації підійдуть для ряду версій. Дані маски потрібно замінити на відповідний номер вашої версії Nginx.

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

  2. Скачайте та розпакуйте сирці PHP:

    tar zxf php-x.x.x
    
  3. Зараз ви можете компонувати збірку PHP, наприклад, визначивши які розширення будуть включені. Щоб проглянути список доступних параметрів, запустіть ./configure --help. В нашому прикладі ми зробимо просту конфігурацію з підтримкою PHP-FPM та MySQL.

    cd ../php-x.x.x
    ./configure --enable-fpm --with-mysql
    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) потрібно обов'язково. Якщо групу не
    ; встановлено, буде використовуватись початкова група.
    user = www-data
    group = www-data
    

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

    /usr/local/bin/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, додайте таке:

    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 як модуль SAPI. Звичайно є набагато більше параметрів конфігурації доступних для Nginx та PHP. Більше інформації можна отримати ввівши в консолі ./configure --help в їх кореневих каталогах.