Развертывание приложения flask + gunicorn + nginx на сервере
Пытаюсь развернуть скрипт для автодеплоя моего приложения через Github Webhooks, но никак не получается, его не видно "извне". Само приложение, для которого я делаю этот автодеплой развернуто в докере и работает, деплоер я хочу развернуть без докера.
Код app.py
import logging
import hashlib
import hmac
import subprocess
import threading
import traceback
from flask import Flask, request, abort
from dotenv import dotenv_values
logging.basicConfig(
format='%(levelname)s: %(asctime)s %(message)s', level=logging.DEBUG,
filename='logs.log', encoding='utf-8'
)
env_values = dotenv_values('.env')
app = Flask(__name__)
@app.route('/github-webhook', methods=['POST'])
def github_webhook():
# Some code
...
if __name__ == "__main__":
app.run()
Сервис для запуска gunicorn
[Unit]
Description=Simple App Deployer
After=network.target
[Service]
WorkingDirectory=/root/apps/simple-deployer
Environment="PATH=/root/.local/share/virtualenvs/simple-deployer-qILX_TkP/bin"
ExecStart=/bin/bash /root/apps/simple-deployer/service.sh
[Install]
WantedBy=multi-user.target
Он стартует баш скрипт, который просто запускает gunicorn
#!/bin/bash
gunicorn -w 1 -b 0.0.0.0:9000 --capture-output --log-level debug
--access-logfile /root/apps/simple-deployer/access.log
--error-logfile /root/apps/simple-deployer/errors.log app:app
Сервис стартует, локально "досягаем" и работает

Проверял через curl -X POST 127.0.0.1:9000/github-webhook - ответ есть
Конфиг nginx лежит в /etc/nginx/conf.d/
server {
listen 80;
access_log /var/log/nginx/deployer.access.log;
error_log /var/log/nginx/deployer.error.log;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:9000;
}
}
nginx -t проходит
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Итог
У меня нет идей, в чем может быть проблема. Особо опыта в развертывании нет, поэтому не ясно, куда смотреть и что проверять
UPD:
Как оказалось, я обращался к серверу через порт: http://url:9000/, а приложение развернулось, конечно же, на 80 порту и доступ к нему есть напрямую через http://url/. Есть варианты сделать так, чтобы доступ был через порт 9000?
