С помощью этого руководства вы создадите простой сайт с использованием стека LEMP.
Вы будете использовать следующие сервисы:
Виртуальные машины — сервис, в рамках которого предоставляется виртуальная машина, на которой будет развернут веб-сервер Nginx и СУБД MySQL.
Публичный IP-адрес для доступа к сервису через интернет.
Бесплатный сервис nip.io для получения публичного доменного имени и сертификата. Вы также можете использовать собственное зарегистрированное доменное имя и SSL-сертификат для организации доступа.
Nginx — веб-сервер для проксирования запросов и организации защищeнного HTTPS-доступа к приложению.
Let’s Encrypt — сервис для автоматического получения бесплатного SSL-сертификата.
Шаги:
Перед началом работы
-
Если вы уже зарегистрированы, войдите под своей учетной записью.
Убедитесь, что вам назначена сервисная роль eiv.admin или роль администратора проекта. При необходимости настройте права или запросите их у администратора.
1. Разверните ресурсы в облаке
На этом шаге вы подготовите группу безопасности и виртуальную машину.
Создайте группу безопасности с названием sg-lemp в зоне доступности ru.AZ-1 и добавьте в нее правила:
Трафик
Протокол
Порт
Тип источника/адресата
Источник/Адресат
Входящий
TCP
443
IP-адрес
0.0.0.0/0
Исходящий
Любой
Оставьте пустым
IP-адрес
0.0.0.0/0
Создайте виртуальную машину со следующими параметрами:
Название — lemp-server.
Зона доступности — ru.AZ-1.
Образ — на вкладке Маркетплейс выберите образ LEMP.
Сетевой интерфейс — выберите тип Подсеть с публичным IP.
Публичный IP — оставьте Арендовать новый или выберите IP-адрес из списка арендованных.
Группы безопасности — добавьте sg-lemp.
Имя пользователя — cloud-user.
Метод аутентификации — Пароль
Пароль — задайте пароль пользователя.
В строке созданной ВМ скопируйте и сохраните адрес из столбца Публичный IP: он потребуется для дальнейшей настройки.
2. Настройте 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
3. Настройте базу данных 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> — пароль пользователя.
4. Настройте сайт
Сайт состоит из одной страницы с простой формой для добавления записей.
Создайте корневой каталог сайта:
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();?>
5. Настройте доменное имя
Для создания доменного имени и 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.
При переходе по адресу вашего сайта откроется форма для добавления записей. Добавленные записи отображаются в списке под формой.
Результат
Вы развернули сайт с использованием стека LEMP и обеспечили безопасный доступ к нему через Nginx.
- Перед началом работы
- 1. Разверните ресурсы в облаке
- 2. Настройте Nginx
- 3. Настройте базу данных MySQL
- 4. Настройте сайт
- 5. Настройте доменное имя
- Результат