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

Подробное руководство по хостингу веб-приложений на AWS EC2, установке Apache, настройке FTP, интеграции Load Balancer и Route53.

N
Necmettin Demir
21 июля 2023 г.
Загрузка...

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

AWS EC2 Web Hosting
AWS EC2 Web Hosting
Существует множество способов размещения веб-приложения в среде AWS. Ваше веб-приложение может быть традиционным веб-сайтом или API-проектом. Оба типа далее будут называться «веб-приложением» (web app).

Введение

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

Предварительные знания

Что мы будем делать?

Базовая архитектура может выглядеть следующим образом:
Архитектура системы
Архитектура системы
Изображение-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 через соответствующие группы безопасности.
Inbound правила
Inbound правила
Изображение-002: Входящие (inbound) правила SG-for-EC2-for-WELR

Шаг 2: Создание инстанса EC2

Создание инстанса EC2 в AWS — простая операция. Кнопка Connect (Подключиться) в правом верхнем углу изображения ниже будет использоваться для подключения к EC2.
Создание EC2
Создание EC2
Изображение-003: EC2-for-WELR
Установите все необходимые компоненты на EC2-for-WELR.
Прежде всего, вы должны подключиться к командной строке EC2. Существует множество способов сделать это, но самый простой — подключиться напрямую через веб-консоль AWS.
Подключение к EC2
Подключение к EC2
Изображение-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)
ALB Inbound правила
ALB Inbound правила
Изображение-005: Входящие (inbound) правила SG-for-ALB-for-WELR

Шаг 4: Создание Target Group

Target Group
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
Создание ALB
Создание ALB

Шаг 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
Записи Route53
Записи 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 и облачных вычислений.

Контакты