- Установка PHP-FPM на Debian из пакетов
- Инструкция по установке
- Ubuntu
- Потрогать своими руками
- Записки IT специалиста
- Настраиваем веб-сервер на базе Nginx + PHP-FPM в Debian / Ubuntu Server
- Установка Nginx
- Устанавливаем PHP-FPM
- Установка MySQL и phpMyAdmin
- Дополнительные материалы:
- Как установить nginx на Debian 10
- Требования
- Шаг 1: установка nginx
- Шаг 2: настройка файрвола
- Шаг 3: проверка работы веб-сервера
- Шаг 4: работа с nginx
- Установка Nginx в Debian 10
- Требования
- 1: Установка Nginx
- 2: Настройка брандмауэра
- 3: Тестирование веб-сервера
- 4: Управление процессами Nginx
- 5: Настройка виртуального хоста
- Success! The example.com server block is working!
- How to Install Nginx with PHP-FPM on Debian 10
- Prerequsities
- Nginx Installation
- PHP Installation
- Nginx Configuration
Установка PHP-FPM на Debian из пакетов
PHP-FPM — патч к PHP, предоставляющие альтернативный интерфейс FastCGI. Обычно используется с nginx в проектах с высокими нагрузками или дефицитом ресурсов. Для удобной и упрощенной инсталляции мы собрали PHP-FPM в пакет для Debian 5 Lenny. Последнюю пару недель тестировали и тюнили, сейчас выложили в публичный доступ. Над пакетами в поте лица трудился viliar, которому дружно направляем за это благодарности и карму. Багрепорты и замечания приветствуются, лучше комментами к посту.
Инструкция по установке
Устанавливаем PHP-FPM с nginx на минимальную инсталляцию Debian 5.
Настройка нового репозитория
Собранные пакеты лежат в репозитории ftp-pub.truevds.ru/pub/debian. Добавляем репозиторий в конфигурацию apt — создаем файл /etc/apt/sources.list.d/truevds.list с содержимым:
Импортируем ключ, которым подписываются пакеты:
Для того, чтобы при апгрейде системы не переустанавливался PHP без патча, пропишем приоритет в конфгурационном файле /etc/apt/preferences, добавим:
Обновляем индексные файлы архивов:
Установка и конфигурирование
Устанавливаем PHP5 и nginx:
Стартуем php-fpm и nginx:
Система готова к работе.
Проверка работоспособности
Каталогом сервера по умолчанию для nginx является /var/www/nginx-default. Для проверки корректности работы php создаем в нем файл с phpinfo():
и открываем в браузере http://IP-адрес_сервера/phpinfo.php. Получаем:
Ubuntu
Для Ubuntu 9.10 Karmic есть собранные пакеты от Dreamcat4. Собственно, инструкция по установке PHP-FPM оттуда:
UPD (2009-12-17) Линки кривые. Репозиторий:
Потрогать своими руками
С этим пакетом мы собрали специальный пресет Оптимизированный PHP, который представляет из себя собранные и настроенные для работы nginx, php-fpm, eaccelerator, mysql и memcached. Для запуска сайта достаточно залить его по FTP. Сейчас этот пресет в статусе беты.
Под его тестирование зарезервировано оборудования и мы можем предоставить бесплатно на месяц несколько десятков серверов c 256 Mb RAM / 480 MHz CPU с этим пресетом. Можно посмотреть, как будут себя вести ваши сайты на связке nginx + php-fpm, можно просто посмотреть, что представляет из себя nginx с php-fpm. Предложение только для хабраюзеров с положительной кармой. В одни руки — один сервер. Заявки на сервер — личным сообщением со своим email. В обмен нужны репорты по различным недочетам, непонятностям, скорости, ну и общие описания ощущений.
Записки IT специалиста
Технический блог специалистов ООО»Интерфейс»
Настраиваем веб-сервер на базе Nginx + PHP-FPM в Debian / Ubuntu Server
В тоже время Nginx не умеет обрабатывать динамическое содержимое, для этого он должен отдать запрос серверу приложений одним из поддерживаемых способов, например, через FastCGI, дождаться и получить ответ, а затем уже отдать его клиенту. В среднем, что касается производительности PHP, то FastCGI будет в среднем в 10-15% медленнее, чем Apache + mod-php. Поэтому, если производительность вашего сервера упирается в производительность PHP, то никакой Nginx вам не поможет, а наоборот, только усугубит ситуацию.
Кроме того, работа с Nginx более сложна, чем с Apache, если с последним все популярные веб-движки работают из коробки, то для полноценной работы с Nginх может потребоваться дополнительная настройка. Исходя из этого мы не рекомендуем использовать Nginx, как самостоятельный веб-сервер, начинающим веб-мастерам, так как при отсутствии опыта и квалификации довольно трудно понять, связана ошибка с веб-приложением или веб-сервером. Да и на форумах для новичков вам вряд ли кто-нибудь подскажет по такой связке, а там, где «тусуются» работающие с Nginx специалисты подобные вопросы обычно не поднимаются, так как участники давно их «переросли».
Если вам нужен просто работающий веб-сервер, и вы не готовы глубоко вникать в тему, то лучше обратите свое внимание на Apache, если же вы готовы потратить некоторое время и силы на изучение и настройку, а также готовы самостоятельно решать возникающие проблемы, то добро пожаловать!
Установка Nginx
Несмотря на то, что Nginх присутствует в репозиториях основных дистрибутивов, мы рекомендуем использовать версию от разработчиков, это позволит более оперативно получать новые версии и новые возможности. Существует две ветки Nginx, основная и стабильная, первая имеет нечетную, вторая четную нумерацию. Разработка происходит следующим образом, все изменения основной ветки, скажем 1.7 фиксируются и переходят в стабильную 1.8, которая перестает разрабатываться и получает только обновления безопасности, основная ветка после этого получает номер 1.9 и в нее вносятся все изменения.
Сами разработчики рекомендуют использовать основную ветку, если только нет каких-то особых требований по совместимости. По своему опыту можем сказать, что основная ветка достаточно стабильна и может быть использована на рабочих серверах.
Для подключения репозиториев Nginx создадим в папке /etc/apt/sources.list.d файл nginx.list:
Потом добавим в него строки. Для Debian:
Затем скачаем и установим PGP-ключ, необходимый для проверки подлинности:
После чего можно обновить список пакетов и установить nginx:
Теперь, если набрать в браузере адрес нашего сервера, вы увидите стандартную заглушку Nginx.
Также проверить состояние веб-сервера можно командой:
Прежде всего изменим пользователя, от имени которого работает nginx, в Debian/Ubuntu веб-сервер работает от пользователя www-data и чтобы избежать в будущем возможных коллизий с правами доступа приведем строку к виду:
Затем укажем количество рабочих процессов, рекомендуется выбирать их количество по числу доступных процессорных ядер, в нашем случае 2:
Приведем секцию events к виду:
Первая опция задает количество соединений на рабочий процесс, вторая задает метод обработки соединений, явно укажем наиболее эффективный для Linux.
Теперь перейдем в секцию http и после строки
зададим следующие опции:
Они задают таймаут (в секундах) на чтение клиентом тела и заголовка запроса, последняя опция разрешает сброс соединений по таймауту.
Эти параметры ограничивают максимальный размер тела запроса клиента и задают буфер для чтения заголовка запроса. Максимальный размер тела запроса ограничивает размер файла, который может быть загружен веб-сервером.
Также разрешим передачу файлов и оптимизируем этот процесс.
Он задает таймаут постоянных (keep-alive) соединений, которые позволяют повысить производительность протокола HTTP/1.1, но незакрытое соединений впустую использует ресурсы сервера и поэтому такие соединения следует принудительно завершать.
Ниже зададим параметры gzip-сжатия:
Первая опция включает gzip-сжатие, затем отключаем его для младших версий IE (6 и ниже), если такие вдруг зайдут на наш сервер, разрешим сжимать проксированные запросы, это нужно для сжатия динамического содержимого, затем укажем минимальный размер сжимаемого ответа, чтобы не тратить ресурсы сервера на сжатие коротких ответов. Ниже задается уровень сжатия и типы сжимаемых данных.
В самом конце, после
Это позволит подключать конфигурации виртуальных хостов из папки sites-enabled.
Сохраним и проверим конфиг командой:
После чего можно перезапустить nginx:
Теперь можно перейти к настройке виртуальных хостов, создадим две папки:
В первой будут хранится настройки сайтов, а во второй мы будем создавать символьные ссылки для того, чтобы подключить настройки сайта к конфигурационному файлу nginx.
Перед тем как описывать виртуальные хосты, создадим структуру папок для их хранения:
Затем создадим конфигурационный файл для нашего первого сайта:
Какого-либо стандарта по названию файлов у nginx нет, поэтому можете придерживаться своей системы, главное, чтобы вам было понятно, какой файл за какой сайт отвечает. Теперь откроем его и внесем следующий текст:
Его синтаксис достаточно прост и понятен, первая секция server задает основные параметры сайта, его имя, кодировку, расположение корневой директории и файлов логов. Вторая секция нужна для перенаправления сайта с www на без www.
Если вы хотите сделать данный виртуальный хост сайтом по умолчанию, т.е. тем на который будут переадресовываться все запросы, для которых nginx не нашел подходящего виртуального хоста или без имени сервера вообще, например, по IP-адресу, то добавьте к директиве listen опцию default, начиная с версии 0.8.1 можно использовать опцию default_server:
Сохраняем конфигурацию и подключаем ее к nginx:
Проверяем конфигурацию и заставим nginx ее перечитать:
Теперь поместим в корневую директорию сайта файл index.html со следующим содержимым:
Теперь набираем в браузере имя нашего сайта и убеждаемся, что все работает.
Устанавливаем PHP-FPM
Для работы с современными веб-приложениями вам потребуется поддержка популярного скриптового языка PHP, Nginx поддерживает работу через FastCGI, но не имеет собственного менеджера процессов, поэтому мы будем использовать для этой цели PHP-FPM.
Важно! В современных дистрибутивах используется более новая версия PHP 7, чтобы работать с новой версией языка вместо php5 в приведенных ниже командах следует указывать php7.x или просто php например, вместо php5-imagick нужно набрать php7.0-imagick или php-imagick.
Все необходимые пакеты и интерпретатор PHP будут установлены по зависимостям. Также имеет смысл сразу установить некоторые модули PHP, например, для работы с графикой:
Настройки PHP-FPM по умолчанию достаточно оптимальны и никаких вмешательств в них не требуется, однако следует подправить некоторые опции PHP, для этого откроем /etc/php5/fpm/php.ini и найдем там следующие опции:
этот параметр задает максимальный размер данных загружаемых методом POST, влияет, например, на размер загружаемых средствами PHP файлов. По умолчанию 8 МБ, можем изменить по собственным потребностям.
Если вы будете использовать PHP-приложения (CMS) работающие в кодировке отличной от UTF-8, то приведите к следующему виду опцию:
Затем раскоменнтируйте и установите опцию:
Это закроет возможную уязвимость в PHP.
Еще ниже надо найти и увеличить размер максимально загружаемого файла:
Данное значение должно быть больше или равно значению post_max_size, иначе вы будете ограничены в загрузке файлов меньшим из указанных в этих опциях размером.
Сохраним изменения и перезапустим PHP-FPM:
Теперь следует научить Nginx работать с PHP-FPM, для этого в файл конфигурации виртуального хоста нужно добавить настройки, которые будут перенаправлять (проксировать) все запросы к динамическому содержимому на FastCGI-шлюз.
Если сайтов несколько, то аналогичные настройки потребуется добавить каждому виртуальному хосту, поэтому, чтобы не делать лишних действий, имеет смысл вынести данные настройки в шаблон и подключать к виртуальному хосту уже его. Такой подход имеет еще один плюс, если вам потребуется изменить настройки, то делать это придется только в одном месте.
Создадим директорию для хранения шаблонов:
После чего создадим в ней шаблон для работы с PHP-FPM:
Откроем его и добавим следующий текст:
Указанный нами блок location будет обрабатывать все запросы к php-файлам, первая директива в нем проверяет наличие запрошенного файла, в противном случае отдавая ошибку 404. Вторая устанавливает параметры соединения с FastCGI-шлюзом, в нашем случае с PHP-FPM, соединение устанавливается через UNIX-сокет, как наиболее производительный способ соединения. Затем указывается индексный файл и подгружаются настройки Nginx для FastCGI.
Важно! Обратите внимание, что PHP 7 имеет иной путь к UNIX-сокету, поэтому следует указывать /var/run/php/php7.0-fpm.sock
В принципе этого уже достаточно, чтобы работать с динамическим содержимым, но не будем спешить и добавим в файл еще несколько блоков.
Несмотря на то, что Nginx не использует htaccess-файлы, они, вместе с файлами htpasswd могут находиться в директории сайта, особенно если до этого он работал на Apache и будет правильно запретить доступ к ним в целях безопасности.
Также следует настроить кэширование статического содержимого:
Также зададим кэширование для скриптов и стилей:
Для них установим срок кэширования в 3 часа, что позволит соблюсти баланс между скоростью применения возможных изменений в этих файлах и уменьшением количества запросов к вашему сайту.
Теперь откроем файл конфигурации виртуального хоста и в конце первой секции server добавим строку подключения шаблона:
Сохраним все настройки, проверим конфигурацию и перезапустим Nginx.
Чтобы проверить работу PHP создадим в корневой директории сайта файл test.php со следующим содержимым:
Теперь, если обратиться к данному файлу через браузер вы должны увидеть стандартную страницу с информацией о PHP.
Установка MySQL и phpMyAdmin
СУБД MySQL широко используется для хранения информации в современных веб-приложениях. Это один из самых важных компонентов веб-сервера, так как в базе данных обычно хранится вся информация сайта, кроме статического содержимого (изображений, файлов и т.п.).
Для установки MySQL выполните:
Важно! В свежих выпусках Debian (и его производных) вместо пакета mysql-server следует установить mariadb-server, который полностью совместим с MySQL.
Данная команда установит MySQL сервер и модуль PHP для работы с ним. В процессе установки вас попросят ввести пароль суперпользователя СУБД (root), не путать с суперпользователем системы.
Для повседневной работы с MySQL удобно использовать веб-приложение администрирования phpMyAdmin, установим его:
Установщик phpMyAdmin не умеет конфигурировать Nginx для работы с ним, поэтому ничего не выбираем на данном этапе, а все настройки выполним позже вручную.
Для этого создадим еще один файл шаблона:
и внесем в него следующий текст:
На первый взгляд синтаксис может показаться довольно сложным, но если разобрать правила по частям, то мы увидим, что ничего сложного нет. Все это мы уже обсуждали выше. Самый последний location осуществляет перенаправление на phpMyAdmin с адресов вида имя_домена/phpmyadmin.
Для подключения phpMyAdmin к сайту в описание виртуального хоста добавьте включение еще одного шаблона:
Проверьте конфигурацию и перезапустите Nginx, после чего наберите в браузере имя вашего сайта, добавив после него /phpmyadmin, если все сделано правильно, то вы попадете в админ-панель приложения.
В Ubuntu Server вы можете столкнуться с ошибкой отсутствия расширения mcrypt.
Для ее устранения выполните:
Мы не будем подробно останавливаться на дальнейшей работе с MySQL и phpMyAdmin, об этом можно подробно прочитать в соответствующей части нашей статьи Настраиваем веб-сервер на базе Apache в Debian / Ubuntu Server.
На этом настройку нашего сервера можно считать законченной. При переносе или размещении на нем новых сайтов не забывайте правильно устанавливать права и владельца. Стандартный набор прав: 644 для файлов и 755 для папок, его можно быстро установить командой:
Но учтите, что некоторые CMS требуют нестандартных прав на некоторые папки и файлы, поэтому уточните этот вопрос в документации.
Также не забывайте устанавливать правильного владельца, им должен быть пользователь, от имени которого работает веб-сервер, в нашем случае www-data, владелец устанавливается командой:
Обычно данных мер достаточно, но встречаются CMS которые требуют дополнительной настройки для работы с Nginx, в этом случае следует обратиться к документации или на форум поддержки движка. Поэтому мы еще раз повторимся, что данное решение требует определенного опыта и квалификации и не рекомендуется начинающим, а также тем, кто не хочет возиться с настройками, а хочет быстро получить работающий сайт.
Дополнительные материалы:
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
Или подпишись на наш Телеграм-канал:
Как установить nginx на Debian 10
Nginx – один из самых популярных веб-серверов в мире, его используют многие крупные интернет-порталы. Его можно использовать не только в качестве веб-сервера, но и как обратный прокси. Nginx обладает массой преимуществ, например, в сравнении с Apache он потребляет меньше ресурсов.
Из этой статьи вы узнаете, как установить nginx на сервер с ОС Debian 10.
Требования
Для выполнения дальнейших действий у вас должен быть создан пользователь с sudo привилегиями (под которым вам нужно авторизоваться), а также работать файрвол.
Шаг 1: установка nginx
Nginx доступен в стандартных репозиториях Debian, так что его можно установить прямо оттуда, используя пакетный менеджер apt.
А затем уже установить сам nginx:
Далее нужно нажать Enter, чтобы подтвердить то, что вы хотите начать установку. После этого на ваш сервер установится nginx и все необходимые зависимости.
Шаг 2: настройка файрвола
Теперь нужно внести несколько изменений в файрвол.
Введите команду ниже для того, чтобы просмотреть все доступные профили приложений на вашем сервере:
Вы увидите список профилей приложений:
Для nginx доступны 3 профиля:
Лучше всего использовать наиболее ограниченный профиль, но при этом разрешающий необходимый вам трафик. Так как на сервере еще не настроен SSL, то на данном этапе необходимо открыть порт 80, который разрешает трафик для незашифрованного трафика HTTP.
Для этого нужно выполнить команду:
Затем проверьте состояние UFW:
В выводе вы увидите заданные правила (HTTP разрешен):
Шаг 3: проверка работы веб-сервера
После завершения процесса установки Debian 10 запустит nginx. То есть веб-сервер будет уже работать.
Это можно проверить следующей командой:
После ввода IP-адреса сервера вы должны увидеть:
Если страница отобразилась, значит, сервер работает корректно.
Шаг 4: работа с nginx
Наконец, несколько основных команд, которые позволяют управлять nginx.
Заново запустить после остановки:
Остановить и запустить:
Если вы вносите изменения в настройки, можно перезагрузить nginx без остановки процессов и обрыва соединений:
По умолчанию nginx будет запускаться вместе с сервером. Выключить эту настройку можно командой:
Если же вам нужно включить автозапуск nginx, то введите:
Установка Nginx в Debian 10
Nginx – это один из самых популярных веб-серверов в мире, позволяющий размещать очень большие сайты с высоким трафиком. Он, как правило, расходует меньше ресурсов, чем Apache. Также его можно использовать в качестве обратного прокси-сервера.
Данный мануал поможет установить Nginx на сервер Debian 10.
Требования
Для работы нужен сервер Debian 10, настроенный по этому мануалу.
1: Установка Nginx
Пакет Nginx можно найти в стандартном репозитории Debian.
Поскольку это ваше первое взаимодействие с системой пакетирования apt в текущей сессии, нужно обновить индекс пакетов. После этого можно установить Nginx.
sudo apt update
sudo apt install nginx
Чтобы подтвердить установку, нажмите Enter. После этого пакетный менеджер установит Nginx и все его зависимости.
2: Настройка брандмауэра
Прежде чем запустить Nginx, нужно настроить брандмауэр для поддержки его трафика. Во время установки Nginx регистрирует профиль сервиса в ufw, потому разрешить его трафик очень просто.
Откройте список профилей ufw:
sudo ufw app list
Available applications:
.
Nginx Full
Nginx HTTP
Nginx HTTPS
.
Как видите, в списке зарегистрировано три профиля Nginx:
Рекомендуется выбрать наиболее строгий профиль сервиса. Однако, поскольку на сервере ещё не настроен SSL, мы можем настроить только порт 80.
Чтобы включить профиль, введите:
sudo ufw allow ‘Nginx HTTP’
Убедитесь в том, что профиль включился:
Команда должна показать, что трафик HTTP разрешен:
3: Тестирование веб-сервера
После установки Debian 10 запустит Nginx автоматически. На данный момент веб-сервер должен работать.
Чтобы убедиться в том, что Nginx запустился, запросите его состояние в системе инициализации systemd.
Как видите, сервис запущен успешно.
Также можно посетить стандартную посадочную страницу Nginx. Она доступна в браузере по домену или IP-адресу.
Если вы не знаете своего IP-адреса, вы можете узнать его с помощью командной строки. Введите:
Команда вернёт несколько строк. Проверьте каждый полученный адрес в браузере.
Узнав свой IP-адрес, введите его в браузер, чтобы убедиться, что веб-сервер работает должным образом.
На экране должна появиться стандартная страница Nginx:
Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.
4: Управление процессами Nginx
Теперь рассмотрим несколько базовых команд для управления веб-сервером.
Чтобы остановить Nginx, введите:
sudo systemctl stop nginx
Чтобы запустить его, введите:
sudo systemctl start nginx
Для перезапуска веб-сервера используйте команду:
sudo systemctl restart nginx
Чтобы обновить настройки Nginx, не сбрасывая соединения, введите команду:
sudo systemctl reload nginx
По умолчанию Nginx автоматически запускается во время загрузки сервера. Это поведение можно выключить:
sudo systemctl disable nginx
Чтобы возобновить автозапуск сервиса, введите:
sudo systemctl enable nginx
5: Настройка виртуального хоста
На веб-сервере Nginx можно использовать виртуальные хосты (также они называются блоками server) для изоляции настроек и размещения нескольких доменов на одном сервере. Здесь используется условный домен example.com, но вы должны заменить его собственным доменом.
В Debian 10 Nginx по умолчанию предоставляет один включенный виртуальный хост, который обслуживает каталог /var/www/html. Этого хватит для обслуживания одного сайта, но если вы хотите разместить несколько сайтов, вам нужно создать новые виртуальные хосты. Создайте структуру каталогов в /var/www для сайта example.com, а /var/www/html оставьте как каталог по умолчанию, который будет обслуживаться, если запрос клиента не соответствует другим сайтам.
Права должны быть установлены правильно, если вы не поменяли unmask, но на всякий случай вы можете их проверить:
Затем создайте образец страницы index.html с помощью nano или другого редактора:
Success! The example.com server block is working!
How to Install Nginx with PHP-FPM on Debian 10
The FastCGI Process Manager (FPM) is an alternative to the FastCGI configuration with multiple enhancements. This is useful for high load websites. This tutorial will help you with the installation and configuration of PHP-FPM with Nginx on your Debian 10 Buster Linux system.
Prerequsities
You must have SSH access to the Debian 10 system with Sudo privileges.
Nginx Installation
Nginx packages are available under default repositories. SSH to your Debian 10 system with sudo privileges accounts and install the Nginx web server from the official repository.
PHP Installation
For the PHP installation we recommend to use Ondřej Surý‘s PPA, which provides latest PHP versions for Debian systems. Use the below couple of commands to add the PPA to your system.
Then install PHP latest version available on the day of writing this tutorial. Simply execute follows commands for the installation of PHP and PHP-FPM packages.
After installing the above packages php7.3-fpm service will automatically be started. You can make sure by typing below command on terminal.
Nginx Configuration
Let’s create Nginx virtual host to run with FPM/FastCGI. For this tutorial, we use default VirtualHost. Edit VirtualHost host configuration file in a text editor. You can create new VirtualHost as per your requirements, so make sure to enable any new VirtualHost.
Use the below basic Nginx Virtual host configuration with PHP FPM settings. Update the configuration as followings.