Giter Site home page Giter Site logo

suaicloudapp-public's Introduction

SUAI Cloud App

Структура репозитория

  • README.md - файл, который вы сейчас читаете;
  • suaicloudapp - веб-приложение;
  • config.toml - файл конфигурации веб-приложения, написанный в нотации TOML.

Конфигурация приложения

Для корректной работы приложения необходимо выполнить настройку файла конфигурации.

Структура файла конфигурации

  • student - идентификационные данные студента
    • name - полное имя студента
    • group - группа студента
    • number - порядковый номер студента
  • server - параметры веб-серера
    • host - ip-адрес запуска сервера (0.0.0.0 для того, чтобы сервер принимал запросы с любых адресов)
    • port - порт, на котором будет работать сервер (8080 по умолчанию)
  • aws - параметры окружения AWS
    • region - регион выполнения работы
  • s3 - параметры S3
    • bucket - имя 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-инстанс.

Развертывание приложения на облачной платформе AWS

Настройка окружения

Для корректной работы приложения необходимо подготовить окружение:

  • VPC
  • S3 bucket
  • IAM Role
  • RDS

VPC

VPC должна содержать по крайней мере одну публичную подсеть для развертывания самого приложения и не менее двух приватных подсетей, расположенных в различных зонах доступности (AZ) для развертывания базы данных.

S3 bucket

S3 bucket должен быть приватным и содержать в себе само приложение и настроенный файл конфигурации.

IAM Role

Роль, применяемая для EC2 машин, на которых будет запускаться приложение, должна содержать следующие политики доступа:

  • read only доступ к S3 bucket, в котором содержится приложение и файл конфигурации
  • read only доступ ко всем сервисам EC2 (для сбора приложением информации о сетевом окружении)
  • read only доступ ко всем сервисам RDS (для сбора приложением информации о базе данных)

Политики, закрепленные за данной ролью не должны давать доступ к ресурсам, необходимость в которых отсутствует.

RDS

Приложение рассчитано на работу с СУБД mysql. Также, нет необходимости в использовании шифорвания и создании бекапов. Доступ к RDS должен быть возможнен только внутри VPC.

EC2 инстанс

Приложение подготовлено для запуска на 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 check

На странице /database можно выполнить проверку подключения к указанной в файле конфигурации базе данных. Сообщение OK символизирует о корректном подключении.

S3 check

На странице /s3 можно выполнить проверку доступа к S3 bucket, указанному в файле конфигурации. Сообщение OK символизирует о наличии доступа.

Health check

На странице /health можно выполнить проверку работоспособности веб-сервера. Сообщение healthy символизирует о корректности работы приложения. Эту страницу можно использовать для health check в группе масштабирования.

Logs

На странице /logs можно получить логи сервера. Логи могут быть полезными для определения проблем, возникших при работе приложения.

suaicloudapp-public's People

Contributors

1k1ru avatar nenashev-sa avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.