Установка Nginx, PHP-FPM, MariaDB на CentOS 7 / RHEL 7

Установка Nginx, PHP-FPM, MariaDB на CentOS 7 / RHEL 7

Nginx — это свободный и с открытым исходным кодом высокопроизводительный HTTP сервер, он очень стабилен, имеется большой набор разных функций, простой в конфигурации и с низким потреблением ресурсов. Данная статья «Установка Nginx, PHP-FPM, MariaDB на CentOS 7 / RHEL 7» покажет вам, как установить Nginx на CentOS 7 / RHEL 7 с поддержкой PHP (через PHP-FPM) и c поддержкой MariaDB. PHP-FPM — это альтернативная реализация PHP FastCGI, которая имеет некоторые дополнительные возможности, полезные для сайтов с любым размером.
Первое, что нужно сделать, так это войти в систему как суперпользователь (root):

Установите Wget и Vim с помощью Yum, если они не установлены в системе CentOS 7:

Первое, что нужно сделать перед установкой LEMP, так это обновить CentOS 7, выполнив следующую команду в вашем терминале:

1. Установка MariaDB.

Я использую самую последнюю версию MariaDB — это версия 10.х и ее установку можно прочитать тут:

Установка MariaDB 10 на CentOS 7

Так же можно установить и MariaDB 5.x для этого нужно посетить официальный сайт и воспользоваться мануалом. Я постараюсь попозже рассказать как это можно сделать.

Вы можете почитать мой готовый конфиг тут:
my.cnf

Так же можете скачать его и использовать:

Переходим к следующему этапу.

2. Установка Nginx.

Установите Nginx rpm репозиториев чтобы загрузить и установить Nginx с официального сайта. Для этого выполняем:

Примечание:  Так же можно установить репозиторий EPEL и REMI и после чего выполнить установку nginx

Установите Nginx с помощью:

Запустите Nginx после установки:

Проброс портов в Iptables и SELinux:

Выполните следующие команды, чтобы разрешить использование HTTP через брандмауэр.

Далее, откроем веб-браузер:
http://your_IP_or_server

Вы должны увидеть следующую страницу; Это подтвердит вам, что ngnix успешно установлен на сервере.

Установка Nginx CentOS 7Корневая папка, по умолчанию, в  Nginx на CentOS 7 находится /usr/share/nginx/html. Конфигурационные файлы в /etc/nginx.

Worker Processes и Worker Connections

Первые две переменные, которые мы должны настроиться являются рабочие процессы (worker processes) и рабочие соединения (worker connections). Директива worker_processes является надежным позвоночником для жизни Nginx. Это обычно 1 рабочий процесс для каждого ядра. Проверить можно следующим образом:

У меня 4-хядерный процессор.

Можно вывести полную информацию о процессорах:

Или

Команда worker_connections сообщает нашим рабочие процессы, сколько человек одновременно могут обслуживаться в Nginx. Значение по умолчанию 768;Однако, учитывая, что каждый браузер обычно открывает, по крайней мере 2 соединения / сервер. Мы можем проверить наши основные ограничения с помощью команды ULIMIT:

У меня этот параметр равен 1024. Давайте обновим наш конфигурации:

и вставляем:

ЗАПОМНИТЕ, количество клиентов, (которые могут быть обслужены) мы можем умножить на количество ядер. И по этому, т.к у меня ядер 4, я умнажаю 1024×4=4096. По этому, я себе исправлю данный параметр в конфиге.

Буфер
Другой невероятно важно параметр — это размер буфера. Если размеры буферов слишком мала, то Nginx придется писать во временный файл и в результате чего диск будит читать и писать постоянно. Есть несколько директив, которые нам нужно понять, до принятия любых решений.

client_body_buffer_size: Это обрабатывает размер буфера клиента. Действия после, как правило, через форму.

client_header_buffer_size: Как и в предыдущем директива, только вместо этого он обрабатывает размер заголовка клиент. Для всех намерений и целей, 1K, как правило, приличного размера для этой директивы.

client_max_body_size: Максимально допустимый размер запроса клиента. Если максимальный размер превышен, то Nginx будет выдавать ошибку 413 или Request Entity Too Large.

large_client_header_buffers: максимальное число и размер буферов для крупных заголовков клиентов.

И так вставляем:

Тайм-ауты
Тайм-ауты могут также резко повысить производительность.

Директивы client_body_timeout и client_header_timeout несут ответственность за время который сервер будет ждать тела клиента или заголовок клиента, чтобы бы отправить после запроса. Если ни тело или заголовок отправляется, сервер выдаст ошибку 408 или запрос тайм-аут.

Keepalive_timeout назначает тайм-аут для Keep-Alive соединений с клиентом. Проще говоря, Nginx будет закрывать соединение с клиентом после этого периода времени.

И, наконец, send_timeout устанавливается не на всю передачу ответа, а только между двумя операциями чтения; если после этого времени клиент ничего не примет, то Nginx выключает соединение.

 Gzip сжатия
Gzip может помочь уменьшить количество передач по сети Nginx. Однако, будьте осторожны увеличения gzip_comp_level слишком высоко, как сервер начнет тратить CPU.

 Кэширование статических файлов
Это можно установить когда истекает заголовки для файлов, которые не меняются и обслуживаются регулярно. Эта директива может быть добавлен к реальным сервером блока Nginx.

Logging 

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

По причинам безопасности, выключаем парамерт:

Защита от DDos

ПОПОЗЖЕ БУДЕТ 😉

Автоматический запуск Nginx при запуске системы:

Я немного оптимизировал свой конфиг и вы можете использовать его в ознакомительных целях и не только. Чтобы прочитать его, перейдите по ссылке тут:
nginx.conf

Чтобы скачать его:

И перезапускаем после этого сам сервер nginx:

Если нет никаких ошибок — это хорошо. Если есть, то их нужно исправить ^ ^

3. Установка PHP5-FPM.

Далее следует установить PHP через PHP-FPM (PHP-FPM (FastCGI Process Manager), это альтернативная реализация PHP FastCGI. Она имеет некоторые дополнительные возможности, полезные для сайтов любого размера. Установить его вы можете выполнив следующую команду:

Кроме того, установите любой другой модуль PHP, который требует ваше приложение. Список приведен ниже, или вы можете использовать «yum search php-» командной строке, чтобы получить список доступных PHP модулей на ваших CentOS 7 системе:

  • php-bcmath — модуль для PHP приложений с использованием библиотеки BCMath.
  • php-cli — интерфейс командной строки для PHP (CLI).
  • php-common — Common (общие) файлы для PHP.
  • php-dba — модуль абстрактного слоя с использованием БД для PHP приложений.
  • php-devel — Файлы, необходимые для сборки расширений PHP.
  • php-embedded — библиотека PHP для встраивания в приложения.
  • php-enchant — Enchant расширение для PHP приложений.
  • php-fpm — PHP FastCGI Process Manager
  • php-gd — модуль для PHP приложений для использования графической библиотеки GD.
  • php-imap -модуль для PHP приложений которые используют протокол IMAP.
  • php-intl -Интернационализация расширения для PHP приложений.
  • php-ldap -модуль для PHP приложений которые используют LDAP.
  • php-mbstring — A module for PHP applications which need multi-byte string handling
  • php-mcrypt — Стандартный модуль PHP с поддержкой Mcrypt.
  • php-mysql -модуль для PHP приложений которые используют MySQL.
  • php-mysqlnd -модуль для PHP приложений которые используют MySQL.
  • php-odbc -модуль для PHP приложений которые используют ODBC.
  • php-pdo — модуль абстракции доступа к базе данных для PHP приложений.
  • php-pear.noarch — PHP Extension and Application Repository framework
  • php-pecl-memcache — расширение для работы с Memcached.
  • php-pgsql — модуль для PHP приложений которые используют PostgreSQL.
  • php-process — Модуль для PHP, который использует интерфейсы системного процессора.
  • php-pspell — модуль для PHP приложений для использования интерфейсов pspell.
  • php-recode -модуль для PHP приложений которые используют библиотеку recode.
  • php-snmp —  модуль для PHP приложений, которые запрашивают SNMP-управляемые устройства.
  • php-soap -модуль для PHP приложений которые используют протокол SOAP.
  • php-xml -модуль для PHP приложений которые используют XML.
  • php-xmlrpc -модуль для PHP приложений которые используют протокол XML-RPC.

Сейчан нужно отредактировать файл /etc/php.ini:

Далее, выполним настройку PHP основной конфигурации /etc/php.ini:

Мой готовый конфиг php.ini лежит тут:
php.ini

Отредактируем файл /etc/php-fpm.d/www.conf для этого выполним:

Мой конфиг для php-fpm:
php-fpm.conf

Чтобы проверить, правильно ли сконфигурирован конфиг php-fpm, используйте:

PS: Скачайте его от сюда:

Включение PHP-FPM поддержки на виртуальных хост.

Далее, перейдите в /etc/nginx и скопируйте исходный файл конфигурации Nginx (чтобы вернуть в друг чего):

Сейчас нужно поправить немного конфигурацию nginx для работы с php-fpm:

Создам папки для домашней директории:

Это можно не выполнять если не меняете расположение в данном конфиге.

Перегружаем энжинкс:

Сейчас я покажу как можно создать виртуальные хосты-сервера для Nginx.

linux-notes.org:

Server Name : linux-notes.org
Document Root : /home/www/linux-notes/public_html

 windows-notes.org:

Server Name : windows-notes.org
Document Root : /home/www/windows-notes/public_html

Создайте файл конфигурации с именем windows-notes.org.conf и  отредактируйте данный конфиг /etc/nginx/conf.d/windows-notes.org.conf:

Но этот конфиг для стандартного сайт, у меня он не работал для моей CMS, такой как -WP. По этому, я приведу пример конфига для ВП.

Смотрите конфиг выше.

Создадим host для вашего домена (windows-notes.org)  в файл /etc/hosts для этого:

Добавил это т.к использую виртуальную машину.

Тестирование PHP-FPM поддержки виртуальных хостов.

Создайте в корневой каталог:

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

И так как я изменил домашнюю директорию nginx, то и в нее добавлю:

Перезапустите службы:

Проверить корректную работу конфигов в энжинкс можно:

Я добавлю службу php-fpm в автозапуск ОС:

Проверим статус служб:

Теперь откройте веб-браузер и введите свой домен.

Установка phpMyAdmin

Посмотрим с какими модулями установлен nginx:

У меня это:

Установка Nginx, PHP-FPM, MariaDB на CentOS 7 / RHEL 7 завершена.

PS: Вы можете скачать мои конфиги на GITHUB

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *