Я не могу запустить Gunicorn как службу - PullRequest
0 голосов
/ 26 марта 2020

Согласно топи 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

...