Установка серверов · 7 min read · Feb 03, 2026
Установка Nginx с PHP и MariaDB (в качестве замены MySQL) - LEMP - на Ubuntu 15.10 (Wiley Werewolf)
Nginx (произносится как “engine x”) - это бесплатный, открытый, высокопроизводительный HTTP-сервер. Nginx известен своей стабильностью, богатым набором функций, простой конфигурацией и низким потреблением ресурсов. В этом руководстве показано, как установить Nginx на сервер Ubuntu 15.10 с поддержкой PHP (через PHP-FPM) и MariaDB (в качестве замены MySQL). Термин LEMP расшифровывается как: Linux + Nginx + MySQL + PHP.
1 Предварительная заметка
В этом руководстве я буду использовать имя хоста server1.example.com с IP-адресом 192.168.1.100. Эти настройки могут отличаться у вас, поэтому вам нужно заменить их там, где это необходимо.
2 Установка MariaDB
Я установлю MariaDB вместо MySQL, MariaDB - это форк MySQL, поддерживаемый оригинальным основателем MySQL Монти Уидениусом, который имеет некоторые улучшения скорости и функциональности по сравнению с MySQL. Чтобы установить MariaDB, выполните:
sudo apt-get -y install mariadb-server mariadb-clientВ данный момент у MariaDB нет установленного пароля для пользователя root. Запустите команду mysql_secure_installation, чтобы настроить пароль и удалить тестовую базу данных.
sudo mysql_secure_installationВам будут заданы следующие вопросы:
Введите текущий пароль для root (нажмите Enter, если нет): <-- нажмите Enter
Установить пароль root? [Y/n] <-- y
Новый пароль: <-- Введите новый пароль root для MariaDB
Повторите новый пароль: <-- Повторите пароль
Удалить анонимных пользователей? [Y/n] <-- y
Запретить удаленный вход root? [Y/n] <-- y
Перезагрузить таблицы привилегий сейчас? [Y/n] <-- y3 Установка Nginx
Nginx доступен как пакет для Ubuntu 15.10. Возможно, что веб-сервер apache установлен на вашем сервере, и это может вызвать конфликт. Проверьте, что apache не работает:
ps aux | grep apache2Если эта команда не возвращает никаких результатов, продолжайте с установкой Nginx.
Удалите apache в случае, если вышеуказанная команда показывает какие-либо процессы apache с помощью следующих команд:
sudo systemctl stop apache2.service
sudo systemctl disable apache2.service
sudo apt-get remove apache2Теперь мы можем установить nginx.
sudo apt-get install nginxЗапустите Nginx после этого:
sudo systemctl start nginx.service
sudo systemctl enable nginx.serviceВведите IP-адрес или имя хоста вашего веб-сервера в браузере (например, http://192.168.1.100), и вы должны увидеть следующую страницу:

Почему на этой странице отображается “Apache2” вместо Nginx? Текст страницы не отражает фактически работающий веб-сервер, вышеуказанная страница - это просто страница по умолчанию на Ubuntu в корне документа /var/www/html/, которая используется как Apache, так и Nginx. Чтобы убедиться, что Nginx действительно обслуживает эту страницу, вы можете либо посмотреть HTTP-заголовки в консоли анализа сети Firefox:

Или вы можете проверить в оболочке, что nginx работает:
ps aux | grep nginxРезультат должен показать процессы nginx следующим образом:

4 Установка PHP5
Мы можем заставить PHP5 работать в Nginx через PHP-FPM. PHP-FPM (FastCGI Process Manager) - это альтернативная реализация PHP FastCGI с некоторыми дополнительными функциями, полезными для сайтов любого размера, особенно более загруженных сайтов, которую мы устанавливаем следующим образом:
sudo apt-get install php5-fpmPHP-FPM - это демон-процесс (с init-скриптом php5-fpm), который запускает сервер FastCGI на сокете /var/run/php5-fpm.sock.
5 Конфигурация Nginx
Конфигурация Nginx находится в файле /etc/nginx/nginx.conf, который мы сейчас откроем в редакторе nano:
sudo nano /etc/nginx/nginx.confКонфигурация проста для понимания (вы можете узнать больше об этом здесь: http://wiki.nginx.org/NginxFullExample и здесь: http://wiki.nginx.org/NginxFullExample2)
Сначала (это необязательно) установите keepalive_timeout на разумное значение:
[...]
keepalive_timeout 2;
[...]Виртуальные хосты определяются в контейнерах server {}. Дефолтный vhost определен в файле /etc/nginx/sites-available/default - давайте изменим его следующим образом:
sudo nano /etc/nginx/sites-available/default##
# Вам следует ознакомиться со следующими URL-адресами, чтобы получить четкое представление
# о конфигурационных файлах Nginx, чтобы полностью раскрыть мощь Nginx.
# http://wiki.nginx.org/Pitfalls
# http://wiki.nginx.org/QuickStart
# http://wiki.nginx.org/Configuration
#
# В общем, вы захотите переместить этот файл куда-нибудь и начать с чистого
# файла, но держите его под рукой для справки. Или просто отключите в sites-enabled.
#
# Пожалуйста, смотрите /usr/share/doc/nginx-doc/examples/ для более детальных примеров.
##
# Конфигурация сервера по умолчанию
#
server {
listen 80 default_server;
listen [::]:80 default_server;
# Конфигурация SSL
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Примечание: вы должны отключить gzip для SSL-трафика.
# См.: https://bugs.debian.org/773332
#
# Ознакомьтесь с ssl_ciphers, чтобы обеспечить безопасную конфигурацию.
# См.: https://bugs.debian.org/765782
#
# Самоподписанные сертификаты, сгенерированные пакетом ssl-cert
# Не используйте их на производственном сервере!
#
# include snippets/snakeoil.conf;
root /var/www/html;
# Добавьте index.php в список, если вы используете PHP
index index.php index.html index.htm index.nginx-debian.html;
server_name _;
location / {
# Сначала попытайтесь обслужить запрос как файл, затем
# как каталог, затем вернитесь к отображению 404.
try_files $uri $uri/ =404;
}
# передать PHP-скрипты серверу FastCGI, слушающему на 127.0.0.1:9000
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# С php5-cgi отдельно:
# fastcgi_pass 127.0.0.1:9000;
# С php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
# запретить доступ к файлам .htaccess, если корень документа Apache
# совпадает с корнем nginx
#
#location ~ /\.ht {
# deny all;
#}
}
# Конфигурация виртуального хоста для example.com
#
# Вы можете переместить это в другой файл в sites-available/ и создать символическую ссылку
# на sites-enabled/, чтобы включить его.
#
#server {
# listen 80;
# listen [::]:80;
#
# server_name example.com;
#
# root /var/www/example.com;
# index index.html;
#
# location / {
# try_files $uri $uri/ =404;
# }
#}servername ; делает это виртуальным хостом по умолчанию (конечно, вы также можете указать имя хоста здесь, например www.example.com).
Я добавил index.php в строку индекса. root /usr/share/nginx/html; означает, что корень документа - это каталог /usr/share/nginx/html.
Важная часть для PHP - это блок location ~ .php$ {}. Раскомментируйте его, чтобы включить. Пожалуйста, обратите внимание, что важно включить строку “include snippets/fastcgi-php.conf;” внутри блока PHP location, чтобы предотвратить нулевые уязвимости (см. http://wiki.nginx.org/Pitfalls#Passing_Uncontrolled_Requests_to_PHP и http://forum.nginx.org/read.php?2,88845,page=3).
Теперь сохраните файл и перезагрузите nginx:
sudo service nginx reloadЗатем откройте /etc/php5/fpm/php.ini…
sudo nano /etc/php5/fpm/php.ini… и установите cgi.fix_pathinfo=0:
[...]
; cgi.fix_pathinfo предоставляет *реальную* поддержку PATH_INFO/PATH_TRANSLATED для CGI. PHP
; предыдущее поведение заключалось в том, чтобы устанавливать PATH_TRANSLATED в SCRIPT_FILENAME и не понимать,
; что такое PATH_INFO. Для получения дополнительной информации о PATH_INFO смотрите спецификации cgi. Установка
; этого в 1 приведет к тому, что PHP CGI исправит свои пути в соответствии со спецификацией. Установка
; нуля заставляет PHP вести себя как раньше. Значение по умолчанию - 1. Вы должны исправить свои скрипты
; чтобы использовать SCRIPT_FILENAME вместо PATH_TRANSLATED.
; http://php.net/cgi.fix-pathinfo
cgi.fix_pathinfo=0
[...]Перезагрузите PHP-FPM:
sudo service php5-fpm reloadТеперь создайте следующий PHP-файл в корне документа /var/www/html:
sudo nano /var/www/html/info.phpТеперь мы вызываем этот файл в браузере (например, http://192.168.1.100/info.php):

Как вы видите, PHP5 работает, и он работает через FPM/FastCGI, как показано в строке Server API. Если вы прокрутите вниз, вы увидите все модули, которые уже включены в PHP5. MySQL там не указан, что означает, что у нас еще нет поддержки MySQL в PHP5.
6 Получение поддержки MariaDB / MySQL в PHP
Чтобы получить поддержку MySQL в PHP, мы можем установить пакет php5-mysqlnd. Также хорошая идея установить некоторые другие модули PHP5, так как они могут понадобиться для ваших приложений. Вы можете искать доступные модули PHP5 следующим образом:
apt-cache search php5Выберите те, которые вам нужны, и установите их следующим образом:
sudo apt-get install php5-mysqlnd php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-sqlite php5-tidy php5-xmlrpc php5-xslAPCu - это бесплатный кэш операционного кода PHP для кэширования и оптимизации промежуточного кода PHP. Он похож на другие кэши операционного кода PHP, такие как eAccelerator и Xcache. Настоятельно рекомендуется иметь один из этих кэшей, чтобы ускорить вашу страницу PHP.
APC можно установить следующим образом:
sudo apt-get install php5-apcuТеперь перезагрузите PHP-FPM:
sudo service php5-fpm reloadТеперь перезагрузите http://192.168.1.100/info.php в вашем браузере и прокрутите вниз до раздела модулей снова. Теперь вы должны найти там много новых модулей, включая модуль MySQL:

7 Настройка PHP-FPM для использования TCP-соединения
По умолчанию PHP-FPM слушает на сокете /var/run/php5-fpm.sock. Также возможно заставить PHP-FPM использовать TCP-соединение. Для этого откройте /etc/php5/fpm/pool.d/www.conf…
sudo nano /etc/php5/fpm/pool.d/www.conf… и измените строку listen следующим образом:
[...]
;listen = /var/run/php5-fpm.sock
listen = 127.0.0.1:9000
[...]Это заставит PHP-FPM слушать на порту 9000 на IP 127.0.0.1 (localhost). Убедитесь, что вы используете порт, который не занят на вашей системе.
Затем перезагрузите PHP-FPM:
sudo php5-fpm reloadЗатем пройдите через вашу конфигурацию nginx и все ваши виртуальные хосты и измените строку fastcgi_pass unix:/var/run/php5-fpm.sock; на fastcgi_pass 127.0.0.1:9000;, например, так:
sudo nano /etc/nginx/sites-available/default[...]
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# С php5-cgi отдельно:
fastcgi_pass 127.0.0.1:9000;
# С php5-fpm:
# fastcgi_pass unix:/var/run/php5-fpm.sock;
}
[...]Наконец, перезагрузите nginx:
sudo service nginx reload8 Скачивание образа виртуальной машины этого руководства
Это руководство доступно в виде готового образа виртуальной машины в формате ovf/ova, совместимого с VMWare и Virtualbox. Образ виртуальной машины использует следующие данные для входа:
SSH / Вход в оболочку
Имя пользователя: administrator
Пароль: howtoforge
Этот пользователь имеет права sudo.
Вход в MariaDB
Имя пользователя: root
Пароль: howtoforge
IP виртуальной машины - 192.168.1.100, его можно изменить в файле /etc/network/interfaces. Пожалуйста, измените все вышеперечисленные пароли для обеспечения безопасности виртуальной машины.
9 Ссылки
- nginx: http://nginx.net/
- wiki nginx: http://wiki.codemongers.com/Main
- PHP: http://www.php.net/
- PHP-FPM: http://php-fpm.org/
- MySQL: http://www.mysql.com/
- Ubuntu: http://www.ubuntu.com/
Get new posts in your inbox
No spam. Unsubscribe anytime.