Usando o Flask, o NGINX e o uWSGI, configurei com êxito a configuração de um aplicativo para o qual envio e recebo mensagens de texto pelo Twilio. Tudo está funcionando perfeitamente, exceto que está sendo executado em minha conta de usuário pessoal (chamada trinitrogen). Eu gostaria de movê-lo para fugir de uma conta de usuário diferente (aplicativos nomeados), mas estou tendo problemas com o arquivo de unidade do systemd. O grande ponto crucial de minhas dificuldades é que não consigo encontrar um bom registro de qualquer erro, então não sei por onde começar
Primeiro, baseei meu trabalho em este tutorial teve sucesso principalmente com o que foi compartilhado
Eu criei o novo usuário e o adicionei à roda
[apps@argon ~]$ groups
apps wheel
Clonou o repo no diretório home dos apps, configurou um virtualenv chamado venv dentro do diretório, instalou todos os pacotes python, testou com sucesso o uwsgi na linha de comando
[apps@argon PowderMonitor]$ uwsgi --socket 10.0.0.221:8080 --protocol=http -w wsgi:app
Funciona muito bem. Eu segui para a configuração do arquivo systemd, mas é aqui que eu bati na parede. Abaixo está o arquivo atual, junto com a saída depois de tentar reiniciar o serviço.
[apps@argon PowderMonitor]$ cat /etc/systemd/system/TwilioApp.service
[Unit]
Description=uWSGI - TwilioApp - apps acccount
After=network.target
[Service]
User=apps
Group=nginx
WorkingDirectory=/home/apps/PowderMonitor
Environment="PATH=/home/apps/PowderMonitor/venv/bin"
ExecStart=/home/apps/PowderMonitor/venv/bin/uwsgi --ini TwilioApp.ini
[Install]
WantedBy=multi-user.target
[apps@argon PowderMonitor]$ sudo systemctl restart TwilioApp.service
[apps@argon PowderMonitor]$ sudo systemctl status TwilioApp.service -l
● TwilioApp.service - uWSGI - TwilioApp - apps acccount
Loaded: loaded (/etc/systemd/system/TwilioApp.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Fri 2017-04-14 16:35:52 CDT; 3s ago
Process: 3420 ExecStart=/home/apps/PowderMonitor/venv/bin/uwsgi --ini TwilioApp.ini (code=exited, status=1/FAILURE)
Main PID: 3420 (code=exited, status=1/FAILURE)
Apr 14 16:35:52 argon.xxx systemd[1]: Started uWSGI - TwilioApp - apps acccount.
Apr 14 16:35:52 argon.xxx systemd[1]: Starting uWSGI - TwilioApp - apps acccount...
Apr 14 16:35:52 argon.xxx systemd[1]: TwilioApp.service: main process exited, code=exited, status=1/FAILURE
Apr 14 16:35:52 argon.xxx systemd[1]: Unit TwilioApp.service entered failed state.
Apr 14 16:35:52 argon.xxx systemd[1]: TwilioApp.service failed.
[apps@argon PowderMonitor]$
Abaixo está um exemplo do arquivo TwilioApp.service que funciona perfeitamente sob minha conta trinitrogen. Observe que a única coisa que eu mudei no User e nos 3 diretórios
[trinitrogen@argon PowderMonitor]$ cat TwilioApp.service.example
[Unit]
Description=uWSGI instance to serve TwilioApp
After=network.target
[Service]
User=trinitrogen
Group=nginx
WorkingDirectory=/home/trinitrogen/Python/PowderMonitor
Environment="PATH=/home/trinitrogen/Python/PowderMonitor/venv/bin"
ExecStart=/home/trinitrogen/Python/PowderMonitor/venv/bin/uwsgi --ini TwilioApp.ini
[Install]
WantedBy=multi-user.target
Abaixo está o TwilioApp.ini que é usado para o uwsgi, é exatamente o mesmo entre a versão que eu rodei com sucesso em minha conta "trinitrogen" e minha conta "apps".
[apps@argon PowderMonitor]$ cat TwilioApp.ini
[uwsgi]
module = wsgi:app
master = true
processes = 5
socket = TwilioApp.sock
chmod-socket = 664
vacuum = true
#location of log files
logto = /var/log/uwsgi/TwilioApp.log
die-on-term = true