Запуск приложения 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)

Как предотвратить выход из флеш-сервера? Когда я запускаю скрипт непосредственно с

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

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

2
задан 22 June 2017 в 01:41

6 ответов

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

chown ubuntu /home/ubuntu/my-server/script.py
chmod +x /home/ubuntu/my-server/script.py
0
ответ дан 22 May 2018 в 21:18

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

chown ubuntu /home/ubuntu/my-server/script.py chmod +x /home/ubuntu/my-server/script.py
0
ответ дан 18 July 2018 в 11:16

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

chown ubuntu /home/ubuntu/my-server/script.py chmod +x /home/ubuntu/my-server/script.py
0
ответ дан 24 July 2018 в 19:45

Не уверен, что это помогает, но это служебный файл, который я использую для управления фляжным приложением для личного проекта. Я думаю, что по умолчанию 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
1
ответ дан 22 May 2018 в 21:18

Не уверен, что это помогает, но это служебный файл, который я использую для управления фляжным приложением для личного проекта. Я думаю, что по умолчанию 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
1
ответ дан 18 July 2018 в 11:16

Не уверен, что это помогает, но это служебный файл, который я использую для управления фляжным приложением для личного проекта. Я думаю, что по умолчанию 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
1
ответ дан 24 July 2018 в 19:45

Другие вопросы по тегам:

Похожие вопросы: