Хостинг веб-приложений на AWS EC2

Существует множество способов размещения веб-приложения в среде AWS. Ваше веб-приложение может быть традиционным веб-сайтом или API-проектом. Оба типа далее будут называться «веб-приложением» (web app).
Введение
Существует множество способов размещения веб-приложения в среде AWS. Ваше веб-приложение может быть традиционным веб-сайтом или API-проектом. Оба типа далее будут называться «веб-приложением» (web app). Ниже перечислены некоторые способы, которые мы можем применить для размещения веб-приложения в AWS:
- Хостинг веб-приложения в S3 bucket
- Хостинг веб-приложения в контейнерах ECS, EKS или Fargate
- Хостинг веб-приложения с Elastic Beanstalk
- Хостинг веб-приложения напрямую на EC2
[!NOTE] Хотя варианты 1, 2 и 3 являются современными подходами к размещению контента в AWS, в этой статье мы обращаемся к тем, кто много работал со старыми системами, но хочет перейти в среду AWS со своими прежними привычками!Наша цель — быстро представить поток Route53, Application Load Balancer, Security Groups и т.д. вместе с EC2.
В этой статье мы рассмотрим последний вариант. Для EC2 доступно множество операционных систем. Мы будем использовать Linux с минимальной конфигурацией, доступный в рамках «Free Tier» (Бесплатный уровень). Для получения дополнительной информации о AWS Free Tier нажмите сюда.
Amazon EC2 можно использовать напрямую для размещения веб-приложения. В этой статье пошагово объясняются все шаги, необходимые для выполнения такой задачи.
Предварительные знания
- Amazon Security Group (Группа безопасности)
- Amazon EC2
- Amazon Load Balancer (Балансировщик нагрузки)
- Amazon Route53
Что мы будем делать?
Базовая архитектура может выглядеть следующим образом:

Изображение-001: Общий вид системы
Допустим, ваша цель — разместить свой веб-сайт на машине AWS EC2. Для простоты приложения статическая HTML-страница будет опубликована на веб-сервере Apache в AWS EC2. Мы сделаем возможным доступ к папке
www Apache по умолчанию через FTP. В дополнение к этим требованиям, доменное имя будет направлено на это веб-приложение через AWS Route53.Для проектирования архитектуры, показанной на Изображении-001, мы будем создавать элементы AWS в порядке номеров в серых кругах.
Допустим, наш домен —
WELR.com, и мы хотим разместить его рабочие элементы на EC2.Все шаги для размещения контента
WELR.com на AWS EC2 могут быть следующими.Шаг 1: Создание группы безопасности в AWS
Эта группа безопасности будет использоваться для EC2. Группу безопасности можно рассматривать как файрвол объекта, к которому она прикреплена.
Настройте все входящие (inbound) порты, как показано ниже:
- 20-21 (FTP)
- 1024-1048 (FTP), опционально
- 22 (SSH)
- 80 (HTTP)
- 8080 (HTTP кастомный), опционально
- 443 (HTTPS)
Красный прямоугольник на изображении ниже важен для демонстрации потока от ALB к EC2 через соответствующие группы безопасности.

Изображение-002: Входящие (inbound) правила SG-for-EC2-for-WELR
Шаг 2: Создание инстанса EC2
Создание инстанса EC2 в AWS — простая операция. Кнопка Connect (Подключиться) в правом верхнем углу изображения ниже будет использоваться для подключения к EC2.

Изображение-003: EC2-for-WELR
Установите все необходимые компоненты на EC2-for-WELR.
Прежде всего, вы должны подключиться к командной строке EC2. Существует множество способов сделать это, но самый простой — подключиться напрямую через веб-консоль AWS.

Изображение-004: Подключение к EC2-for-WELR
После нажатия кнопки Connect вы подключитесь к командной строке EC2 как
ec2-user.2.1 - Установка Apache
TEXT
> sudo s
> yum update -
> yum install -y httpd.x86_6
> systemctl start httpd.servic
> systemctl enable httpd.service
Все файлы веб-приложения будут находиться в папке веб-каталога Apache по умолчанию.
Папка веб-каталога по умолчанию для Apache —
/var/www/html.2.2 - Установка FTP
TEXT
> sudo su
> yum update -y
> yum install vsftpd
> sudo vi /etc/vsftpd/vsftpd.conf
Вам необходимо внести некоторые изменения, показанные ниже, в файл конфигурации FTP.
Все эти строки должны присутствовать в файле конфигурации так, как показано. Вы должны знать, как использовать редактор
vi. Если вы впервые используете редактор vi, обратитесь сюда.TEXT
# удалите символы # во всех следующих строках
anonymous_enable=NO
#
local_enable=YES
#
write_enable=YES
#
local_umask=022
#
dirmessage_enable=YES
#
xferlog_enable=YES
#
connect_from_port_20=YES
#
chroot_local_user=YES
write_enable=YES
allow_writeable_chroot=YES
#
listen=NO
#
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
pasv_address=18.170.116.xxx
Для перезапуска сервиса
vsftpd можно использовать один из следующих вариантов:TEXT
> /etc/init.d/vsftpd restart
ИЛИ:
TEXT
> systemctl restart vsftpd
Для добавления пользователя для FTP выполните следующее в командной строке EC2:
TEXT
> adduser awsftpuse
> passwd awsftpuse
> usermod -a -G root awsftpuser
> usermod -d /var/www/html/ awsftpuse
> chown -R awsftpuser /var/www/htm
> systemctl restart vsftpd
2.3 - Установка FTP-клиента
Например, клиент Filezilla на Windows.
После создания всех элементов в AWS попробуйте подключиться с помощью FTP-клиента и загрузить файл. Вы должны иметь возможность загрузить файл
index.html в веб-папку FTP на EC2.Шаг 3: Создание группы безопасности для ALB
Настройте все входящие (inbound) порты, как показано ниже:
- 20-21 (FTP)
- 1024-1048 (FTP), опционально
- 22 (SSH)
- 80 (HTTP)
- 8080 (HTTP кастомный), опционально
- 443 (HTTPS)

Изображение-005: Входящие (inbound) правила SG-for-ALB-for-WELR
Шаг 4: Создание Target Group

Изображение-006: Target Group TG-for-WELR
Шаг 5: Создание Application Load Balancer
Этот ALB должен иметь целевую группу
TG-for-WELR.Target group (Целевая группа) — это группа EC2. Однако сейчас она содержит только инстанс
EC2-for-WELR.Кроме того, этот ALB должен иметь группу безопасности
SG-for-ALB-for-WELR.Изображение-007: Application Load Balancer ALB-for-WELR

Шаг 6: Разрешения между группами безопасности
Добавьте входящие (inbound) правила в
SG-for-EC2-for-WELR для приёма всех TCP-запросов от SG-for-ALB-for-WELR.
Изображение-008: Разрешение потока от ALB к EC2 через группы безопасности
Шаг 7: Создание Hosted Zone в Route53
Должно быть четыре записи (record), как показано ниже:
- NS и SOA создаются автоматически
- Создайте запись A, как показано на изображении ниже
- Создайте запись CNAME — для
welr.com
Изображение-009 - Записи Route53

NS-адреса можно использовать в интерфейсе управления доменным именем для направления домена на веб-приложение, размещённое в Apache на EC2.
Заключение
Как указано в начале этой статьи, существует множество способов размещения веб-приложения в любой облачной среде. Мы провели некоторые исследования на AWS EC2. Как видно, мы предполагаем, что рабочие элементы веб-приложения развёрнуты вручную на Apache через FTP. Однако этот процесс можно автоматизировать с помощью любого инструмента CI/CD, используя FTP-команды.
Основная цель этой статьи — показать, как веб-приложение размещается в среде AWS на EC2 за Route53 и балансировщиками нагрузки (Load Balancers).
Что мы изучили:
- Создание и настройка инстанса EC2
- Установка веб-сервера Apache
- Настройка FTP и добавление пользователя
- Настройки группы безопасности
- Настройка Application Load Balancer
- Направление домена с помощью Route53
☁️ Услуги облачных вычислений
Мы предоставляем услуги по проектированию инфраструктуры, миграции, управлению и оптимизации на платформах AWS, Azure и Google Cloud.
Посмотреть наши услуги📞 Свяжитесь с нами
Свяжитесь с нашей командой для получения подробной информации о наших решениях AWS и облачных вычислений.
Контакты