Согласно топи c
https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-gunicorn-and-nginx-on-ubuntu-18-04
Мне удалось запустить мой app.py вручную, используя
gunicorn --bind 0.0.0.0:5000 wsgi:app
Но когда я попытался сделать служба для автозапуска Gunicorn, я не смог этого сделать.
Я создал /etc/systemd/system/telegram_bot.service:
[Unit]
Description=Gunicorn instance to serve telegram_bot
After=network.target
[Service]
User=victor
Group=www-data
WorkingDirectory=/home/victor/bot/bot/telegram_bot
Environment="PATH=/home/victor/bot/bot/env/bin"
ExecStart=/home/victor/bot/bot/env/bin/gunicorn --workers 3 --bind unix:app.sock -m 007 wsgi:app
[Install]
WantedBy=multi-user.target
Attibutes:
-rw-r - r--. 1 Виктор www-data 352 26 марта 15:17 telegram_bot.service
Структура проекта:
/ home / victor /
---------- ------- бот /
--------------------- бот /
------------ ------------- env /
------------------------- telegram_bot /
- ----------------------------------------- app.py
--- ---------------------------------------- wsgi.py
app .py и wsgi.py как в этой топи c.
-rwxr-xr-x. 1 Виктор Виктор 162 25 марта 14:26 app.py
-rwxr-xr-x. 1 victor victor 58 24 марта 22:08 wsgi.py
После команды
sudo systemctl start telegram_bot
я получаю сообщение:
● telegram_bot.service - Gunicorn instance to serve telegram_bot
Loaded: loaded (/etc/systemd/system/telegram_bot.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Thu 2020-03-26 17:00:21 MSK; 6s ago
Process: 17059 ExecStart=/home/victor/bot/bot/env/bin/gunicorn --workers 3 --bind unix:app.sock -m 007 wsgi:app (code=exited, status=203/EXEC)
Main PID: 17059 (code=exited, status=203/EXEC)
Mar 26 17:00:21 CentOS7x64 systemd[1]: Started Gunicorn instance to serve telegram_bot.
Mar 26 17:00:21 CentOS7x64 systemd[1]: telegram_bot.service: main process exited, code=exited, status=203/EXEC
Mar 26 17:00:21 CentOS7x64 systemd[1]: Unit telegram_bot.service entered failed state.
Mar 26 17:00:21 CentOS7x64 systemd[1]: telegram_bot.service failed.
Я просмотрел journalctl и обнаружил:
Mar 26 16:36:28 CentOS7x64 sudo[16665]: victor : TTY=pts/0 ; PWD=/home/victor/bot/bot/telegram_bot ; USER=root ; COMMAND=/bin/systemctl start telegram_bot
Mar 26 16:36:28 CentOS7x64 sudo[16665]: pam_unix(sudo:session): session opened for user root by victor(uid=0)
Mar 26 16:36:28 CentOS7x64 polkitd[646]: Registered Authentication Agent for unix-process:16667:103892680 (system bus name :1.745 [/usr/bin/pkttyagent --notify-fd 5 --fallback], object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale en_US.UTF-8)
Mar 26 16:36:28 CentOS7x64 systemd[1]: Started Gunicorn instance to serve telegram_bot.
Mar 26 16:36:28 CentOS7x64 sudo[16665]: pam_unix(sudo:session): session closed for user root
Mar 26 16:36:28 CentOS7x64 polkitd[646]: Unregistered Authentication Agent for unix-process:16667:103892680 (system bus name :1.745, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale en_US.UTF-8) (disconnected from bus)
Mar 26 16:36:28 CentOS7x64 systemd[16673]: Failed at step EXEC spawning /home/victor/bot/bot/env/bin/gunicorn: Permission denied
Mar 26 16:36:28 CentOS7x64 systemd[1]: telegram_bot.service: main process exited, code=exited, status=203/EXEC
Mar 26 16:36:28 CentOS7x64 systemd[1]: Unit telegram_bot.service entered failed state.
Mar 26 16:36:28 CentOS7x64 systemd[1]: telegram_bot.service failed.
Я искал решение в течение двух дней. Что я пропустил?
CentOS 7