68 lines
1.9 KiB
Bash
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 "=== ГОТОВО ==="
|