Nginx — продуктивний вебсервер із відкритим вихідним кодом, який відомий стабільною роботою та невисоким споживанням ресурсів. Його можна використовувати для розміщення звичайних сайтів, PHP-проєктів та інших вебзастосунків.

У цьому матеріалі розглянемо базове встановлення зв’язки Nginx, PHP-FPM і MySQL на сервері з CentOS 6.0.

Підготовка системи

Перед початком потрібно мати доступ до сервера з правами адміністратора. Також бажано заздалегідь визначити IP-адресу сервера та його доменне ім’я.

Оскільки частина необхідних пакетів може бути відсутня у стандартних репозиторіях CentOS, спочатку підключають додаткові джерела програмного забезпечення, зокрема EPEL і Remi. Після цього система зможе встановити PHP-FPM та потрібні розширення PHP.

Після додавання репозиторіїв рекомендується оновити список пакетів і перевірити, що вони доступні для встановлення.

Встановлення MySQL

Першим кроком встановлюється сервер баз даних MySQL. Після завершення інсталяції службу потрібно додати до автоматичного запуску разом із системою та запустити вручну.

Далі варто перевірити, чи працює MySQL і чи прослуховує він відповідний мережевий порт.

Для початкового захисту бази даних запускається спеціальний сценарій налаштування безпеки. Під час його роботи потрібно:

встановити пароль для адміністратора MySQL;
видалити анонімних користувачів;
заборонити віддалений вхід під обліковим записом root;
видалити тестову базу даних;
оновити таблиці привілеїв.

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

Встановлення Nginx

Після налаштування бази даних можна встановити Nginx. Вебсервер також потрібно додати до автозапуску та запустити.

Для перевірки достатньо відкрити IP-адресу сервера у браузері. Якщо Nginx працює правильно, сервер поверне стандартну або порожню сторінку з кореневого каталогу сайту.

На цьому етапі вебсервер уже може обробляти статичні файли, але для запуску PHP-сторінок необхідно окремо встановити та налаштувати PHP-FPM.

Встановлення PHP-FPM

PHP підключається до Nginx через PHP-FPM. Разом із ним встановлюються консольний інтерпретатор PHP та додаткові модулі, необхідні для роботи з MySQL, XML, графікою, багатобайтовими рядками та іншими функціями.

Після встановлення потрібно відкрити файл конфігурації PHP і змінити параметр:

cgi.fix_pathinfo=0

Також рекомендується вказати правильний часовий пояс сервера:

date.timezone = "Europe/Kyiv"

Після збереження налаштувань PHP-FPM додається до автозапуску та запускається як окрема системна служба.

За стандартної конфігурації PHP-FPM приймає підключення на локальній адресі через порт 9000.

Налаштування Nginx для PHP

Щоб Nginx передавав PHP-файли інтерпретатору, потрібно відредагувати конфігурацію віртуального хоста.

У кореневому блоці сайту додається index.php, щоб він міг використовуватися як головний файл:

location / {
root /usr/share/nginx/html;
index index.php index.html index.htm;
}

Для обробки PHP створюється окремий блок:

location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

Особливо важливо правильно вказати SCRIPT_FILENAME. Якщо шлях буде неправильним, PHP-FPM не зможе знайти файл, який намагається відкрити користувач.

Після зміни конфігурації Nginx потрібно перезапустити.

Перевірка роботи PHP

Для перевірки у кореневому каталозі сайту можна створити файл info.php:

<?php

phpinfo();

Після цього файл відкривається через браузер. Якщо все налаштовано правильно, з’явиться сторінка з інформацією про PHP, активні модулі та спосіб взаємодії із сервером.

У параметрі Server API має бути зазначено, що PHP працює через FPM або FastCGI. Також у списку модулів варто переконатися, що доступна підтримка MySQL.

Після перевірки файл info.php необхідно видалити, оскільки він показує детальну технічну інформацію про сервер.

Використання Unix-сокета

Замість локального порту PHP-FPM можна підключити через Unix-сокет. Для цього у конфігурації PHP-FPM змінюється параметр listen, наприклад:

listen = /tmp/php5-fpm.sock

У конфігурації Nginx відповідно змінюється адреса обробника:

fastcgi_pass unix:/tmp/php5-fpm.sock;

Після внесення змін необхідно перезапустити PHP-FPM і Nginx.

У результаті сервер отримує готову зв’язку з Nginx для приймання HTTP-запитів, PHP-FPM для виконання PHP-коду та MySQL для зберігання даних сайту.