Запуск приложения Flask при запуске с systemd

У меня есть следующий сервис systemd для запуска моего приложения фляги:

[Unit]
Description=My Flask server
After=network.target

[Service]
User=ubuntu
ExecStart=/home/ubuntu/my-server/script.py
WorkingDirectory=/home/ubuntu/my-server/
Restart=on-failure
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Тем не менее, когда я бегу

systemctl start my-server.service

Я получаю следующий статус

my-server.service - My Flask server
   Loaded: loaded (/etc/systemd/system/my-server.service; enabled; vendor preset: enabled)
   Active: active (exited) (Result: exit-code) since Wed 2017-06-21 22:24:18 UTC; 8min ago
 Main PID: 8407 

(code=exited, status=203/EXEC)

Как я могу предотвратить выход сервера Flask? Когда я запускаю скрипт напрямую с

/home/ubuntu/my-server/script.py

это работает отлично. Но если я запускаю его с помощью systemd, сервер сразу выходит.

2 ответа

Решение

Исправлена ​​моя собственная проблема. Мне пришлось изменить владельца файла, чтобы он соответствовал сценарию systemd, а затем сделать его исполняемым:

chown ubuntu /home/ubuntu/my-server/script.py
chmod +x /home/ubuntu/my-server/script.py

Не уверен, поможет ли это, но это служебный файл, который я использую для управления колб-приложением для личного проекта. Я думаю, что по умолчанию systemd запустит скрипт с оболочкой / bin / sh без персонализаций. Возможно, вы захотите попробовать переключиться в оболочку / bin / sh и запустить вашу команду. Возможно, отсутствует переменная среды.

Файл объекта по ссылке:

[Unit]
Description=Persistent Transactions API
After=syslog.target network.target electrum.service

[Service]
User=percy
Group=percy
ExecStart=/bin/bash -c "source /opt/persist_transaction/bin/activate ; /opt/persist_transaction/api.py -c /opt/persist_transaction/config.ini"
Restart=always

[Install]
WantedBy=multi-user.target
Другие вопросы по тегам