Настройка php nginx debian

Обновлено: 06.07.2024

В этой статье я объясню, как настроить Nginx сервер для поддержки PHP на операционной системе Debian/Ubuntu. Мы разберемся в структуре конфигурационного файла, узнаем как работает Nginx и его модули. PHP-FPM — это менеджер процессов FastCGI (FCGI) в PHP, обычно используемый для высоконагруженных сайтов. Этот метод интеграции PHP использует Nginx. PHP-FPM 7.4 является последней стабильной версией, доступной для установки. По этой инструкции вы также можете установить PHP-FPM 7.3, PHP-FPM 7.2, PHP-FPM 7.1, PHP-FPM 7.0.

Эта инструкция была выполнена на операционных системах: Debian 10, Debian 9, Ubuntu 20.10, Ubuntu 20.04, Ubuntu 19.10.

Структура конфигурационного файла

Обычно главный конфигурационный файл nginx.conf расположен в директории /etc/nginx. В нем можно выделить блочные и простые директивы, которые относятся к определенному модулю Nginx. Блочные директивы также могут называться контекстом, если внутри фигурных скобок находятся другие директивы. Давайте рассмотрим конфигурационный файл по умолчанию (я удалил закомментированные части):

В этом файле прописаны глобальные настройки (базовые, SSL, логирование, Gzip), которые можно будет переопределить для конкретного виртуального хоста, которые подгружаются в самом конце:

Главный конфигурационный файл nginx.conf подключает все конфигурационные файлы и объединяет их в один, который запрашивается при запуске сервера. Этот файл нужно редактировать только в том случае, если вам необходимы другие глобальные настройки. Для начала, вы можете оставить его без изменений.

Виртуальные хосты

Конфигурационные файлы, которые описывают ваши домены, должны находиться в директории /etc/nginx/sites-available, а директория /etc/nginx/sites-enabled должна содержать символьные ссылки на активные виртуальные хосты. Каждый конфигурационный файл наследует директивы из главного конфигурационного файла nginx.conf и, при необходимости, они могут быть переопределены для конкретного виртуального хоста. Давайте рассмотрим конфигурацию сервера по умолчанию /etc/nginx/sites-available/default (я удалил закомментированные части):

Установка PHP-FPM

Перед любой установкой программного обеспечения рекомендуется обновить список пакетов репозитория, выполнив команду в терминале:

Установим PHP-FPM, выполнив команду в терминале:

Настройка Nginx для поддержки PHP-FPM

Перед тем как настроить Nginx для работы с обработчиком PHP, узнаем его версию, выполнив команду в терминале:

Если PHP еще не установлен, то будет отображаться ошибка:

Отредактируем файл конфигурации сервера /etc/nginx/sites-available/default, добавив поддержку PHP-FPM:

Сохраняем изменения и закрываем файл. Проверим конфигурацию на валидность, выполнив команду в терминале:

Теперь применим изменения конфигурации, выполнив команду в терминале:

Тестирование Nginx с поддержкой PHP-FPM

Давайте проверим, что Nginx корректно передает файлы с расширением .php нашему обработчику PHP. Создадим тестовый файл, который будет возвращать информацию о нашем сервере, выполнив команду в терминале:

Давайте убедимся, что Nginx сервер корректно отображает содержимое, сгенерированное PHP скриптом, открыв данную страницу в браузере:

или для локального хоста

Если вы правильно настроили Nginx для поддержки PHP-FPM, то отобразится похожая страница:

Тестирование Nginx с поддержкой PHP-FPM

После проверки в целях безопасности вам необходимо удалить этот файл, выполнив команду в терминале:

Установка и настройка ​Nginx + PHP-fpm в Debian

Nginx – это веб сервер, который был выпущен в релиз в 2004 году. Данный сервер прост в использовании, но, несмотря на это, он прекрасно справляется с большим количеством подключений. Данная особенность обусловлена его внутренней архитектурой. Изначально он создавался как сервер, работающий со статическим содержимым (так называемый кэширующий сервер). В отличии от сервера Apache, Nginx не имеет встроенного интерпретатора, позволяющего обрабатывать запросы к динамическому контенту.

Для этого необходимо дополнительно налаживать взаимодействие между веб-сервером и приложением. Решением данной задачи успешно занимается менеджер процессов PHP-FPM(FastCGI). Важным моментом является то, что в работе с PHP связка Nginx + PHP-FPM показывает себя менее производительной чем Apache + php_mod.

Поэтому если на вашем сервере предъявляются высокие требования к производительности php, то лучше посмотреть в сторону связки apache + php_mod. Еще одним важным моментом является то, что сервер Nginx требует больших усилий по настройке, чем Apache.

Данная статья посвящена установке и простейшей настройке Nginx сервера в связке с менеджером процессов PHP-FPM в операционной системе Debian 8. Все операции выполняются под привилегиями пользователя root.

Для начала необходимо обновиться:

Далее устанавливаем nginx:

После установки – проверим работоспособность сервера. Для этого просто откроем в веб-браузере адрес нашего сервера. Должно открыться следующее содержимое:


Это стандартная страница-заглушка сервера nginx. Следующим шагом будет установка пакета php5-fpm. Все очень просто:

Далее надо заняться настройкой. Сперва настроим сервер nginx. Конфигурационный файл находится по пути /etc/nginx/nginx.conf.

Откроем данный файл. Я использую текстовый редактор vi, но вы можете использовать любой другой, который вам удобен.

Давайте немножко разберемся в структуре самого файла. Весь файл отчасти напоминает программный код. В нем присутствуют директивы. Они делятся на 2 типа:

  • Простые – строка с операторами, заканчивающаяся символом «;». Например: pid /run/nginx.pid;
  • Блочные – директива, содержащая в себе дополнительные параметры, помещенные в фигурные скобки <>.

Внутри фигурных скобок можно задавать другие директивы. В таком случае это будет называться контекстом, а все директивы, которые находятся в конфигурационном файле, но не заключены ни в какие фигурные скобки – относятся к глобальному контексту или так называемому контексту main.

Как видите в файле присутствует директива:

Данная директива говорит, о том, что в данный файл конфигурации включены все конфигурационные файлы из каталога /etc/nginx/sites-enabled/. Данный каталог, по сути, содержит символические ссылки на конфигурации виртуальных хостов (по сути сайтов, обслуживаемых на сервере).

Теперь создадим в данном каталоге файл index.html примерно следующего содержания:

Теперь у нас есть содержание сайта, пусть и одна страница всего. Для этого сайта необходимо создать виртуальный хост. Скопируем файл используемый по умолчанию для виртуального хоста:

Далее откроем его для редактирования. Директива listen имеет параметры для default_server. Только один блок можно устанавливать с этим значением, оно означает, что данный блок будет обслуживать запросы, для которых не найдено ничего более походящего. Поэтому строки

необходимо удалить из данного файла. Далее необходимо настроить корневой каталог, в котором находится содержимое нашего сайта. Для этого пропишем директиву root следующим образом:

Следующая директива index определяет файлы, которые будут использоваться в качестве индексных. Порядок проверки наличия файлов соответствует порядку, указанному в конфигурационном файле. Данную директиву запишем следующим образом:

Следующей директивой server_name укажем имя сервера. В качестве значений укажем доменное имя и псевдоним для случая, когда доменное имя указывается с www префиксом.

Далее остается задать только директиву location, которая устанавливает конфигурацию сайта в зависимости от имени URI, указанного в запросе. В нашем случае она будет выглядеть просто:

Это говорит о том, что сначала будут проверяться файлы, потом каталоги и если не будет найдено ничего подходящего, то будет выдан ответ Not Found (404).

Вот и все с конфигурационным файлом. Его итоговое содержание – следующее:

Теперь мы имеем содержимое сайта и его конфигурационный файл. Осталось его включить. Для этого создадим символическую ссылку:

Перезапустить сервер, чтобы изменения вступили в силу:

Давайте проверим работу созданного ресурса.


Для открытия страницы, возможно, на компьютере, с которого осуществляется проверка понадобиться добавить строчку в файл hosts:

Где xxx.xxx.xxx.xxx – это IP-адрес сервера с установленным Nginx. Файл hosts, находится:

  • C:\Windows\System32\drivers\etc (в Win7);
  • /etc/hosts (в Debian).

Мы установили nginx и php5-fpm, а также сделали простейший сайт. Следующим шагом будет настройка php и его применение с nginx.


Но а как же выполнение php-кода? А php код у нас не выполнился, так как интерпретатор php не сконфигурирован в nginx. Давайте займемся этим.

Теперь наш файл конфигурации имеет следующий вид:

Сохраним изменения в файле и перезапустим наш сервер nginx.


Я на скриншоте отметил информацию, которая указывает на использование менеджера FPM.

По сути, простейшая настройка сервера nginx + php-fpm, на этом завершена. Простейший сайт создан и настроен на работу с php.


27 Окт 2019 19:10:33 | 0 comments

Установка и настройка PHP 7.3 на Debian 9 в связке с Nginx

Как известно в Debian 9 по умолчанию идет лишь PHP версии 7.0, что делать если нам нужен более новый, скажем PHP версии 7.2 или 7.3 ?

Ниже мы рассмотрим как быстро установить и настроить связку Nginx + PHP-FPM 7.3

Предполагается, то Nginx у Вас уже установлен и настроен в базовом варианте. Если это не так, то можете воспользоваться моей статьей.

1. Установим сторонний репозитарий, где есть все нужные и свежие версии PHP:

2. Проверим какие пакеты PHP 7.3 нам доступны:

Список будет достаточно внушительным, мы выберем базовый необходимый набор и установим.

3. Установка PHP:

Найдем где располагается файл конфигурации по умолчанию, стоит заметить, что это файл относиться к cli (консольной) версии PHP, для PHP-FPM файл будет другой.

То есть для cli (консольной) версии PHP файл конфигурации /etc/php/7.3/cli/php.ini

Забегая вперед скажу, что для FPM файл конфигурации PHP будет /etc/php/7.3/fpm/php.ini
Основной файл конфигурации PHP-FPM будет /etc/php/7.3/fpm/php-fpm.conf
Основной каталог в котором будут храниться конфигурация пулов PHP-FPM будет /etc/php/7.3/fpm/pool.d, файлы конфигурации пулов должны иметь расширение *.conf

Проверим статут PHP-FPM:

Настроим автоматический запуск PHP-FPM при старте сервера:

4. Настройка Nginx и PHP-FPM:

Чтобы посмотреть список запущенных пулов можно воспользоваться командой

Выведем его конфигурацию без комментариев:

Далее создадим симлинк на файл /etc/nginx/sites-available/mysite.conf в директории /etc/nginx/sites-enabled

В соответствии с ней Nginx будет считывать любые конфигурационные файлы в каталоге /etc/nginx/sites-enabled, а там у нас просто симлинки на нужные файлы из /etc/nginx/sites-available

Теперь создадим директорию для нашего сайта, то что мы указали в директиве root в файле /etc/nginx/sites-available/mysite.conf:

Создадим простой php-файл:

Задаем права и владельца:

После этого проверяем конфигурацию Nginx:

Если ошибок нет, то перезагружаем конфигурацию Nginx:

Предполагается, что на нашем сервере межсетевой экран отключен или нет никаких ограничений на подключение извне. Не забудьте в этом убедиться, т.к. в противном случае подключения на 80-й порт могут блокироваться им и мы не сможем открыть наш сайт.

Проверим межсетевой экран (iptables):

Во всех цепочках стоит ACCEPT, запретов нет.

Если у Вас эта страница не появилась, то в зависимости от кода ошибки нужно либо проверять настройки сервера, либо смотреть лог ошибок Nginx.

Если Вы использовали мой файл конфигурации nginx.conf, то лог ошибок Nginx находится в файле /var/log/nginx/error.log
Если у Вас свой файл nginx.conf, то проверьте путь к логу командой:

Если директива error_log не указана в nginx.conf, то ее можно указать непосредственно в файле виртуального сервера для нашего сайта, в файле /etc/nginx/sites-available/mysite.conf, например так:

После этого не забудьте проверить и перезагрузить конфигурацию Nginx:

На этом базовая настройка Nginx + PHP-FPM завершена, до скорых встреч.

Если у Вас возникли вопросы или Вы хотите чтобы я помог Вам, то Вы всегда можете связаться со мной разными доступными способами.

Сперва ставим nginx. Узнаём версию ngix в текущем репозитории debian.

Для Debian/Ubuntu, для проверки подлинности подписи репозитория nginx, и чтобы избавиться от предупреждений об отсутствующем PGP-ключе во время установки пакета nginx, необходимо добавить ключ, которым были подписаны пакеты и репозиторий nginx, в связку ключей программы apt. Загрузите этот ключ с нашего веб-сайта и добавьте его в связку ключей программы apt, выполнив команду.

Скачиваем файл командой:

После чего добавляем в конец файла /etc/apt/sources.list строки:

Выполняем команду apt-get update. Затем проверяем, кандидата на установку:

Теперь можно приступать запуску и настройке nginx. Проверяем факт установки:

Запускаем ngixn и проверяем статус

Статус сервиса nginx

Заходим по ip адресу нашего сервера и видим приветсвенную страниц nginx.

Дефолтный html шаблон nginx

Если станица не открылась, возможно порт заблокирован firewall-ом. Выполните команды:

Установка PHP 7.2 на Debian 9

Из коробки идёт 7.0. Непорядок!

Отлично! А теперь устанавливаем php через php-fpm:

Проверяем, что всё работает.


Устанавливаем дополнительные расширения для php, если они вам нужны:

Настраиваем php-fpm и взаимодействие с nginx

И вставляем туда следующие строки:

/etc/nginx/conf.d/default.conf Удаляем блок location.

(предварительно создайте эту папки и выдайте права пользователю nginx) Создайте файл /var/www/default/index.php с содержимым:

и подклюаем созданный ранее конфиг для взаимодействия с php

Запускаем, выполнив в консоли команду:

Проверяем настройки nginx на корректность

Устанавливаем MySQL 5.7 на Debian 9

Непорядок! Версия старая. Редактируем файл:

Проверяем теперь. Если всё хорошо - устанавливаем:

Проверяем статус mysql сервиса:

Статус MySQL сервиса

Устанавливаем PHPMyAdmin

Старьё! Актуальная версия 4.7. Скачаем phpmyadmin напрямую и распакуем в нашу рабочую папку Переходим в нашу папку сайта

Читайте также: