Я пытаюсь настроить простую службу uwsgi с именем project
на Vagrant, Ubuntu 16.04. Он должен запустить простое приложение Flask, с которым может взаимодействовать Nginx.
Я могу заставить службу работать при запуске systemctl start project
, но не удается запустить службу после загрузки с systemctl enable project
.
Вот мой project.ini
:
[uwsgi]
module = wsgi:app
master = true
processes = 5
socket = /tmp/project.sock
uid = ubuntu
gid = ubuntu
chmod-socket = 666
vacuum = true
die-on-term = true
logto = /tmp/project.log
Вот мой /etc/systemd/system/project.service
:
[Unit]
Description=uWSGI instance to serve project
After=network.target
[Service]
User=vagrant
Group=vagrant
WorkingDirectory=/home/vagrant/flask_trial
Environment="PATH=.:/home/vagrant/bin:/home/vagrant/.local/bin:/home/vagrant/anaconda3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
ExecStart=/home/vagrant/anaconda3/bin/uwsgi --ini /home/vagrant/flask_trial/project.ini
[Install]
WantedBy=multi-user.target
Бег systemctl status project
после загрузки дает:
Sep 12 05:26:08 vagrant systemd[1]: Started uWSGI instance to serve project.
Sep 12 05:26:09 vagrant systemd[1]: project.service: Main process exited, code=exited, status=1/FAILURE
Sep 12 05:26:09 vagrant systemd[1]: project.service: Unit entered failed state.
Sep 12 05:26:09 vagrant systemd[1]: project.service: Failed with result 'exit-code'.
Бег journalctl | grep project
дает:
Sep 12 05:26:08 vagrant systemd[1]: Started uWSGI instance to serve project.
Sep 12 05:26:09 vagrant uwsgi[1123]: realpath() of /home/vagrant/flask_trial/project.ini failed: No such file or directory [core/utils.c line 3618]
Sep 12 05:26:09 vagrant systemd[1]: project.service: Main process exited, code=exited, status=1/FAILURE
Sep 12 05:26:09 vagrant systemd[1]: project.service: Unit entered failed state.
Sep 12 05:26:09 vagrant systemd[1]: project.service: Failed with result 'exit-code'.
Я подозреваю одну из двух проблем: разрешения для файлов, поскольку Google показывает, что люди часто не могут получить их правильно, или путь, поскольку realpath () не работает.
Разрешение на flask_trial
является
drwxrwxr-x 1 vagrant vagrant 272 Sep 12 04:50 flask_trial
Для всех файлов внутри него:
-rwxrwxr-x 1 vagrant vagrant 185 Sep 11 02:59 main.py
-rwxrwxr-x 1 vagrant vagrant 189 Sep 12 04:50 project.ini
-rwxrwxr-x 1 vagrant vagrant 70 Sep 11 03:47 wsgi.py
Я включаю услугу с servicectl enable project
, без sudo
, так что пользователь должен быть vagrant
.
С подозрением на проблему с путями, поскольку похоже, что uwsgi не может найти файл project.ini, я попытался изменить ExecStart на любой из них:
ExecStart=/home/vagrant/anaconda3/bin/uwsgi --ini /home/vagrant/flask_trial/project.ini
ExecStart=/home/vagrant/anaconda3/bin/uwsgi --ini project.ini
ExecStart=/home/vagrant/anaconda3/bin/uwsgi --ini ./project.ini
Ничего из вышеперечисленного, похоже, не работает для загрузки, хотя все работает с systemctl start
. Действительно потерял здесь и был бы признателен за некоторые комментарии.
Хорошо, озвучивание своих проблем другим действительно поможет вам взглянуть на проблему под другим углом.
В этом не было ничего плохого systemctl
Вот. Проблема заключалась в том, что мой проект / flask_trial был общей папкой Vagrant, которая, по-видимому, была связана с системой ПОСЛЕ systemctl
беги - так systemctl
не мог найти .ini
файл. Я такой глупый.
Когда я понял, в чем моя проблема, я понял, какие вопросы задавать, и вот хорошее решение: https://serverfault.com/a/838390/435122