Ligando o uWSGI para trabalhar com Django e nginx no Ubuntu 16.04

12

Estou tentando seguir este tutorial para configurar uWSGI com Django e nginx em Ubuntu 16.04 .

Tudo funciona bem até o último passo (oh a ironia ...) onde eu tento executar este comando:

sudo service uwsgi start

Se falhar com o seguinte erro:

Failed to start uwsgi.service: Unit uwsgi.service not found.

Outros parecem ter um erro semelhante:

Failed to start uwsgi.service: Unit uwsgi.service failed to load: No such file or directory.

O problema parece estar relacionado à versão do Ubuntu. Embora esse tutorial tenha como objetivo o Ubuntu 14.04, parece que ele não funcionará para versões mais recentes porque na versão 15 o Ubuntu mudou do daemon upstart init para o daemon systemd init .

Como posso usar o systemd para iniciar o uWSGI para que ele funcione com o nginx e o Django?

    
por Vlad Schnakovszki 10.05.2016 / 23:16

2 respostas

24

A primeira modificação necessária é para o arquivo /etc/uwsgi/sites/firstsite.ini . A única alteração necessária é substituir as permissões de 664 a 666 . O script ficaria assim:

[uwsgi]
project = firstsite
base = /home/user

chdir = %(base)/%(project)
home = %(base)/Env/%(project)
module = %(project).wsgi:application

master = true
processes = 5

socket = %(base)/%(project)/%(project).sock
chmod-socket = 666
vacuum = true

Em segundo lugar , como estamos usando systemd em vez de upstart , o seguinte arquivo não é necessário e pode ser removido: /etc/init/uwsgi.conf

Terceiro , criamos o seguinte script systemd em /etc/systemd/system/uwsgi.service :

[Unit]
Description=uWSGI Emperor service
After=syslog.target

[Service]
ExecStart=/usr/local/bin/uwsgi --emperor /etc/uwsgi/sites
Restart=always
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=all

[Install]
WantedBy=multi-user.target

Atualize o estado do sistema init systemd com este novo serviço uWSGI on board

sudo systemctl daemon-reload

Para iniciar o script, você precisará executar o seguinte:

sudo systemctl start uwsgi

Para iniciar o uWSGI na reinicialização, você também precisará:

sudo systemctl enable uwsgi

Você pode usar o seguinte para verificar seu status:

systemctl status uwsgi

Alguns detalhes adicionais podem ser encontrados aqui .

    
por 10.05.2016 / 23:16
0

Para contornar esse erro: sudo systemctl daemon-reload para o recém-criado arquivo uwsgi.service a ser carregado.

Para iniciar o serviço em cada reinicialização: sudo systemctl enable uwsgi .

    
por 04.08.2016 / 10:16