Развертывание сайта с использованием LEMP
В разделе описано, как создать простой сайт с использованием стека LEMP. На виртуальной машине будет развернут веб-сервер Nginx и СУБД MySQL. Чтобы получить публичное доменное имя и сертификат для сайта, используется бесплатный сервис nip.io.
Перед началом работы
-
Если вы уже зарегистрированы, войдите под своей учетной записью.
Убедитесь, что вам назначена сервисная роль eiv.admin или роль администратора проекта. При необходимости настройте права или запросите их у администратора.
Создайте группу безопасности
Группы безопасности в облаке Evolution позволяют контролировать входящий и исходящий трафик для создаваемых ресурсов. В правилах группы безопасности необходимо разрешить доступ к виртуальной машине по протоколу HTTPS, а также весь исходящий трафик.
На верхней панели слева нажмите
и выберите Сеть → Группы безопасности.
Нажмите Создать группу безопасности.
В поле Зона доступности выберите «ru.AZ-1».
Укажите название группы безопасности — «sg-lemp».
Добавьте правила входящего и исходящего трафика.
В блоке Правила входящего трафика нажмите Добавить правило.
Создайте правило со следующими параметрами:
Протокол — «TCP».
Порт — «443».
Тип источника — «IP-адрес».
Источник — «0.0.0.0/0».
В блоке Правила исходящего трафика нажмите Добавить правило.
Создайте правило со следующими параметрами:
Протокол — «Любой».
Порт — оставьте пустым.
Тип источника — «IP-адрес».
Источник — «0.0.0.0/0».
Нажмите Создать.
Создайте виртуальную машину с веб-сервером
На верхней панели слева нажмите
и выберите Инфраструктура → Виртуальные машины.
Нажмите Создать виртуальную машину.
Введите название виртуальной машины — «lemp-server».
В поле Зона доступности выберите «ru.AZ-1».
В блоке Образ перейдите на вкладку Маркетплейс и выберите образ «LEMP».
Укажите конфигурацию вычислительных ресурсов:
Гарантированная доля vCPU — 10%.
vCPU, шт — «1».
RAM, ГБ — «2».
Нажмите Продолжить.
Назначьте ВМ публичный IP-адрес:
Оставьте включенной опцию Подключить публичный IP.
В поле Группы безопасности выберите группу «sg-lemp».
Настройте параметры авторизации пользователя.
В поле Имя пользователя введите логин пользователя виртуальной машины: например, «cloud-user».
Выберите пароль в качестве метода аутентификации.
Укажите пароль пользователя.
Нажмите Создать.
В строке созданной ВМ скопируйте и сохраните адрес из столбца Публичный IP: он потребуется для дальнейшей настройки.
Настройте Nginx
Сервер Nginx обрабатывает запросы пользователей к сайту.
Выберите виртуальную машину «lemp-server» в списке.
Перейдите на вкладку Серийная консоль.
Введите логин и пароль, указанные при создании виртуальной машины.
Обновите пакеты ОС. В серийной консоли выполните команды:
sudo apt updatesudo apt upgradeДля обработки скриптов установите менеджер процессов PHP-FPM:
sudo apt install php8.1-fpmСоздайте новый конфигурационный файл:
sudo nano /etc/nginx/sites-available/mysiteДобавьте в файл конфигурацию виртуального сервера, заменив <public_ip> на публичный IP-адрес виртуальной машины «lemp-server»:
server {listen 80;server_name <public_ip>.nip.io;root /var/www/html/mysite;index index.php index.html index.htm;location / {try_files $uri $uri/ =404;}location ~ \.php$ {include snippets/fastcgi-php.conf;fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;}location ~ /\.ht {deny all;}}Добавьте ссылку на конфигурационный файл в каталоге sites-enabled:
sudo ln -s /etc/nginx/sites-available/mysite /etc/nginx/sites-enabled/Проверьте, что в конфигурации Nginx нет ошибок:
sudo nginx -tЧтобы применить настройки, перезапустите Nginx:
sudo systemctl restart nginx
Настройте базу данных MySQL
В базе данных будут храниться записи, которые добавляются через форму на сайте.
Подключитесь к MySQL:
sudo mysql -u root -pСоздайте новую базу данных. Выполните построчно следующие команды:
CREATE DATABASE mydatabase;USE mydatabase;CREATE TABLE entries (id INT AUTO_INCREMENT PRIMARY KEY,content TEXT NOT NULL);Создайте пользователя db_user:
CREATE USER 'db_user'@'localhost' IDENTIFIED BY '<user_password>';GRANT ALL PRIVILEGES ON mydatabase.* TO 'db_user'@'localhost';FLUSH PRIVILEGES;EXIT;Где <user_password> — пароль пользователя.
Настройте сайт
Сайт состоит из одной страницы с простой формой для добавления записей.
Создайте корневой каталог сайта:
sudo mkdir -p /var/www/html/mysiteУстановите права доступа:
sudo chown -R $USER:$USER /var/www/html/mysitesudo chmod -R 755 /var/www/html/mysiteСоздайте стартовую страницу сайта:
sudo nano /var/www/html/mysite/index.phpВставьте на страницу код, заменив <user_password> на пароль пользователя базы данных, созданного на предыдущем шаге:
<?php$conn = new mysqli("localhost", "db_user", "<user_password>", "mydatabase");if ($conn->connect_error) {die("Connection failed: " . $conn->connect_error);}if ($_SERVER["REQUEST_METHOD"] == "POST") {$content = $_POST["content"];$stmt = $conn->prepare("INSERT INTO entries (content) VALUES (?)");$stmt->bind_param("s", $content);$stmt->execute();$stmt->close();}$result = $conn->query("SELECT * FROM entries");?><!DOCTYPE html><html><head><title>Simple LEMP Site</title></head><body><h1>Add a New Record</h1><form method="post"><textarea name="content" rows="4" cols="50"></textarea><br><input type="submit" value="Submit"></form><h2>Entries</h2><ul><?php while ($row = $result->fetch_assoc()): ?><li><?php echo htmlspecialchars($row['content']); ?></li><?php endwhile; ?></ul></body></html><?php$conn->close();?>
Настройте доменное имя
Для создания доменного имени и SSL-сертификата используется сервис nip.io. Также вы можете использовать собственный домен и SSL-сертификат.
Подготовьте доменное имя вида <public_ip>.nip.io, где <public_ip> — публичный IP-адрес виртуальной машины «lemp-server».
Установите утилиту для формирования SSL-сертификата и запустите ее:
sudo apt install certbot python3-certbot-nginxsudo certbot --nginx -d <public_ip>.nip.io --register-unsafely-without-emailОткройте браузер и перейдите по адресу <public_ip>.nip.io.
Результат
При переходе по адресу вашего сайта откроется форма с заголовком «Add a New Record» и кнопкой «Submit» для добавления записей. Добавленные записи отображаются в списке «Entries» под формой.
- Перед началом работы
- Создайте группу безопасности
- Создайте виртуальную машину с веб-сервером
- Настройте Nginx
- Настройте базу данных MySQL
- Настройте сайт
- Настройте доменное имя
- Результат