В цьому розділі описано встановлення та конфігурування PHP з PHP-FPM для HTTP-сервера Nginx 1.4.x.
Якщо ви збирали Nginx з сирців, то всі бінарні та конфігураційні файли
зберігаються в /usr/local/nginx
. В іншому випадку, можете
описати ваш процес встановлення на » Nginx Wiki.
Тут буде описуватись лише основне конфігурування сервера Nginx, щоб він міг обробляти PHP застосунки на 80-му порту. В іншому випадку рекомендуємо прочитати документацію Nginx для PHP-FPM.
Нижче на цій сторінці будуть зустрічатись маски 'x' на місці номера версії. Це зроблено з узагальнюючою метою, оскільки викладені тут рекомендації підійдуть для ряду версій. Дані маски потрібно замінити на відповідний номер вашої версії Nginx.
Рекомендуємо відвідати Nginx Wiki та прочитати » сторінку встановлення, щоб правильно встановити Nginx.
Скачайте та розпакуйте сирці PHP:
tar zxf php-x.x.x
Зараз ви можете компонувати збірку PHP, наприклад, визначивши які розширення будуть включені. Щоб проглянути список доступних параметрів, запустіть ./configure --help. В нашому прикладі ми зробимо просту конфігурацію з підтримкою PHP-FPM та MySQL.
cd ../php-x.x.x ./configure --enable-fpm --with-mysql make sudo make install
Тепер скопіюємо конфігураційні файли в їхнє коректне місцерозташування
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
Важливо, щоб ми убезпечили Nginx від проходження запитів до PHP-FPM, коли файла не існує. Таким чином ми запобігаємо від довільної ін'єкції скрипта.
Це можна зробити встановивши директиву
cgi.fix_pathinfo
в 0
всередині файла php.ini.
Відкриваємо файл php.ini:
vim /usr/local/php/php.ini
Знаходимо директиву cgi.fix_pathinfo=
та змінюємо її так:
cgi.fix_pathinfo=0
В файлі 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 припиняється, але якщо ви зацікавлені в більш детальному налаштуванні, то рекомендуємо читати відповідну документацію.
Тепер 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
Створюємо тестовий файл
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 в їх
кореневих каталогах.