- Введение
- Шаг 1 — Установка веб-сервера Nginx
- Шаг 2 — Установка MariaDB
- Шаг 3 — Установка PHP-FPM
- Шаг 4 — Тестирование PHP с помощью Nginx
- Шаг 5 — Тестирование подключения к базе данных из PHP (необязательно)
- Заключение
- Установка и настройка
- Открытие портов http и https
- Установка и настройка NGINX
- Исправление ошибки Invalid argument
- Файлы для настройки
- Проверка и команды сервиса
- Установка и настройка MariaDB
- Установка и настройка PHP
- Установка PHP 5
- Настройка файла php. ini
- Настройка файла /etc/php-fpm. conf
- Запуск, проверка, команды работы с PHP-FPM
- Вывод информации о версии PHP
- Подключение репозитория, обновление сервера
- Установка и настройка веб-сервера Nginx
- Установка php-fpm и дополнительных модулей php
- Установка Let’s Encrypt и подключение сертификата
- Установка MySQL/MariaDB на веб сервере
Введение
Программный стек LEMP представляет собой группу программного обеспечения, которое можно использовать для обслуживания динамических веб-страниц и веб-приложений, написанных на PHP. Название «LEMP» — это аббревиатура, описывающая операционную систему Linux с веб-сервером Nginx (произносится как «Engine-X»). Базовые данные хранятся в базе данных MariaDB, а динамическая обработка выполняется PHP.
Уровень базы данных в стеке LEMP обычно представляет собой сервер базы данных MySQL, но до выпуска CentOS 8 MySQL не был доступен в репозиториях CentOS по умолчанию. Из-за этого MariaDB, ответвление сообщества MySQL, стало широко распространенной альтернативой MySQL в качестве системы базы данных по умолчанию для стеков LEMP на машинах CentOS. MariaDB работает как замена исходному серверу MySQL, что на практике означает, что вы можете переключиться на MariaDB без внесения каких-либо изменений в конфигурацию или код вашего приложения.
В этом руководстве вы установите стек LEMP на сервер CentOS 8. Хотя MySQL доступен в репозиториях по умолчанию в CentOS 8, в этом руководстве рассматривается процесс настройки стека LEMP с использованием MariaDB в качестве системы управления базой данных.
Шаг 1 — Установка веб-сервера Nginx
Для отображения веб-страниц посетителям нашего сайта мы собираемся использовать высокопроизводительный веб-сервер Nginx. Мы будем использовать диспетчер пакетов dnf, который является новым менеджером пакетов по умолчанию в CentOS 8, для установки этого программного обеспечения.
Установите пакет nginx с помощью:
днф nginx
При появлении запроса введите y, чтобы подтвердить, что вы хотите установить nginx.
запуск systemctl nginx
firewall-cmd —add-servicehttp
Чтобы убедиться, что изменение было применено, вы можете запустить:
firewall-cmd —list-all
Вы увидите такой вывод:
Вам потребуется перезагрузить конфигурацию брандмауэра, чтобы изменения вступили в силу:
С добавлением нового правила брандмауэра вы можете проверить, запущен ли сервер, получив доступ к общедоступному IP-адресу или доменному имени вашего сервера из веб-браузера.
Примечание. Если вы используете DigitalOcean в качестве хостинг-провайдера DNS, вы можете ознакомиться с нашей документацией по продукту, чтобы получить подробные инструкции о том, как настроить новое доменное имя и указать его на свой сервер.
адрес показать eth0 инет
Это распечатает несколько IP-адресов. Вы можете попробовать каждый из них по очереди в своем веб-браузере.
В качестве альтернативы вы можете проверить, какой IP-адрес доступен для просмотра из других мест в Интернете:
Введите полученный адрес в веб-браузере, и вы перейдете на целевую страницу Nginx по умолчанию:
Если вы видите эту страницу, ваш веб-сервер установлен правильно.
Шаг 2 — Установка MariaDB
Теперь, когда у вас есть веб-сервер, вам нужно установить систему базы данных, чтобы иметь возможность хранить и управлять данными для вашего сайта. Мы установим MariaDB, форк исходного сервера MySQL от Oracle, разработанный сообществом.
Чтобы установить это программное обеспечение, запустите:
dnf mariadb-сервер
Когда установка будет завершена, вы можете включить и запустить сервер MariaDB с помощью:
systemctl start mariadb
Чтобы повысить безопасность сервера базы данных, рекомендуется запустить сценарий безопасности, предварительно установленный вместе с MariaDB. Этот сценарий удалит некоторые небезопасные настройки по умолчанию и заблокирует доступ к вашей системе баз данных. Запустите интерактивный скрипт, запустив:
Когда вы закончите, войдите в консоль MariaDB, набрав:
CREATE DATABASE example_database
Сбросить привилегии, чтобы убедиться, что они сохранены и доступны в текущем сеансе:
Чтобы выйти из оболочки MariaDB, введите:
На этом этапе ваша система баз данных настроена, и вы можете перейти к установке PHP, последнего компонента стека LEMP.
Шаг 3 — Установка PHP-FPM
У вас установлен Nginx для обслуживания вашего контента и установлена MariaDB для хранения и управления вашими данными. Теперь вы можете установить PHP для обработки кода и создания динамического контента для веб-сервера.
В то время как Apache встраивает интерпретатор PHP в каждый запрос, Nginx требует внешней программы для обработки PHP и работы в качестве моста между самим интерпретатором PHP и веб-сервером. Это позволяет повысить общую производительность большинства веб-сайтов на основе PHP, но требует дополнительной настройки. Вам нужно будет установить php-fpm, что означает «менеджер процессов PHP fastCGI», и указать Nginx передавать запросы PHP этому программному обеспечению для обработки. Кроме того, вам понадобится php-mysqlnd, модуль PHP, который позволяет PHP взаимодействовать с базами данных на основе MySQL. Базовые пакеты PHP будут автоматически установлены как зависимости.
Чтобы установить пакеты php-fpm и php-mysql, запустите:
dnf php-fpm php-mysqlnd
Когда установка будет завершена, вам нужно будет отредактировать файл /etc/php-fpm.d/www.conf, чтобы настроить пару параметров.
Теперь откройте файл конфигурации /etc/php-fpm.d/www.conf, используя nano или любой другой редактор:
Сохраните и закройте файл, когда закончите редактирование. Если вы используете nano, сделайте это, нажав CTRL + X, затем Y и ENTER.
Чтобы включить и запустить службу php-fpm, запустите:
запуск systemctl php-fpm
Наконец, перезапустите веб-сервер Nginx, чтобы он загрузил файлы конфигурации, созданные при установке php-fpm:
systemctl перезапустить nginx
Теперь ваш веб-сервер полностью настроен. На следующем шаге мы создадим скрипт тестирования PHP, чтобы убедиться, что все работает как положено.
Шаг 4 — Тестирование PHP с помощью Nginx
Теперь мы создадим тестовую страницу PHP, чтобы убедиться, что веб-сервер работает должным образом.
Когда вы закончите, сохраните и закройте файл.
Вы увидите страницу, похожую на эту:

После проверки соответствующей информации о вашем PHP-сервере на этой странице лучше всего удалить созданный вами файл, поскольку он содержит конфиденциальную информацию о вашей среде PHP и вашем сервере CentOS. Вы можете использовать rm для удаления этого файла:
Вы всегда можете восстановить этот файл, если он понадобится вам позже. Далее мы проверим подключение к базе данных со стороны PHP.
Шаг 5 — Тестирование подключения к базе данных из PHP (необязательно)
Если вы хотите проверить, может ли PHP подключаться к MariaDB и выполнять запросы к базе данных, вы можете создать тестовую таблицу с фиктивными данными и запросить ее содержимое из PHP-скрипта.
СОЗДАТЬ ТАБЛИЦУ example_database.todo_list (
item_id INT AUTO_INCREMENT,
содержимое VARCHAR(255),
ПЕРВИЧНЫЙ КЛЮЧ (идентификатор_элемента)
);
Теперь вставьте несколько строк содержимого в тестовую таблицу. Вы можете повторить следующую команду несколько раз, используя разные значения:
INSERT INTO example_database.todo_list content VALUES «Мой первый важный элемент»
Чтобы подтвердить, что данные были успешно сохранены в вашей таблице, запустите:
SELECT * FROM example_database.todo_list
Убедившись, что в вашей тестовой таблице есть достоверные данные, вы можете выйти из консоли MariaDB:
Теперь вы можете создать PHP-скрипт, который будет подключаться к MariaDB и запрашивать ваш контент. Создайте новый файл PHP в пользовательском корневом веб-каталоге, используя предпочитаемый вами редактор. Для этого мы будем использовать nano:
Вы должны увидеть страницу, подобную этой, показывающую содержимое, которое вы вставили в тестовую таблицу:
Это означает, что ваша среда PHP готова к подключению и взаимодействию с вашим сервером MariaDB.
Заключение
В этом руководстве вы создали гибкую основу для обслуживания веб-сайтов и приложений PHP для ваших посетителей, используя Nginx в качестве веб-сервера. Вы настроили Nginx для обработки запросов PHP через php-fpm, а также настроили базу данных MariaDB для хранения данных вашего сайта.
Установим и настроим веб-сервер на базе данных системы CentOS 7 с связкой Nginx, MariaDB и PHP. Коротко такая связка функционала называется LEMP и дает возможность работать с сайтами, использующими эти технологии.
Долгое время позиция занимает Apach, но новый продукт подвержен изменению подхода к управлению командами и позволяет обслуживать высоконагруженные сайты на бюджетной железе. Более подробно узнать об авторе Игоря Сысоева и узнать о принципах работы можно на просторах сети интернет. От себя лишь скажу, что теперь это моя основная и любимая связка при организации веб-сервера по случаю, быстроты и удобства работы.
Для работы с веб-сайтом как правило необходимо иметь три компонента.
Теперь обо всех этих компонентах расскажу подробно.
изменение действия с учетом настроек ядра CetnOS 7 на Айхор Хостинге. Все действия будут регламентированы для других хостингов и серверов, где необходимо изменить данный функционал на чувства в CentOS 7.
Установка и настройка
Проверим наличие firewalld:
статус systemctl firewalld
= вывод команды =
Не удалось найти модуль firewalld.service.
Если установить с минимальной версией CentOS на Firewalld там не установлен.
Установим FirewallD вез вопросов командой:
yum -y install firewalld
Добавим в автозагрузку и запустим:
systemctl enable firewalld
systemctl start firewalld
Или короткой командой:
firewall-cmd —state
= вывод команды =
running
Всё хорошо. Можно приступать к настройке доступа к серверу.
Открытие портов http и https
Добавим сразу 80 и 443 порты в наш FirewallD:
firewall-cmd —permanent —zone=public —add-service=http
firewall-cmd —permanent —zone=public —add-service=https
Перезагрузим правила FirewallD:
firewall-cmd —reload
= вывод команды =
success
Мне не нужны лишние допуски поэтому удалю dhcpv6-client командой:
firewall-cmd —permanent —zone=public —remove-service=dhcpv6-client
= вывод команды =
success
Перезагрузим и проверим:
Все прошло успешно. Теперь открыт доступ к серверу по нужным нам портам.
Установка и настройка NGINX
Установим самую свежую стабильную версию из репозитория NGINX для CentOS 7:
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
Можно создать файл с необходимым репозиторием:
Установку выполним без вопросов:
yum install -y nginx
Создадим ссылку на автозагрузку:
systemctl enable nginx
Проверим работу сервиса:
Для работы netstat нужно установить необходимый пакет:
yum -y install net-tools
Проверим статус запущенного сервиса:
Исправление ошибки Invalid argument
Видим что присутствует ошибка. При этой ошибке все работает но я решил её убрать.
Причина ошибки в том что pid указан два раза:
Где убрать этот параметр решать вам. Мой выбор это комментирование параметра в файле /etc/nginx/nginx.conf.
Видим что всё у нас хорошо. Сервис работает и стартует при перезагрузке.
Для окончательной проверки мы можем набрать в браузере http://ip сервера и увидеть приветственное сообщение.

Файлы для настройки
Работать мы будем с виртуальными сайтами и тут есть два варианта работы:
Мне удобней работать с файлами настроек для каждого сайта. Чтобы такая возможность была необходимо в главном файле присутствие строки include /etc/nginx/conf.d/*.conf.
Сделаем резервную копию оригинала файла главных настроек Nginx:
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.orig
Основное и главное отличие в работе по сравнению с Apach, это то что Nginx не работает с файлами .htaccess.
Ниже приведу пример настройки моего конфигурационного файла с пояснениями:
В папке conf.d находится файл default.conf в настройках которого и указаны параметры приветственной странницы, что нам показал запрос на ip адрес сервера. В случае неправильно указанного адреса будет показано именно это приветствие. Вы можете подправить файлы, пути до которых указанны в нём, по своему желанию.
Сделаем резервную копию оригинала файла default.conf:
cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.orig
Посмотрим как выглядит файл default.conf:
Мы добавили index.php и отредактировали секцию location ~ .php
Мы добавили index.php и отредактировали секцию location ~ .php$ отвечающую за обработку файлов php.
nbsp;отвечающую за обработку файлов php.
Данные действия были сделаны для того чтобы не создавая виртуальный сайт произвести проверку работы php. В последствии лучше привести файл к изначальному виду.
Проверка и команды сервиса
После любых манипуляций с файлами у сервиса есть чудесный механизм проверки сделанных изменений.
Посмотрим как выглядит вывод результата правильных настроек конфигурационных файлов:
nginx -t
= вывод команды =
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Видим что все хорошо.
systemctl reload nginx
или
nginx -s reload
Варианты команд при работе с сервисом.
Для перезагрузки лучше использовать «reload» так как перезагрузка произойдет не прерывая работу сервиса.
В случае если что то пошло не так, вы всегда можете посмотреть логи находящиеся в папке /var/log/nginx.
Установка и настройка MariaDB
Для установки MariaDB без вопросов выполним команду со следующими параметрами:
yum install -y mariadb mariadb-server
Создадим ссылки на автозагрузку:
systemctl start mariadb.service
Произведем начальную настройку базы данных:
Сразу при старте попросит указать пароль! Так как его просто нет нажимаем Enter. На все вопросы обычно отвечаю Y.
Проверим сервис MariaDB:
systemctl status mariadb.service
= вывод команды =
● mariadb.service — MariaDB database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; ; vendor preset: disabled)
Active: active (running) since Чт 2017-03-23 04:59:53 MSK; 1 day 16h ago
— часть вывода не указана —
Видим что всё хорошо и служба стартует при перезагрузке сервера.
Варианты команд при работе с MariaDB
В случае если что то пошло не так, вы всегда можете ознакомится посмотрев логи в папке /var/log/mariadb.
Установка и настройка PHP
Nginx готов к обслуживанию страниц, а MariaDB может хранить данные и управлять информацией. Осталось связать эти два компонента для этого нам и понадобится PHP.
Nginx не содержит PHP, необходимо установить php-fpm (менеджер процессов FastCGI). Nginx будет передавать PHP-запросы на обработку данному программному обеспечению. Обязательно необходим еще пакет php-mysql, позволяющий PHP взаимодействовать с бэкэндом базы данных.
По умолчанию в CentOS ставится версия PHP 5.4. Не понимаю почему до сих пор не обновили до версии 5.6 хотя во многих дистрибутивах она уже идёт по умолчанию.
Узнать актуальную версию вы всегда сможете перейдя по ссылке, которая тут указана. Версия 5.6 будет актуальная до 31 декабря 2018 года.
Установка PHP 5
После переезда на нового провайдера обнаружил что ресурс webtatic.com не доступен. После небольшого футбола с провайдерами получил ответ: «104.24.6.38 заблокирован Роскомнадзором, тут уже ничего не поделать». На слово верить я уже давно перестал. Задал вопрос Роскомнадзору. Жду ответ. Ну а пока жду ответа добавил как установить PHP 5.6 из репозитория Remi.
16.04.2017 года ресурс Webtatic.com переехал на новый IP адрес и снова доступен для России. Более подробно можете прочитать в статье WebtaticEL или блокировка в России.
Для репозитория WebtaticEL по ссылке вы можете ознакомиться с инструкцией по установке для операционной системы CentOS 7.
Для начала проверим чтобы в системе не присутствовал php:
php -v
-bash: php: command not found
Отлично php нет в системе.
Устанавливаем только из одного репозитория. Различий в работе я не обнаружил.
Добавим необходимые репозиторий WebtaticEL:
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm
rpm -Uvh remi-release-7*.rpm
В дистрибутив PHP теперь входит opcode который называется ZendOPcache. Данное расширение сохраняет компилированный байт код скрипта и повышает производительность скриптов. Это дополнение необязательно, вы можете выбрать любое другое, но поскольку данное дополнение входит в состав исходного дистрибутива PHP, и оно поддерживается разработчиком, именно его мы и будем использовать. Скорость еще никому не вредила.
Установим необходимый нам вариант php вместе с opcache и всем необходимым для WebtaticEL:
yum install php56w-fpm php56w-opcache php56w-mysql php56w-cli php56w-gd php56w-ldap php56w-odbc php56w-pdo php56w-pecl-memcache php56w-pear php56w-xml php56w-xmlrpc php56w-mbstring php56w-snmp php56w-soap php56w-imap
Установим необходимый нам вариант php вместе с opcache и всем необходимым для Remi:
yum —enablerepo=remi,remi-php56 install php-fpm php-opcache php-mysql php-cli php-gd php-ldap php-odbc php-pdo php-pecl-memcache php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap php-imap
После установки проверим правильность:
Вся настройка осуществляется редактированием 3 файлов а именно:
Настройка файла php. ini
Настроим главный конфигурационный файл php:
mcedit /etc/php.ini
= необходимые изменения =
# Запрет на исполнение произвольного кода на сервере с правами php процесса при загрузке файла.
cgi.fix_pathinfo=0
# Избежим ошибок часового пояса в файле /var/log/php-fpm/www-error.log
date.timezone = «Europe/Moscow»
Остальные параметры можно не трогать, так как их настройка будет осуществлена средствами настройки Nginx.
Настройка файла /etc/php-fpm. conf
В этом файле указанны основные настройки которые мы не будем трогать, лишь проверим наличие необходимых нам параметров.
Все остальные параметры мы будем делать в файле /etc/php-fpm.d/www.conf
В этом файле мы и укажем все параметры необходимые нам для работы php-fpm.
Так как мы указали пользователя Nginx, то права на папки и файлы виртуальных сайтов должны быть именно такие!
Можно использование Unix сокет в PHP-FPM, но какие он дает преимущества я так и не понял. Для применения необходимо в файле /etc/php-fpm.d/www.conf вместо строчки listen = 127.0.0.1:9000 прописать строку listen = /var/run/php-fpm/php5-fpm.sock и не забыть применить этот параметр в файлах настройки виртуальных сайтов.
Также будет необходимо создать папку с правами где будут находится наши данные сессии:
cd /var/lib/php/
mkdir session
chown nginx:nginx session/
У меня не сложилась нормальная работа по сокету, в связи с тем что периодически он отказывался работать и помогала лишь ручная перезагрузка сервера.
Запуск, проверка, команды работы с PHP-FPM
Создадим ссылки на автозагрузку для php-fpm:
systemctl enable php-fpm.service
systemctl start php-fpm.service
Если вы используйте сокет то вывод проверки будет пустой и необходимо проверить работу выводом статуса php-fpm.
Выведем статус сервиса:
systemctl status php-fpm
● php-fpm.service — The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; ; vendor preset: disabled)
Active: active (running) since Чт 2017-03-23 04:59:50 MSK; 2 days ago
— часть вывода не указана —
Видим что сервис запущен и стартует при перезагрузки сервера.
Варианты команд при работе с Php-fpm
Если пошло что то не так, всегда можно посмотреть логи находящиеся по адресу /var/log/php-fpm.
Вывод информации о версии PHP
Последнее что нам осталось это проверить как браузер обрабатывает php файлы и для этого в стандартной папке nginx мы создадим файл info.php который выведет нам информацию о версии php со всеми параметрами.
Создадим файл info.php указав в нем необходимый код:
Назначим необходимые права на папку и все файлы внутри:
Откроем в браузере наш файл указав http://ip адрес сервера/info.php

После всех произведенных действий мы настроили для работы веб сервер с необходимыми нам параметрами. Конечно в тексте присутствуют неточности как в понимании некоторых технических процессов так и самой настройки. Внимательно выслушаю все дополнения, исправления и произведу изменения в тексте статьи.
PHP-FPM (Fast Process Manager) – это отдельная реализация обработчика FastCGI для выполнения PHP скриптов. На базе связки веб-сервера NGINX (который обрабатывает статику) и PHP-FPM вы можете построить более быстрый и производительный веб-сервер для своих веб-проектов по сравнению с использованием «классической» связки NGINX, Apache и модуль mod_php (стек LAMP).
LEMP – набор программного обеспечения с открытым исходным кодом, которая обычно устанавливается совместно для запуска на сервере для размещения веб-сайтов и веб-приложений. Этот аббревиатурой обозначающет набор ОС Linux с веб-сервером Nginx (он заменяет Apache в более распространенном стеке LAMP), с БД MySQL (MariaDB) и c php для обработки динамических данных.
В данной статье мы рассмотрим установку и оптимизацию стека LEMP для размещения нагруженного веб-проекта на сервере с CentOS 7 на базе связки NGINX+ PHP-FPM + MariaDB/MySQL + установим для сайта SSL сертификата Let’s Encrypt .
Подключение репозитория, обновление сервера
Так как установка производится на вновь установленном сервере с CentOS, нужно подключить популярный репозиторий EPEL и обновить на сервере все пакеты.
# yum install epel-release -y# yum update -y
Репозиторий установился, но пакетов для обновлений не найдено, так как установлен свежий образ CentOS.

Установка и настройка веб-сервера Nginx
Для установки свежей версии Nginx, подключим репозиторий разработчика, выполнив команду:
# rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
Или создав конфигурационный файл репозитория /etc/yum.repos.d/nginx.repo со следующим содержимым:
Если вы используете CentOS 8, измените версию в URL.
Установите пакет веб-сервера Nginx с помощью менеджера пакетов yum (или dnf):
# yum install nginx -y

Теперь можно запустить nginx и добавить его в автозагрузку с помощью systemctl:
# systemctl start nginx# systemctl enable nginx

Если у вас тестовая страница не открылась, проверьте настройки разрешенных служб, портов, зон в firewalld на своем сервере.
Настроим конфигурационный файл для отдельного домена build-centos.info. Создадим для сайта отдельную директорию и сам конфигурационный файл:
# mkdir -p /var/www/build-centos.info && mkdir -p /var/www/build-centos.info/log
Откроем файл конфигурации:
# nano /etc/nginx/conf.d/build-centos.info.conf
И добавим в него следующее содержимое:
Конфигурационный файл содержит настройки для доступа по защищенному протоколу https, так как многие популярные CMS в данный момент по умолчанию работают через него. В дальнейшем мы установим и настроим бесплатный SSL сертификат Let’s Encrypt (по аналогии с установкой Let’s Encrypt сертификата на IIS сайта в Windows Server).
Установка php-fpm и дополнительных модулей php
В Nginx нет встроенного обработчика PHP, поэтому мы должны установить php-fpm и ряд модулей php, которые будут использоваться для обработки PHP скриптов.
Php-fpm это очень легкий и быстрый менеджер процессов PHP. Он не использует HTTP протокол (как apache), и работает со специальным протоколом FastCGI. За счет легковесности и простоты FPM позволяет намного быстрее обрабатывать PHP запросы. При этом, в сравнении с аналогичной конфигурацией с apache, памяти будет использоваться намного меньше.
Nginx в свою очередь дает существенный выигрыш при отдаче статики. В нашей конфигурации ngnix будет выступать прокси-сервером (кэширующим и front-end сервером), а в качестве бэкенда будет работать php-fpm.
Для установки свежих версий php, используем репозиторий REMI:
# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
После установки, отредактируйте файл /etc/yum.repos.d/remi-php74.repo:

Запустите установку php-fpm и популярных модулей php:
# yum install php-fpm php-cli php-mysql php-gd php-ldap php-odbc php-pdo php-opcache php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap php-zip

Запустите сервис php-fpm и добавитье его в автозагрузку:
# systemctl start php-fpm# systemctl enable php-fpm
Чтобы проверить, запустился ли сервис, можно выполнить команду:
# lsof -i:9000
Сервис php-fpm нужно запустить через unix-сокет. В конфигурационном файле /etc/php-fpm.d/www.conf удалите строку listen = 127.0.0.1:9000 и добавьте:
listen = /var/run/php-fpm/php-fpm.sock
listen.mode = 0660
listen.owner = nginx
listen.group = nginx
Чтобы запускать php-fpm не от пользователя apache (по-умолчанию), укажите следующие параметры в конфигурационном файле:
После изменения конфигурационного php-fpm нужно перезапустить сервис:
# systemctl restart php-fpm
Установка Let’s Encrypt и подключение сертификата
Чтобы выпустить бесплатный сертификат Let’s Encrypt, нужно установить нужное certbot.
# yum install certbot
# certbot certonly
После запуска команды, вам нужно будет заполнить все данные, указав почтовый ящик, домен и так далее:
Чтобы сертификат был корректно выпущен, ваш домен должен быть существующим и направлен на соответствующий веб-сервер.
После выпуска сертификата, выполните перезагрузку веб-сервера nginx и проверье результат.
# systemctl restart nginx

Соединение в браузере защищено!
Для автоматического продление сертификатов измените конфигурационный файл /etc/letsencrypt/renewal/build-centos.info.conf следующим образом:
# renew_before_expiry = 30 daysversion = 0.18.1archive_dir = /etc/letsencrypt/archive/ build-centos.infocert = /etc/letsencrypt/live/build-centos.info/cert.pemprivkey = /etc/letsencrypt/live/build-centos.info/privkey.pemchain = /etc/letsencrypt/live/build-centos.info/chain.pemfullchain = /etc/letsencrypt/live/build-centos.info/fullchain.pem
После изменения файла, добавьте в крон задание:
30 2 * * * root /usr/bin/certbot renew —post-hook «nginx -s reload»
Чтобы проверить, что nginx работает с php, я создал файл index.php и добавил в него:

Установка MySQL/MariaDB на веб сервере
Данный шаг мы полностью пропустим, так как на сайте уже есть статья по установке и тюнингу MariaDB. Воспользуйтесь ей.

