Как установить Nginx с PHP5 (PHP-FPM) и поддержкой MySQL на CentOS 6.5
Установка Nginx с PHP5 через PHP-FPM и MySQL на CentOS 6.5: подключите репозитории EPEL и Remi, включите приоритеты для yum, установите MySQL и запустите настройку безопасности, затем установите и настройте php-fpm и nginx. Проверяйте работу через phpinfo() и подключение к MySQL. В конце — чеклист и советы по отладке.
Введение
Nginx (произносится «энджин-икс») — свободный высокопроизводительный HTTP-сервер с низким потреблением ресурсов. В этом руководстве показано, как установить Nginx на сервер CentOS 6.5 с поддержкой PHP5 через PHP-FPM и с сервером MySQL. Приведённые команды выполняются под root, используйте sudo при необходимости.
Важно: я не даю гарантии, что этот набор инструкций сработает в вашей среде — адаптируйте под ваши настройки.
1. Предварительная заметка
В примерах используется hostname server1.example.com и IP 192.168.0.100. Замените их на свои значения при необходимости.
2. Включение дополнительных репозиториев
php-fpm недоступен в официальных репозиториях CentOS — он поставляется из репозитория Remi, который зависит от EPEL. Включим оба:
rpm --import https://fedoraproject.org/static/0608B895.txt
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpmrpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpmУстановите дополнение для управления приоритетами:
yum install yum-prioritiesОтредактируйте /etc/yum.repos.d/epel.repo и добавьте строку priority=10 в секцию [epel]:
| [epel] name=Extra Packages for Enterprise Linux 6 - $basearch #baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch failovermethod=priority enabled=1 priority=10 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 [...] |
Затем аналогично отредактируйте /etc/yum.repos.d/remi.repo: включите секцию [remi] и установите enabled=1 и priority=10:
vi /etc/yum.repos.d/remi.repo| [remi] name=Les RPM de remi pour Enterprise Linux $releasever - $basearch #baseurl=http://rpms.famillecollet.com/enterprise/$releasever/remi/$basearch/ mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirror enabled=1 priority=10 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi failovermethod=priority |
Примечание: сохраняйте оригинальные строки, если вы не уверены, не удаляйте gpgkey и mirrorlist.
3. Установка MySQL 5
Сначала установим MySQL 5:
yum install mysql mysql-serverСоздайте автозапуск для MySQL и запустите службу:
chkconfig --levels 235 mysqld on
service mysqld startПроверьте, что сетевые слушатели включены:
netstat -tap | grep mysqlОжидаемый вывод примерно такой:
[root@server1 ~]# netstat -tap | grep mysql
tcp 0 0 *:mysql *:* LISTEN 1279/mysqld
[root@server1 ~]# Далее запустите стандартную утилиту безопасной настройки:
mysql_secure_installationПример интерактивной сессии (переведённая подсказка):
[root@server1 ~]# mysql_secure_installation
ПРИМЕЧАНИЕ: РЕКОМЕНДУЕТСЯ ВЫПОЛНЯТЬ ВСЕ ЧАСТИ ЭТОГО СКРИПТА ДЛЯ ВСЕХ MySQL
СЕРВЕРОВ В ПРОИЗВОДСТВЕ! ПОЖАЛУЙСТА, ВНИМАТЕЛЬНО ЧИТАЙТЕ КАЖДЫЙ ШАГ!
Для входа в MySQL для его защиты потребуется текущий пароль root.
Если MySQL только установлен и пароль root не задан, оставьте поле пустым и нажмите Enter.
Enter current password for root (enter for none): <-- НАЖМИТЕ ENTER
OK, successfully used password, moving on...
Set root password? [Y/n] <-- НАЖМИТЕ ENTER
New password: <-- введите_пароль_root_sql
Re-enter new password: <-- повторите_пароль_root_sql
Password updated successfully!
Reloading privilege tables..
... Success!
Remove anonymous users? [Y/n] <-- НАЖМИТЕ ENTER
... Success!
Disallow root login remotely? [Y/n] <-- НАЖМИТЕ ENTER
... Success!
Remove test database and access to it? [Y/n] <-- НАЖМИТЕ ENTER
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reload privilege tables now? [Y/n] <-- НАЖМИТЕ ENTER
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MySQL
installation should now be secure.
Thanks for using MySQL!
[root@server1 ~]#Важно: используйте надёжный пароль для root и храните его в безопасном месте.
4. Установка PHP5 и PHP-FPM (коротко)
После включения репозиториев можно установить php-fpm и пакеты PHP (включая модули для работы с MySQL):
yum --enablerepo=remi install php php-fpm php-mysql php-cli php-commonЗатем включите и запустите php-fpm:
chkconfig php-fpm on
service php-fpm startПроверьте работу php-fpm — он должен слушать unix-сокет или TCP-порт (в зависимости от конфигурации /etc/php-fpm.d/www.conf):
netstat -pl | grep php-fpmЕсли php-fpm использует unix-сокет (например /var/run/php-fpm/php-fpm.sock), убедитесь, что права доступа и владелец совпадают с пользователем, под которым работает Nginx.
5. Установка и базовая настройка Nginx (коротко)
Установите nginx:
yum install nginxВключите автозапуск и запустите nginx:
chkconfig nginx on
service nginx startПример конфигурации virtual host для Nginx с поддержкой php-fpm (основная идея):
- слушать 80 порт
- корень сайта /usr/share/nginx/html или /var/www/html
- перенаправлять запросы .php на php-fpm через fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; или 127.0.0.1:9000
Проверьте синтаксис конфигурации nginx:
nginx -t6. Проверка результата
- Создайте тестовый файл /usr/share/nginx/html/info.php с содержимым:
Откройте в браузере http://ваш_сервер/info.php — вы должны увидеть страницу phpinfo с информацией о PHP и соединении с MySQL.
Попробуйте подключиться к MySQL локально через mysql CLI и создать тестовую БД/пользователя.
Когда этот подход не подходит
- Если вы используете современные приложения, рекомендую установить PHP 7+ вместо PHP5 — PHP5 больше не поддерживается.
- Если нужна максимальная совместимость с пакетами CentOS 6, рассмотрите MariaDB как замену MySQL.
- В окружениях с высокой доступностью и контейнерами стоит использовать отдельные контейнеры/сервисы для MySQL, PHP-FPM и Nginx.
Альтернативные подходы
- Использовать MariaDB (совместимая замена MySQL) из официального репозитория MariaDB.
- Устанавливать PHP через сборку из исходников или через SCL (Software Collections) для более новой версии PHP на CentOS 6.
- Разделить роли: Nginx как обратный прокси, Apache с PHP-FPM как backend (редко нужно).
Схема принятия решения (простая)
flowchart TD
A[Нужен веб-сервер + PHP] --> B{Нужен PHP5?}
B -- Да --> C[Следовать этому руководству]
B -- Нет --> D{Нужен PHP7/8?}
D -- Да --> E[Установить PHP7 из Remi или SCL]
D -- Нет --> F[Рассмотреть контейнеры / managed services]Роли и чеклист (кто что проверяет)
Администратор системы:
- Проверил включение репозиториев EPEL и Remi.
- Установил и запустил mysql, nginx, php-fpm.
- Настроил автозапуск через chkconfig.
Девелопер/QA:
- Разместил info.php и проверил phpinfo.
- Выполнил подключение к MySQL из приложения.
Инженер по безопасности:
- Выполнил mysql_secure_installation и проверил правила брандмауэра.
- Убедился, что root MySQL доступен только с localhost при необходимости.
Критерии приёмки
- Nginx запущен и успешно отвечает на HTTP-запросы.
- PHP-файлы обрабатываются через php-fpm (phpinfo показывает FPM и сокет/порт).
- MySQL принимает локальные соединения и защищён базовыми настройками (пароль root установлен, тестовые анонимные пользователи удалены).
Быстрая отладка (troubleshooting)
- nginx не стартует: проверьте nginx -t на наличие синтаксических ошибок.
- 502 Bad Gateway при обращении к PHP: проверьте, что php-fpm запущен и путь в fastcgi_pass соответствует реальному сокету/порту.
- Невозможно подключиться к MySQL: проверьте service mysqld status и netstat -tap.
Безопасность и рекомендации
- Обновите систему и пакеты безопасности: yum update.
- Для продакшена используйте более новые версии ОС и PHP.
- Ограничьте доступ к административным портам через брандмауэр.
Полезные команды-ссылки (шпаргалка)
- Проверить сетевые слушатели: netstat -tap
- Проверить процессы: ps aux | grep php-fpm
- Проверить конфигурацию nginx: nginx -t
- Перезапустить сервис: service nginx restart
Факто-бокс
- Целевая ОС: CentOS 6.5
- Веб-сервер: Nginx (стандартная сборка из yum)
- PHP: PHP5 (через Remi)
- БД: MySQL 5 (стандартные пакеты)
Краткий глоссарий
- PHP-FPM — FastCGI Process Manager для PHP: отвечает за обработку PHP запросов отдельными рабочими процессами.
- EPEL/Remi — сторонние репозитории RPM, содержащие дополнительные пакеты для CentOS.
Итог
Следуя этому руководству, вы получите базовую связку Nginx + PHP5 (через PHP-FPM) + MySQL на CentOS 6.5. Для продакшена рекомендуются дополнительные меры безопасности, регулярные обновления и рассмотрение использования современных версий PHP и СУБД.
Важно: оцените необходимость PHP5 — для новых проектов лучше сразу планировать миграцию на PHP7/8.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента