Nginx — швидкий і невимогливий до ресурсів вебсервер, який підходить для розміщення сайтів, статичних файлів і PHP-проєктів. У цій інструкції розглянемо встановлення Nginx разом із PHP 5 та MySQL 5 на сервері під керуванням CentOS 5.6.

Для прикладу використовується сервер із доменним ім’ям `server1.example.com` та локальною IP-адресою `192.168.2.222`. У власній системі ці значення потрібно замінити на актуальні.

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

Спочатку встановлюється сервер баз даних MySQL:

```bash
yum install mysql mysql-server
```

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

```bash
chkconfig --levels 235 mysqld on
/etc/init.d/mysqld start
```

Перевірити, чи MySQL приймає підключення, можна командою:

```bash
netstat -tap | grep mysql
```

Якщо служба не прослуховує мережевий порт, потрібно відкрити файл конфігурації:

```bash
nano /etc/my.cnf
```

У ньому необхідно знайти параметр `skip-networking` і закоментувати його:

```ini
#skip-networking
```

Після зміни налаштувань MySQL перезапускається:

```bash
/etc/init.d/mysqld restart
```

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

```bash
mysql_secure_installation
```

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

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

У стандартному репозиторії CentOS 5.6 потрібний пакет Nginx був відсутній, тому в оригінальній інструкції використовується сторонній тестовий репозиторій.

Спочатку завантажується його конфігурація:

```bash
cd /etc/yum.repos.d/
wget http://centos.karan.org/kbsingh-CentOS-Extras.repo
```

Після цього відкривається файл репозиторію:

```bash
nano /etc/yum.repos.d/kbsingh-CentOS-Extras.repo
```

У секції `KBS-CentOS-Testing` потрібно активувати репозиторій, встановивши:

```ini
gpgcheck=0
enabled=1
```

Після цього можна встановити Nginx:

```bash
yum install nginx
```

Вебсервер додається до автозапуску та запускається:

```bash
chkconfig --levels 235 nginx on
/etc/init.d/nginx start
```

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

## Встановлення PHP 5

У цій конфігурації PHP підключається до Nginx через FastCGI. Для запуску процесів використовується утиліта `spawn-fcgi`, яка встановлюється разом із пакетом Lighttpd FastCGI.

Встановимо PHP та основні модулі:

```bash
yum install lighttpd-fastcgi php-cli php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-snmp php-soap php-tidy
```

Далі відкривається конфігурація PHP:

```bash
nano /etc/php.ini
```

У кінці файлу додається параметр:

```ini
cgi.fix_pathinfo = 1
```

Процес PHP FastCGI запускається на локальній адресі через порт `9000` від користувача Nginx:

```bash
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u nginx -g nginx -f /usr/bin/php-cgi -P /var/run/fastcgi-php.pid
```

Щоб не запускати команду вручну після кожного перезавантаження, її можна додати до файлу:

```bash
nano /etc/rc.local
```

## Налаштування обробки PHP у Nginx

Основний конфігураційний файл Nginx відкривається командою:

```bash
nano /etc/nginx/nginx.conf
```

У блоці віртуального хоста потрібно додати `index.php` до списку головних файлів:

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

Для передавання PHP-файлів процесу FastCGI додається окремий блок:

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

Особливу увагу потрібно звернути на параметр `SCRIPT_FILENAME`. У ньому має бути вказаний правильний шлях до кореневого каталогу сайту, інакше інтерпретатор PHP не знайде потрібний файл.

Після збереження конфігурації Nginx перезапускається:

```bash
/etc/init.d/nginx restart
```

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

У кореневому каталозі вебсервера створюється тестовий файл:

```bash
nano /usr/share/nginx/html/info.php
```

Його вміст:

```php
<?php

phpinfo();
```

Після цього потрібно відкрити у браузері:

```text
http://192.168.2.222/info.php
```

Якщо налаштування виконано правильно, браузер покаже інформаційну сторінку PHP. У рядку Server API буде зазначена робота через FastCGI, а нижче можна перевірити наявність модуля MySQL та інших встановлених розширень.

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

CentOS 5.6, PHP 5 і використані в інструкції репозиторії давно застаріли. Матеріал підходить для ознайомлення або обслуговування старих систем, але новий сервер краще розгортати на актуальній версії Linux, PHP-FPM, Nginx і MariaDB.