Cablare uWSGI per lavorare con Django e nginx su Ubuntu 16.04


14

Sto cercando di seguire questo tutorial per impostare uWSGIcon Djangoe nginxsu Ubuntu16.04.

Funziona tutto bene fino all'ultimo passo (oh l'ironia ...) in cui provo ad eseguire questo comando:

sudo service uwsgi start

Se fallisce con il seguente errore:

Impossibile avviare uwsgi.service: unità uwsgi.service non trovata.

Altri sembrano avere un errore simile:

Impossibile avviare uwsgi.service: impossibile caricare l'unità uwsgi.service: nessun file o directory.

Il problema sembra essere correlato alla versione di Ubuntu. Mentre quel tutorial è rivolto a Ubuntu 14.04, sembra che non funzionerà per le versioni più recenti perché nella versione 15 Ubuntu è passato dal upstartdemone init al systemddemone init .

Come posso usare systemdper avviare uWSGI in modo che funzioni con nginx e Django?

Risposte:


27

La prima modifica necessaria è al /etc/uwsgi/sites/firstsite.inifile. L'unica modifica necessaria è la sostituzione delle autorizzazioni da 664a 666. Lo script sarebbe simile al seguente:

[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

In secondo luogo , poiché stiamo utilizzando systemdpiuttosto che upstart, il seguente file non è necessario e può essere rimosso:/etc/init/uwsgi.conf

Terzo , creiamo il seguente systemdscript su /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

Aggiorna lo stato del sistema init system con questo nuovo servizio uWSGI a bordo

sudo systemctl daemon-reload

Per avviare lo script devi eseguire quanto segue:

sudo systemctl start uwsgi

Per iniziare uWSGIal riavvio, avrai anche bisogno di:

sudo systemctl enable uwsgi

È possibile utilizzare quanto segue per verificarne lo stato:

systemctl status uwsgi

Alcuni ulteriori dettagli possono essere trovati qui .


1
Come si fa a systemd usare un virtualenv di Python? Quando corro systemctl status uwsgiottengo ImportError: No module named site.
tlng05,

2
epico ..... ho lottato per così tanto tempo con questo .... grazie per la semplice e semplice soluzione passo-passo che hai scritto qui. +1
Rakib,

1
L'ho usato alcune volte, risposta molto utile
jozi

0

Per ovviare a questo errore: caricare il file uwsgi.servicesudo systemctl daemon-reload appena creato .

Per rendere avvio del servizio su ogni riavvio: sudo systemctl enable uwsgi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.