Приложение Flask + uWSGI + nginx в CentOS8: UWSGI (service) не загружает приложение
Подскажите, как решить такую проблему:
Сервер UWSGI, запускаемый сервисом (service), сообщает:
*** no app loaded. going in full dynamic mode ***
и соответственно браузер выдает "Internal server error"
При этом запуск UWSGI из командной строки (в том числе в виртуальном окружении -
source /path/to/venv/bin/activate) командой:
uwsgi --ini runner.ini
проходит нормально - мое приложение загружается
WSGI app 0 (mountpoint='') ready in 1 seconds on interpreter 0x1178740 pid: 1167 (default app)
и в браузере все работает как надо.
Приложение размещено:
~/myapp/app
__init__.py
views.py
...
/static
/templates
...
config.py
runner.py
wsgi.py
runner.ini
/myappenv/bin
...
runner.ini
[uwsgi]
module = wsgi:app
master = true
processes = 5
socket = runner.sock
chmod-socket = 660
vacuum = true
die-on-term = true
runner.service в /etc/systemd/system/
[Unit]
Description=uWSGI instance to serve runner
After=network.target
[Service]
User=root
Group=root
WorkingDirectory=/home/pavlik/myapp
Environment="PATH=/home/pavlik/myapp/myappenv/bin"
ExecStart=/home/pavlik/myapp/myappenv/bin/uwsgi --ini runner.ini
[Install]
WantedBy=multi-user.target
wsgi.py
from runner import app
if __name__ == "__main__":
app.run()
runner.py
from app import app
import os
from flask_script import Manager, Shell
manager = Manager(app)
def make_shell_context():
return dict(app=app)
manager.add_command('shell', Shell(make_context=make_shell_context))
if __name__ == '__main__':
manager.run()
init.py
rom flask import Flask
from flask_script import Manager, Command, Shell
import os, config
app = Flask(__name__)
app.config.from_object(os.environ.get('FLASK_ENV') or 'config.DevelopementConfig')
from . import views
config.py
mport os
app_dir = os.path.abspath(os.path.dirname(__file__))
class BaseConfig:
SECRET_KEY = os.environ.get('SECRET_KEY') or 'A SECRET KEY'
class DevelopementConfig(BaseConfig):
DEBUG = False
class TestingConfig(BaseConfig):
DEBUG = False
class ProductionConfig(BaseConfig):
DEBUG = True
views.py
from app import app
import config
import re, datetime, random
from datetime import datetime, date, time
from flask import render_template, request, redirect, url_for, flash, make_response, session
from .forms import PhysPoForm, FirePoForm, FightPoForm, PsiPoForm
from .utils import res_to_score, save_to_db
from werkzeug.datastructures import MultiDict
@app.route('/')
def index():
... ...
Делал как написано в https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-uswgi-and-nginx-on-ubuntu-18-04-ru - service UWSGI работает - приложение загружает, в браузере отображается
Подозреваю, что c моим приложением что-то не так с импортом и/или с путями к папкам приложения, но разобраться не могу :(