README.md
- файл, который вы сейчас читаете;suaicloudapp
- веб-приложение;config.toml
- файл конфигурации веб-приложения, написанный в нотации TOML.
Для корректной работы приложения необходимо выполнить настройку файла конфигурации.
student
- идентификационные данные студентаname
- полное имя студентаgroup
- группа студентаnumber
- порядковый номер студента
server
- параметры веб-серераhost
- ip-адрес запуска сервера (0.0.0.0
для того, чтобы сервер принимал запросы с любых адресов)port
- порт, на котором будет работать сервер (8080
по умолчанию)
aws
- параметры окружения AWSregion
- регион выполнения работы
s3
- параметры S3bucket
- имя S3 bucket
database
- параметры подключения к БДhost
- адрес подключенияport
- порт подключенияuser
- имя пользователяpassword
- парольdbname
- имя базы данных
Пример конфигурации:
[student]
name = 'Vitalii Mikhailichenko'
group = '4140M'
number = '7'
[server]
host = '0.0.0.0'
port = 8080
[aws]
region = 'eu-central-1'
[s3]
bucket = 'suaicloudbucket'
[database]
host = 'database-1.clhbct1n77at.eu-central-1.rds.amazonaws.com'
port = 3306
user = 'admin'
password = '12345678'
dbname = 'suai'
Предполагается, что после внесения изменений данный файл конфигурации будет загружен в S3 bucket, с которого и будет автоматически скачан на ec2-инстанс.
Для корректной работы приложения необходимо подготовить окружение:
- VPC
- S3 bucket
- IAM Role
- RDS
VPC должна содержать по крайней мере одну публичную подсеть для развертывания самого приложения и не менее двух приватных подсетей, расположенных в различных зонах доступности (AZ) для развертывания базы данных.
S3 bucket должен быть приватным и содержать в себе само приложение и настроенный файл конфигурации.
Роль, применяемая для EC2 машин, на которых будет запускаться приложение, должна содержать следующие политики доступа:
- read only доступ к S3 bucket, в котором содержится приложение и файл конфигурации
- read only доступ ко всем сервисам EC2 (для сбора приложением информации о сетевом окружении)
- read only доступ ко всем сервисам RDS (для сбора приложением информации о базе данных)
Политики, закрепленные за данной ролью не должны давать доступ к ресурсам, необходимость в которых отсутствует.
Приложение рассчитано на работу с СУБД mysql
. Также, нет необходимости в использовании шифорвания и создании бекапов. Доступ к RDS должен быть возможнен только внутри VPC.
Приложение подготовлено для запуска на Amazon Linux 2
(но не ограничено им).
Для запуска прпиложения необходимо подготовить файл конфигурации в соответствии с примером конфигурации, описанным выше. В случае ручного развертывания приложения (подключения к машине по SSH
), это можно осуществить, например, с помощью текстового редактора:
sudo nano config.toml
После редактирования файла конфигурации можно выполнить исполняемый файл suaicloudapp, тем самым запустив приложение:
./suaicloudapp
При отсутствии прав для запуска приложения, может помочь команда:
chmod +rwx suaicloudapp
Полный скрипт автоматического развертывания приложения (при условии, что само приложение и файл конфигурации размещены в S3 bucket) может выглядеть так:
#!/bin/bash
sudo mkdir /suaicloudapp
cd /suaicloudapp/
sudo aws s3 sync s3://${bucket}/ .
sudo chmod +rwx suaicloudapp
./suaicloudapp
Перед выполнением скрипта необходимо заменить ${bucket}
на название вашего S3 bucket или задать данной переменной значение, например так:
bucket=suaicloudbucket
Для получения доступа к веб-интерфейсу приложения необходимо открыть порт, указанный в файле конфигурации.
Логгирование осуществляется в файл output.log
, из которого можно будет получить информацию о работе приложения, ошибках и сообщениях вывода.
Получить доступ к веб-интерфейсу приложения можно перейдя по публичному адресу машины (или балансировщика) с указанием порта. Например: 52.59.111.129:8080
.
На странице /database
можно выполнить проверку подключения к указанной в файле конфигурации базе данных. Сообщение OK
символизирует о корректном подключении.
На странице /s3
можно выполнить проверку доступа к S3 bucket, указанному в файле конфигурации. Сообщение OK
символизирует о наличии доступа.
На странице /health
можно выполнить проверку работоспособности веб-сервера. Сообщение healthy
символизирует о корректности работы приложения. Эту страницу можно использовать для health check
в группе масштабирования.
На странице /logs
можно получить логи сервера. Логи могут быть полезными для определения проблем, возникших при работе приложения.