Установка серверов · 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

Введите пароль пользователя root MariaDB.

Установка Nginx

Nginx доступен в виде пакета для Debian Jessie, который мы можем установить следующим образом:

apt-get -y install nginx

Запустите Nginx после этого:

systemctl start nginx.service

Введите IP-адрес или имя хоста вашего веб-сервера в браузере (например, http://192.168.1.100), и вы должны увидеть следующую страницу:

Стартовая страница Debian Nginx.

Корневая директория по умолчанию для nginx на Debian 8 — /var/www/html.

Установка PHP

Мы можем заставить PHP5 работать в nginx через PHP-FPM (PHP-FPM (FastCGI Process Manager) — это альтернативная реализация PHP FastCGI с некоторыми дополнительными функциями, полезными для сайтов любого размера, особенно более загруженных сайтов), который мы устанавливаем следующим образом:

apt-get -y install php5-fpm

PHP-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):

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-xsl

APCu — это бесплатный и открытый кэш опкодов 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 информация с 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.

Ссылки

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.