Установка ПО · 6 min read · Jan 26, 2026
Установка Nginx с поддержкой PHP5 (и PHP-FPM) и MySQL на Fedora 19
Nginx (произносится как “engine x”) — это бесплатный, открытый, высокопроизводительный HTTP-сервер. Nginx известен своей стабильностью, богатым набором функций, простой конфигурацией и низким потреблением ресурсов. Этот учебник показывает, как вы можете установить Nginx на сервер Fedora 19 с поддержкой PHP5 (через PHP-FPM) и поддержкой MySQL.
Я не даю никаких гарантий, что это сработает для вас!
1 Предварительная заметка
В этом учебнике я использую имя хоста server1.example.com с IP-адресом 192.168.0.100. Эти настройки могут отличаться у вас, поэтому вам нужно заменить их, где это необходимо.
2 Установка MySQL/MariaDB 5
Сначала мы устанавливаем MySQL 5 следующим образом:
yum install mysql mysql-serverЗатем мы создаем системные ссылки для автозагрузки MySQL (чтобы MySQL запускался автоматически при загрузке системы) и запускаем сервер MySQL:
systemctl enable mysqld.service
systemctl start mysqld.serviceТеперь проверьте, что сеть включена. Выполните
netstat -tap | grep mysqlЭто должно показать что-то вроде этого:
[root@server1 ~]# netstat -tap | grep mysql
tcp 0 0 *:mysql *:* LISTEN 1116/mysqld
[root@server1 ~]#Если этого не происходит, отредактируйте /etc/my.cnf и закомментируйте опцию skip-networking:
vi /etc/my.cnf[...]
#skip-networking
[...]и перезапустите сервер MySQL:
systemctl restart mysqld.serviceЗапустите
mysql_secure_installationчтобы установить пароль для пользователя root (в противном случае любой сможет получить доступ к вашей базе данных MySQL!):
[root@server1 ~]# mysql_secure_installation
/usr/bin/mysql_secure_installation: line 379: find_mysql_client: command not found
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
Вам нужно будет ввести текущий
пароль для пользователя root, чтобы войти в MariaDB и защитить его. Если вы только что установили MariaDB и
не установили пароль root,
пароль будет пустым, поэтому просто нажмите Enter здесь.
Введите текущий пароль для root (нажмите Enter, если нет): <– ENTER
OK, успешно использован пароль, продолжаем…
Установка пароля root гарантирует, что никто не сможет войти в
пользователь root MariaDB без надлежащей авторизации.
Установить пароль root? [Y/n] <– ENTER
Новый пароль: <– yourrootsqlpassword
Повторите новый пароль: <– yourrootsqlpassword
Пароль успешно обновлен!
Перезагрузка таблиц привилегий..
… Успех!
По умолчанию установка MariaDB имеет анонимного пользователя,
что позволяет любому войти в MariaDB, не имея учетной записи пользователя. Это предназначено только для тестирования и
для упрощения установки. Вы должны удалить их перед переходом в
производственную среду.
Удалить анонимных пользователей? [Y/n] <– ENTER
… Успех!
Обычно root должен иметь возможность подключаться только с ‘localhost’. Это
гарантирует, что кто-то не сможет угадать пароль root из сети.
Запретить удаленный вход root? [Y/n] <– ENTER
… Успех!
По умолчанию MariaDB поставляется с базой данных под названием ‘test’,
к которой может получить доступ любой. Это также предназначено только для тестирования и
должно быть удалено перед переходом в
производственную среду.
Удалить тестовую базу данных и доступ к ней? [Y/n] <– ENTER
- Удаление тестовой базы данных…
… Успех! - Удаление привилегий на тестовую базу данных…
… Успех!
Перезагрузка таблиц привилегий гарантирует, что все изменения, сделанные до сих пор,
вступят в силу немедленно.
Перезагрузить таблицы привилегий сейчас? [Y/n] <– ENTER
… Успех!
Очистка…
Все готово! Если вы завершили все вышеперечисленные шаги,
ваша установка MariaDB теперь должна быть защищена.
Спасибо за использование MariaDB!
[root@server1 ~]#
3 Установка Nginx
Nginx доступен как пакет для Fedora 19, который мы можем установить следующим образом:
yum install nginxЗатем мы создаем системные ссылки для автозагрузки nginx и запускаем его:
systemctl enable nginx.service
systemctl start nginx.serviceВведите IP-адрес или имя хоста вашего веб-сервера в браузере (например, http://192.168.0.100), и вы должны увидеть страницу приветствия nginx:

4 Установка PHP5
Мы можем заставить PHP5 работать в nginx через PHP-FPM (PHP-FPM (FastCGI Process Manager) — это альтернативная реализация PHP FastCGI с некоторыми дополнительными функциями, полезными для сайтов любого размера, особенно более загруженных сайтов). В официальных репозиториях Fedora 19 есть пакет php-fpm, поэтому мы можем установить php-fpm вместе с php-cli и некоторыми модулями PHP5, такими как php-mysqlnd, которые вам нужны, если вы хотите использовать MySQL из ваших PHP-скриптов:
yum install php-fpm php-cli php-mysqlnd php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-magickwand php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidyZend OPcache — это бесплатный и открытый кэш опкодов PHP для кэширования и оптимизации промежуточного кода PHP. Он похож на другие кэши опкодов PHP, такие как APC и Xcache. Настоятельно рекомендуется установить один из них, чтобы ускорить вашу страницу PHP. Поскольку Zend OPcache теперь официально включен в PHP 5.5, мы используем его вместо других кэшей опкодов.
Zend OPcache можно установить следующим образом:
yum install php-opcacheЧтобы избежать ошибок, таких как
[13-Nov-2011 22:13:16] PHP Warning: phpinfo(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CET/1.0/no DST' instead in /usr/share/nginx/html/info.php on line 2… в /var/log/php-fpm/www-error.log, когда вы вызываете PHP-скрипт в вашем браузере, вам следует открыть /etc/php.ini и установить date.timezone:
vi /etc/php.ini[...]
[Date]
; Определяет часовой пояс по умолчанию, используемый функциями даты
; http://php.net/date.timezone
date.timezone = "Europe/Berlin"
[...]Затем создайте системные ссылки для автозагрузки php-fpm и запустите его:
systemctl enable php-fpm.service
systemctl start php-fpm.servicePHP-FPM — это демон, который запускает сервер FastCGI на порту 9000.
5 Настройка nginx
Конфигурация nginx находится в /etc/nginx/nginx.conf, который мы сейчас откроем:
vi /etc/nginx/nginx.confКонфигурация проста для понимания (вы можете узнать больше об этом здесь: http://wiki.codemongers.com/NginxFullExample и здесь: http://wiki.codemongers.com/NginxFullExample2)
Сначала (это необязательно) вы можете увеличить количество рабочих процессов и установить keepalive_timeout на разумное значение:
[...]
worker_processes 4;
[...]
keepalive_timeout 2;
[...]Виртуальные хосты определяются в контейнерах server {}.
По умолчанию vhost определяется дальше в файле /etc/nginx/nginx.conf - давайте изменим его следующим образом:
vi /etc/nginx/nginx.conf[...]
server {
listen 80;
server_name _;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.php index.html index.htm;
}
# перенаправить страницы ошибок сервера на статическую страницу /40x.html
#
error_page 404 /404.html;
location = /40x.html {
root /usr/share/nginx/html;
}
# перенаправить страницы ошибок сервера на статическую страницу /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# проксировать PHP-скрипты на Apache, слушающий на 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# передать PHP-скрипты на сервер FastCGI, слушающий на 127.0.0.1:9000
#
location ~ \.php$ {
root /usr/share/nginx/html;
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# запретить доступ к файлам .htaccess, если корневая директория Apache
# совпадает с корневой директорией nginx
#
location ~ /\.ht {
deny all;
}
}
[...]servername ; делает это стандартным vhost по умолчанию (конечно, вы также можете указать имя хоста, например www.example.com).
В части location / я добавил index.php в строку индекса. root /usr/share/nginx/html; означает, что корневая директория документа — это каталог /usr/share/nginx/html.
Важная часть для PHP — это блок location ~ .php$ {}. Раскомментируйте его, чтобы включить. Измените строку root на корневую директорию веб-сайта (например, root /usr/share/nginx/html;). Пожалуйста, убедитесь, что вы изменили строку fastcgi_param на fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;, потому что в противном случае интерпретатор PHP не сможет найти PHP-скрипт, который вы вызываете в своем браузере.
Обратите внимание, что я добавил строку try_files $uri =404; для предотвращения нулевых уязвимостей (см. http://wiki.nginx.org/Pitfalls#Passing_Uncontrolled_Requests_to_PHP и http://forum.nginx.org/read.php?2,88845,page=3). В качестве альтернативы, если вы не хотите использовать строку try_files $uri =404;, вы можете установить cgi.fix_pathinfo = 0; в /etc/php5/fpm/php.ini (не забудьте перезагрузить PHP-FPM после этого).
Теперь сохраните файл и перезагрузите nginx:
systemctl reload nginx.serviceТеперь создайте следующий PHP-файл в корневой директории документа /usr/share/nginx/html…
vi /usr/share/nginx/html/info.phpТеперь мы вызываем этот файл в браузере (например, http://192.168.0.100/info.php):

Как видите, PHP5 работает, и он работает через FPM/FastCGI, как показано в строке Server API. Если вы прокрутите дальше вниз, вы увидите все модули, которые уже включены в PHP5, включая модуль MySQL:

6 Ссылки
- nginx: http://nginx.org/
- Вики nginx: http://wiki.nginx.org/
- PHP: http://www.php.net/
- PHP-FPM: http://php-fpm.org/
- MySQL: http://www.mysql.com/
- Fedora: http://fedoraproject.org/
Get new posts in your inbox
No spam. Unsubscribe anytime.