Executando um aplicativo Flask na inicialização com o systemd

2

Eu tenho o seguinte serviço systemd para executar meu aplicativo de balão:

[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

No entanto, quando eu corro

systemctl start my-server.service

Eu recebo o seguinte status

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)

Como evito que o servidor do Flask seja encerrado? Quando eu corro o script diretamente com

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

funciona bem. Mas se eu executar com o systemd, o servidor sai imediatamente.

    
por k26dr 22.06.2017 / 00:41

2 respostas

0

Corrigido meu próprio problema. Eu tive que mudar o dono do arquivo para combinar com o script systemd e então torná-lo executável:

chown ubuntu /home/ubuntu/my-server/script.py
chmod +x /home/ubuntu/my-server/script.py
    
por k26dr 26.10.2017 / 20:20
2

Não tenho certeza se isso ajuda, mas este é o arquivo de serviço que uso para controlar uma aplicação de balão para um projeto pessoal. Acho que, por padrão, o systemd irá executar um script com um shell / bin / sh sem personalizações. Você pode querer tentar mudar para um shell / bin / sh e executar o seu comando. Pode haver uma variável de ambiente ausente.

Arquivo de unidade do link:

[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
    
por Christopher 24.06.2017 / 21:05