Flask Education App Курс 'Hello, DevOps!
Для развертывания этого учебного приложения тебе потребуется сделать несколько действий:
- перейти на правильный сервер базы (зависит от задания)
- установить движок БД
- настроить доступ для нужного пользователя
- перейти на правильный сервер приложений (зависит от задания)
- установить библиотеки, которые потребуются для Python
- установить git, чтобы склонировать исходный код приложения
- подтянуть зависимости приложения
- выставить настройки приложения в
.env
-файле, согласно заданию - проверить работоспособность приложения и запусить его в производственном веб-сервере
- перейти на правильный сервер балансировщика (зависит от задания)
- настроить установить и настроить балансировщик
ssh db01
curl -L https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm -O
sudo dnf install -y mysql80-community-release-el9-1.noarch.rpm
sudo dnf install -y mysql-server
sudo systemctl start mysqld
sudo systemctl enable mysqld
sudo cat /var/log/mysqld.log
mysql -uroot -p
ALTER USER "root"@"localhost" IDENTIFIED BY "DBs123!@#";
CREATE USER "produser"@"localhost" IDENTIFIED BY "rea11yStrongAndl0ngPass#ord";
GRANT ALL PRIVILEGES ON shop.* TO "produser"@"localhost";
‼️ Пользователь и база в задании могут быть другими!
ssh produser@srv01
sudo yum -y install gcc python-devel mysql-devel
sudo yum -y install git
git clone https://github.com/rotoro-cloud/ecommerce-flask-stripe.git
sudo mv ecommerce-flask-stripe/ /opt/ecommerce-flask-stripe/
sudo chown -R regularuser:regularuser /opt/ecommerce-flask-stripe/
su regularuser
cd /opt/ecommerce-flask-stripe/
pip install -r requirements.txt
cp env.sample .env
vi .env
🖊️ Исправь данные на те, которые раньше установил в
MySQL
flask run --host="0.0.0.0" --port="9090"
‼️ Сделайcurl localhost:9090
, если он загружает страницу, значит связь с базой настроена верно.
gunicorn run:app
‼️ Сделайcurl localhost:5005
, если он загружает страницу, значит связь с базой настроена верно.
‼️ Следуй этому шаблону для файла/etc/systemd/system/ecommerce.service
[Unit]
Description=Gunicorn-server for ecommerce
After=network.target
[Service]
User=regularuser
WorkingDirectory=/opt/ecommerce-flask-stripe/
ExecStart=/home/regularuser/.local/bin/gunicorn run:app
[Install]
WantedBy=multi-user.target
sudo systemctl start ecommerce
sudo systemctl enable ecommerce
sudo dnf install nginx;
Настраиваем Nginx. Файл настроек есть в репо проекта в папке nginx
, его нужно скопировать на машину с балансировщиком или создать вручную
vi /etc/nginx/conf.d/appseed-app.conf
upstream webapp {
server localhost:5005;
}
server {
listen 8000;
server_name localhost;
location / {
proxy_pass http://webapp;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
‼️ server localhost:5005;
в одночной компоновке нужно изменить наserver app01:5005;
в распределенной
sudo systemctl enable nginx --now
< PROJECT ROOT >
|
|-- app/__init__.py
|-- app/
| |-- static/
| | |-- <css, JS, images> # CSS files, Javascripts files
| |
| |-- templates/
| | |
| | |-- includes/ # Page chunks, components
| | | |-- navigation.html # Top bar
| | | |-- sidebar.html # Left sidebar
| | | |-- scripts.html # JS scripts common to all pages
| | | |-- footer.html # The common footer
| | |
| | |-- layouts/ # App Layouts (the master pages)
| | | |-- base.html # Used by common pages like index, UI
| | | |-- base-fullscreen.html # Used by auth pages (login, register)
| | |
| | |-- products/ # Define your products here
| | | |-- nike-goalkeeper-match.json # Sample product
|
|-- requirements.txt
|
|-- run.py
|
|-- ************************************************************************
- Flask Framework - The official website
- Stripe Dev Tools - official docs