Установка серверов · 6 min read · Jan 05, 2026
Установка Nginx с PHP (как PHP-FPM) и MariaDB (LEMP) на Debian 8
Этот учебник покажет вам установку веб-сервера Nginx на Debian 8. Nginx (произносится как “engine x”) — это бесплатный, открытый, высокопроизводительный HTTP-сервер. Nginx известен своей стабильностью, богатым набором функций, простой конфигурацией и низким потреблением ресурсов. Этот учебник показывает, как вы можете установить Nginx с поддержкой PHP (через PHP-FPM) и MariaDB в качестве замены MySQL. Эта настройка часто называется LEMP = L inux + nginx (произносится как “ e ngine x”) + M ySQL + P HP).
Предварительная заметка
В этом учебнике я использую имя хоста server1.example.com с IP-адресом 192.168.1.100. Эти настройки могут отличаться у вас, поэтому вам нужно заменить их там, где это необходимо. У вас должен быть сервер Debian 8, я буду использовать минимальный сервер Debian в качестве базовой системы для этого учебника.
Обновление системы
Рекомендуется обновить списки пакетов и установить все ожидающие обновления перед тем, как мы начнем настройку Nginx. Выполните следующие команды, чтобы установить все ожидающие обновления.
apt-get update
apt-get upgrade -yЯ буду использовать редактор nano позже для редактирования конфигурационных файлов. Nano можно установить с помощью этой команды:
apt-get -y install nano Установка MariaDB (как замена MySQL)
Чтобы установить MariaDB, мы выполняем:
apt-get -y install mariadb-server mariadb-clientВам будет предложено ввести пароль для пользователя root MariaDB — этот пароль действителен для пользователя root@localhost, а также для [email protected], поэтому нам не нужно будет указывать пароль root MariaDB вручную позже:
Новый пароль для пользователя MariaDB “root”: <– вашпарольsqlroot
Повторите пароль для пользователя MariaDB “root”: <– вашпарольsqlroot

Установка Nginx
Nginx доступен в виде пакета для Debian Jessie, который мы можем установить следующим образом:
apt-get -y install nginxЗапустите Nginx после этого:
systemctl start nginx.serviceВведите IP-адрес или имя хоста вашего веб-сервера в браузере (например, http://192.168.1.100), и вы должны увидеть следующую страницу:

Корневая директория по умолчанию для nginx на Debian 8 — /var/www/html.
Установка PHP
Мы можем заставить PHP5 работать в nginx через PHP-FPM (PHP-FPM (FastCGI Process Manager) — это альтернативная реализация PHP FastCGI с некоторыми дополнительными функциями, полезными для сайтов любого размера, особенно более загруженных сайтов), который мы устанавливаем следующим образом:
apt-get -y install php5-fpmPHP-FPM — это демон-процесс (с файлом юнита systemd php5-fpm.service), который запускает сервер FastCGI на сокете /var/run/php5-fpm.sock.
Настройка nginx
Конфигурация nginx находится в /etc/nginx/nginx.conf, который мы открываем сейчас:
nano /etc/nginx/nginx.confКонфигурация проста для понимания (вы можете узнать больше об этом здесь: http://wiki.nginx.org/NginxFullExample и здесь: http://wiki.nginx.org/NginxFullExample2)
Сначала установите keepalive_timeout на разумное значение, например, 2 секунды:
[...]
keepalive_timeout 2;
[...]Виртуальные хосты определяются в контейнерах server {}. Умолчательный vhost определен в файле /etc/nginx/sites-available/default — давайте изменим его следующим образом:
nano /etc/nginx/sites-available/default[...]
server {
listen 80 default_server;
listen [::]:80 default_server;
# Конфигурация SSL
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Самоподписанные сертификаты, сгенерированные пакетом ssl-cert
# Не используйте их на производственном сервере!
#
# include snippets/snakeoil.conf;
root /var/www/html;
# Добавьте index.php в список, если вы используете PHP
index index.html index.htm index.nginx-debian.html index.php;
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;
}
}
[...]servername ; делает это умолчательным catchall vhost (конечно, вы также можете указать здесь имя хоста, например www.example.com).
Я добавил index.php в строку индекса. root /var/www/html; означает, что корневая директория — это каталог /var/www/html.
Важная часть для PHP — это блок location ~ .php$ {}. Раскомментируйте его, как показано выше, чтобы включить его.
Теперь сохраните файл и перезагрузите Nginx:
systemctl reload nginx.serviceТеперь откройте /etc/php5/fpm/php.ini…
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:
systemctl reload php5-fpm.serviceТеперь создайте следующий PHP-файл в корневой директории /var/www/html/:
nano /var/www/html/info.phpТеперь мы вызываем этот файл в браузере (например, http://192.168.1.100/info.php):

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

Настройка PHP-FPM для использования TCP-соединения (необязательно)
По умолчанию PHP-FPM слушает на сокете /var/run/php5-fpm.sock. Также возможно заставить PHP-FPM использовать TCP-соединение. Для этого откройте /etc/php5/fpm/pool.d/www.conf…
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:
systemctl reload php5-fpm.serviceЗатем пройдите через вашу конфигурацию Nginx и все ваши vhosts и измените строку fastcgi_pass unix:/var/run/php5-fpm.sock; на fastcgi_pass 127.0.0.1:9000;, например, вот так:
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;
fastcgi_pass 127.0.0.1:9000;
}
[...] Наконец, перезагрузите Nginx:
systemctl reload nginx.serviceОбраз виртуальной машины
Этот учебник доступен в виде готовой к использованию виртуальной машины в формате OVA / OVF для подписчиков Howtoforge. Формат VM совместим с VMWare и Virtualbox и, вероятно, с некоторыми другими инструментами, которые могут импортировать этот формат. Вы можете найти ссылку для загрузки в правом меню вверху. Нажмите на имя файла, чтобы начать загрузку.
Данные для входа в VM:
SSH Вход
Имя пользователя: root
Пароль: howtoforge
Вход в MariaDB
Имя пользователя: root
Пароль: howtoforge
Пожалуйста, измените пароли после первого запуска.
VM настроена на статический IP 192.168.1.100, IP можно изменить в файле /etc/network/interfaces.
Ссылки
- nginx: http://nginx.net/
- вики nginx: http://wiki.codemongers.com/Main
- PHP: http://www.php.net/
- PHP-FPM: http://php-fpm.org/
- MariaDB: https://mariadb.org/
- Debian: http://www.debian.org/
Get new posts in your inbox
No spam. Unsubscribe anytime.