LEMP — это стек программного обеспечения, используемый для разработки и развёртывания веб-приложений. Он обеспечивает высокую производительность и способен обрабатывать множество одновременных соединений благодаря использованию Nginx. LEMP широко используется для создания как статических, так и динамических сайтов, обеспечивая гибкость в выборе языков программирования и инструментов.
LEMP является альтернативой стека LAMP и включает в себя следующие компоненты:
После чего установите веб-сервер Nginx:
Когда установка закончится, запустите веб-сервер:
Затем установите службу Nginx в автозагрузку, чтобы веб-сервер автоматически стартовал при загрузке системы:
Состояние Nginx можно проверить при помощи следующей команды:
Вывод данной команды, как правило, выглядит примерно так, как на скриншоте ниже:
Чтобы получить доступ к сайту, размещённому на сервере, необходимо добавить в брандмауэр разрешающее правило для протокола HTTP.
Список всех настроек и правил брандмауэра можно отобразить, выполнив команду:
По умолчанию протокол HTTP отсутствует в списке разрешённых сервисов.
Чтобы добавить его туда, запустите следующую команду:
Для применения изменений, внесённых в настройки брандмауэра, перезагрузите его конфигурацию:
После этого вы сможете проверить работоспособность установленного веб-сервера, набрав в навигационной строке браузера адрес вида
, где замените X.X.X.X на IP-адрес виртуального сервера.
Поскольку никакой сайт на сервере пока не размещён, браузер должен отобразить тестовую страницу веб-сервера.
После того, как установка завершится, запустите MariaDB:
Затем установите MariaDB в автозагрузку:
Проверить состояние службы СУБД можно при помощи команды:
Также, проверить корректность установки можно с помощью команды, которая должна вывести версию MariaDB:
Далее следует повысить уровень безопасности установки MariaDB. Следующая команда запускает пошаговый скрипт, который помогает настроить безопасные параметры СУБД.
Во-первых, если не был задан пароль для административного пользователя СУБД, которым является
Если пароль уже существует, вы сможете изменить его. Во-вторых, скрипт предложит удалить анонимных пользователей, поскольку это представляет риск безопасности.
Далее скрипт предложит отключить возможность подключения к СУБД для пользователя
Затем установите пакет репозитория Remi:
Для управления версиями PHP с использованием репозитория Remi установите утилиту
На момент написания статьи актуальной версией PHP является версия 8.3.
Для её установки сначала сбросьте текущие настройки модуля PHP:
После сброса активируйте нужную версию. В нашем случае — это PHP 8.3:
Затем установите непосредственно PHP:
Поскольку PHP работает через PHP-FPM, следующей командой запустите службу PHP-FPM:
Затем установите её в автозапуск:
Состояние службы можно посмотреть с помощью команды:
Следующей командой можно вывести на экран версию PHP:
И там создайте файл
После чего откройте созданный файл при помощи текстового редактора vi:
И внесите в него следующий текст:
Затем закройте файл, сохранив внесённые в него изменения, после чего проверьте конфигурацию Nginx на наличие ошибок:
Если ошибок нет, вывод команды будет выглядеть следующим образом:
После чего перезапустите Nginx:
Затем откройте браузер и перейдите по адресу
, где замените X.X.X.X на IP-адрес своего сервера. В результате браузер должен отобразить тестовую страницу PHP.
После тестирования рекомендуется удалить файл
Где создайте новый конфигурационный файл Nginx. В данном случае замените
Откройте созданный файл для редактирования
После чего добавьте в файл следующий блок, где также замените
Сохраните внесённые в файл изменения, закройте его и перейдите в директорию /var/www/:
В данной директории создайте каталог с именем, соответствующим доменному имени размещаемого сайта:
Установите права доступа на созданный каталог:
Затем перейдите в данный каталог:
И там создайте файл стартовой страницы сайта:
Откройте файл index.php для редактирования:
В нашем примере стартовая страница будет сформирована при помощи следующего кода:
После чего закройте файл, сохранив изменения, и проверьте синтаксис Nginx:
Перезапустите службу Nginx, если предыдущая команда не выявила никаких ошибок:
В итоге вы уже сможете открыть страницу сайта, перейдя по адресу http://your-domain.host, где замените your-domain.host на имя своего сайта.
Выполните следующую команду для получения сертификата для вашего домена, где замените
Во время выполнения Certbot попросит вас выбрать вариант перенаправления HTTP на HTTPS.
Рекомендуется выбрать вариант с автоматическим перенаправлением.
Сертификаты Let’s Encrypt действительны 90 дней, но их можно автоматически обновлять с помощью cron:
Для автоматического обновления вставьте следующую строку:
После чего добавьте в брандмауэр разрешающее правило для протокола HTTPS:
Затем перезапустите конфигурацию брандмауэра:
На данном этапе вы уже сможете протестировать доступность страницы сайта при помощи подключения с использованием протокола HTTPS.
Теперь, когда мы разобрали, как установить LEMP на CentOS Stream 9, вы можете загрузить файлы вашего сайта в директорию, соответствующую каталогу /var/www/your-domain.host в нашем примере. Для загрузки контента на сервер используйте SFTP, SCP или другие методы.
LEMP является альтернативой стека LAMP и включает в себя следующие компоненты:
- Linux — операционная система, на которой будет работать стек;
- Nginx — веб-сервер, который обрабатывает HTTP-запросы и отвечает на них;
- MariaDB или MySQL — системы управления базами данных (СУБД), используемые для хранения данных веб-приложений;
- PHP (или другие языки программирования, такие как Python или Ruby) — язык программирования, который обрабатывает динамический контент веб-приложений.
Как установить LEMP на CentOS Stream 9
В статье разберём, как установить LEMP на виртуальный выделенный сервер, работающий под управлением CentOS Stream 9, и разместить на нём сайт. В нашем примере стек LEMP будет состоять из Linux, Nginx, MariaDB и PHP.Установка Nginx
Перед установкой нового программного обеспечения рекомендуется обновить список установленных пакетов до их последних доступных версий в репозиториях:
Bash:
sudo dnf update
Bash:
sudo dnf install nginx
Bash:
sudo systemctl start nginx
Bash:
sudo systemctl enable nginx
Bash:
systemctl status nginx
Чтобы получить доступ к сайту, размещённому на сервере, необходимо добавить в брандмауэр разрешающее правило для протокола HTTP.
Список всех настроек и правил брандмауэра можно отобразить, выполнив команду:
Bash:
sudo firewall-cmd --permanent --list-all
Чтобы добавить его туда, запустите следующую команду:
Bash:
sudo firewall-cmd --permanent --add-service=http
Bash:
sudo firewall-cmd --reload
Поскольку никакой сайт на сервере пока не размещён, браузер должен отобразить тестовую страницу веб-сервера.
Установка MariaDB
Следующий шаг — установка и первоначальная настройка СУБД. Чтобы установить MariaDB, выполните команду:
Bash:
sudo dnf install mariadb-server mariadb
Bash:
sudo systemctl start mariadb
Bash:
sudo systemctl enable mariadb
Bash:
systemctl status mariadb
Также, проверить корректность установки можно с помощью команды, которая должна вывести версию MariaDB:
Bash:
mysql -V
Далее следует повысить уровень безопасности установки MariaDB. Следующая команда запускает пошаговый скрипт, который помогает настроить безопасные параметры СУБД.
Во-первых, если не был задан пароль для административного пользователя СУБД, которым является
[COLOR=rgb(226, 80, 65)]root[/COLOR]
, скрипт предложит его установить. Если пароль уже существует, вы сможете изменить его. Во-вторых, скрипт предложит удалить анонимных пользователей, поскольку это представляет риск безопасности.
Далее скрипт предложит отключить возможность подключения к СУБД для пользователя
[COLOR=rgb(226, 80, 65)]root[/COLOR]
с удалённых хостов, а также удалить тестовую базу данных и перезагрузить таблицы привилегий, чтобы изменения сразу вступили в силу.
Bash:
sudo mysql_secure_installation
Установка PHP
Следующий этап — установка последней версии PHP. Для этого в нашем примере мы используем репозиторий Remi. Сначала установите пакет EPEL — репозиторий, содержащий дополнительные пакеты, которые не входят в стандартные репозитории Red Hat.
Bash:
sudo dnf install epel-release
Bash:
sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
dnf-utils
:
Bash:
sudo dnf install dnf-utils
Для её установки сначала сбросьте текущие настройки модуля PHP:
Bash:
sudo dnf module reset php
Bash:
sudo dnf module enable php:remi-8.3
Bash:
sudo dnf install php php-fpm php-mysqlnd
Bash:
sudo systemctl start php-fpm
Bash:
sudo systemctl enable php-fpm
Bash:
systemctl status php-fpm
Следующей командой можно вывести на экран версию PHP:
Bash:
php -v
Тестирование работы PHP
Чтобы протестировать работу PHP, перейдите к директории /usr/share/nginx/html/:
Bash:
cd /usr/share/nginx/html
info.php
:
Bash:
sudo touch info.php
Bash:
sudo vi info.php
PHP:
<?php
phpinfo();
?>
Bash:
sudo nginx -t
После чего перезапустите Nginx:
Bash:
sudo systemctl restart nginx
После тестирования рекомендуется удалить файл
info.php
по соображениям безопасности:
Bash:
cd /usr/share/nginx/html
sudo rm info.php
Запуск сайта
Чтобы разместить на сервере страницу сайта, перейдите в каталог/etc/nginx/conf.d/
:
Bash:
cd /etc/nginx/conf.d
your-domain.host
на доменное имя своего сайта:
Bash:
sudo touch your-domain.host.conf
Bash:
sudo vi your-domain.host.conf
your-domain.host
на доменное имя сайта:
Код:
server {
listen 80;
server_name your-domain.host www.your-domain.host;
root /var/www/your-domain.host;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
deny all;
}
}
Bash:
cd /var/www
Bash:
sudo mkdir -p your-domain.host
Bash:
sudo chown -R nginx:nginx your-domain.host
sudo chmod -R 755 your-domain.host
Bash:
cd /var/www/your-domain.host
Bash:
sudo touch index.php
Bash:
sudo vi index.php
PHP:
<p>Ваш сайт - your-domain.host</p>
<p>Сайт <b>your-domain.host</b> размещён на CentOS Stream 9</p>
Bash:
sudo nginx -t
Bash:
sudo systemctl restart nginx
Установка SSL-сертификата (опционально)
Чтобы обеспечить безопасность сайта, рекомендуется настроить для него SSL-сертификат. Для получения бесплатного сертификата можно использовать Let’s Encrypt. Для этого установите пакет Certbot, который позволяет автоматизировать получение SSL-сертификата, и плагин python3-certbot-nginx:
Bash:
sudo dnf install certbot python3-certbot-nginx
your-domain.host
на доменное имя своего сайта. Во время выполнения Certbot попросит вас выбрать вариант перенаправления HTTP на HTTPS.
Рекомендуется выбрать вариант с автоматическим перенаправлением.
Bash:
sudo certbot --nginx -d your-domain.host -d www.your-domain.host
Bash:
sudo crontab -e
Bash:
0 0 * * * /usr/bin/certbot renew --quiet
Bash:
sudo firewall-cmd --permanent --add-service=https
Bash:
sudo firewall-cmd --reload
Теперь, когда мы разобрали, как установить LEMP на CentOS Stream 9, вы можете загрузить файлы вашего сайта в директорию, соответствующую каталогу /var/www/your-domain.host в нашем примере. Для загрузки контента на сервер используйте SFTP, SCP или другие методы.