CentOS 8. Установка LEMP

Устанавливаем Centos 8 и вебсервер на базе стека LEMP (Linux, Nginx, Mysql, PHP). В данном руководстве используется MariaDB вместо Mysql.
Итак, приступим. Заходим в терминал Centos 8 и начинаем установку стека с обновления самой системы:

yum update

После этого создадим пользователя admin с добавлением в группу администраторов:

adduser admin -G wheel

Создадим пароль:

passwd admin

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

yum install mariadb-server

Добавим в автозагрузку и запустим сам сервис:

systemctl enable mariadb.service
systemctl start mariadb.service

Проводим начальную настройку MariaDB:

mysql_secure_installation

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

yum install nginx

Добавим в автозагрузку и запустим сам сервис:

systemctl enable nginx.service
systemctl start nginx.service

Откроем получение трафика для http и https в файрволе:

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

Проверяем в браузере работу Nginx по адресу http://ВашIP
3) Установка PHP 7.4
Подключаем дополнительные репозитории EPEL и REMI:

yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
yum install https://rpms.remirepo.net/enterprise/remi-release-8.rpm

Выводим список доступных веток php:

yum module list php

Включаем для php ветку remi-7.4. Можете включать такую, какую необходимо.

yum module enable php:remi-7.4

Устанавливаем php и основные модули:

yum install php php-mysqlnd php-pdo php-gd php-mbstring php-fpm

Открываем файл конфигурации php-fpm: /etc/php-fpm.d/www.conf
находим там параметры и меняем значения на следующие:

user = nginx
group = nginx
В этом же файле для хранения сессий в PHP необходимо указать папку /tmp
php_value[session.save_path] = /tmp

Я же сделал хранение сессий в оперативной памяти. Открываем файл /etc/fstab и добавляем там строку:
tmpfs /ramtmp tmpfs noatime,nodiratime,nodev,nosuid,size=256M 0 0
После перезагрузки системы в ОЗУ будет создаваться раздел объемом 256 Мб и монтироваться в точку /ramtmp. Его размер зависит от посещаемости сайта, объема одной сессии и подбирается индивидуально. В итоге параметр примет следующее значение:
php_value[session.save_path] = /ramtmp
Делать это вовсе необязательно (большинству достаточно стандартного механизма хранения сессий), особенно если мало ОЗУ.

Добавим в автозагрузку и запустим php-fpm:

systemctl enable php-fpm.service
systemctl start php-fpm.service

Перезапускаем Nginx:

systemctl restart nginx.service


4) Проверка работы
Создаем файл info.php в каталоге /usr/share/nginx/html/
Код файла:

<?php
echo ‘<center><h1>Random value’.rand(1,200000).'</h1></center>’;
phpinfo();
?>

Запускаем в браузере скрипт http://ВашIP/info.php и видим случайное число + информацию о php.

5) Создание сайта и получение сертификата Let’s Encrypt
Создаем папку www в корне сервера и устанавливаем ее владельца пользователя admin:

mkdir /www
chown -R admin:admin /www

Входим в терминал под именем admin и создаем в каталоге www нужные вам папки для сайтов (к примеру: site1, site2 и т.д.). В этом примере создадим поддомен pma.yousite.ru для phpmyadmin и получим на него сертификат.
Создаем папку и распаковываем туда phpmyadmin (скачайте дистрибутив на официальном сайте):

mkdir /www/pma

Далее проводим все действия переключившись на root.
Открываем файл /etc/nginx/nginx.conf и находим секцию server. Меняем там 2 параметра:

server_name=pma.yousite.ru
root=/www/pma

Перезапускаем Nginx:

systemctl restart nginx.service

В итоге должен открываться phpmyadmin по адресу pma.yousite.ru (имя сайта как вы понимаете у вас будет свое).

Получение сертификата достаточно просто сделать по официальным рекомендациям на сайте https://certbot.eff.org/lets-encrypt/centosrhel8-nginx

yum install certbot python3-certbot-nginx
certbot --nginx
systemctl restart nginx.service

Первая команда установит сервис управления сертификатами certbot, вторая команда запускает процедуру получения сертификата в диалоговом режиме и перенастраивает ваш /etc/nginx/nginx.conf на использование 443 ssl порта.

6) Прочие мелочи
Меняем порт ssh для уменьшения попыток перебора паролей (номер порта можете придумать свой). Открываем файл /etc/ssh/sshd_config и указываем там параметр port 888. Далее открываем порт в фаерволе:

firewall-cmd --zone=public --permanent --add-port=888/tcp
firewall-cmd --reload

Создаем базу данных (имя базы, пользователя и пароль придумайте свои):

mysql -u root -p
create database mybase;
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';
GRANT ALL PRIVILEGES ON mybase.* TO 'myuser'@'localhost';
exit;


Оставьте ответ

Ваш адрес email не будет опубликован.