Files

68 lines
1.9 KiB
Bash

#!/bin/bash
# Деплой Elmer на obdai.ru
# ВНИМАНИЕ: запускать НА СЕРВЕРЕ (5.172.178.213), не локально!
set -e
echo "=== Обновление репо ==="
cd /opt/elmer || { echo "Репозиторий не найден, клонируем..."; git clone https://gitea.services.ngcloud.ru/Nail/elmer.git /opt/elmer; cd /opt/elmer; }
git checkout master
git pull origin master
echo "=== Виртуальное окружение ==="
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
pip install gunicorn
echo "=== Systemd сервис ==="
sudo cat > /etc/systemd/system/elmer.service << 'UNIT'
[Unit]
Description=Elmer Flask API
After=network.target
[Service]
User=naeel
WorkingDirectory=/opt/elmer
ExecStart=/opt/elmer/venv/bin/gunicorn -w 4 -b 127.0.0.1:8000 web.app:app
Restart=always
[Install]
WantedBy=multi-user.target
UNIT
echo "=== Nginx ==="
sudo cat > /etc/nginx/sites-available/elmer << 'NGX'
server {
listen 80;
server_name obdai.ru www.obdai.ru ai.obdai.ru test.obdai.ru;
location /static/ {
alias /opt/elmer/web/static/;
}
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
NGX
sudo ln -sf /etc/nginx/sites-available/elmer /etc/nginx/sites-enabled/
sudo rm -f /etc/nginx/sites-enabled/default
sudo nginx -t && sudo systemctl reload nginx
echo "=== SSL (первичная настройка, потом не трогает) ==="
sudo certbot --nginx -d obdai.ru -d www.obdai.ru --non-interactive --agree-tos -m tazet@narod.ru || true
echo "=== Запуск ==="
sudo systemctl daemon-reload
sudo systemctl enable elmer
sudo systemctl restart elmer
sudo systemctl restart nginx
echo "=== ПРОВЕРКА ==="
curl -s https://obdai.ru/api/v1/ping
echo ""
echo "=== ГОТОВО ==="