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

14

Estou tentando seguir este tutorial para configurar uWSGIcom Djangoe nginxem Ubuntu16.04.

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

sudo service uwsgi start

Se falhar com o seguinte erro:

Falha ao iniciar o uwsgi.service: Unidade uwsgi.service não encontrada.

Outros parecem receber um erro semelhante:

Falha ao iniciar o uwsgi.service: Falha ao carregar a unidade uwsgi.service: esse arquivo ou diretório não existe.

O problema parece estar relacionado à versão do Ubuntu. Embora esse tutorial seja voltado para o Ubuntu 14.04, parece que não funcionará para versões mais recentes, porque na versão 15 o Ubuntu mudou do upstartdaemon init para o systemddaemon init .

Como usar o systemduWSGI para que ele funcione com o nginx e o Django?

Vlad Schnakovszki
fonte

Respostas:

27

A primeira modificação necessária é no /etc/uwsgi/sites/firstsite.iniarquivo. A única alteração necessária é substituir as permissões de 664para 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 systemdem vez de upstart, o seguinte arquivo está não é necessário e pode ser removido:/etc/init/uwsgi.conf

Terceiro , criamos o seguinte systemdscript 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 systemd init com este novo serviço uWSGI a bordo

sudo systemctl daemon-reload

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

sudo systemctl start uwsgi

Para iniciar uWSGIa reinicialização, você também precisará de:

sudo systemctl enable uwsgi

Você pode usar o seguinte para verificar seu status:

systemctl status uwsgi

Alguns detalhes adicionais podem ser encontrados aqui .

Vlad Schnakovszki
fonte
1
Como você faz o systemd usar um python virtualenv? Quando eu corro, systemctl status uwsgieu recebo ImportError: No module named site.
tlng05
2
épico ..... eu estava lutando por tanto tempo com isso .... obrigado pela solução passo a passo fácil e direta que você escreveu aqui. +1
Rakib 30/08/16
1
Eu usei-o algumas vezes, muito resposta útil
jozi
0

Para contornar esse erro: sudo systemctl daemon-reloado carregamento do arquivo uwsgi.service recém-criado .

Para tornar o início do serviço em cada reinicialização: sudo systemctl enable uwsgi.

Alexandr Karbivnichiy
fonte