Назад | Перейти на главную страницу

systemctl start работает, но systemctl enable не работает с ошибкой realpath ()

Я пытаюсь настроить простую службу 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