Verkabelung von uWSGI für die Arbeit mit Django und Nginx unter Ubuntu 16.04

14

Ich versuche, diesem Tutorial zu folgen, um uWSGImit Djangound nginxauf einzurichten Ubuntu16.04.

Es funktioniert alles bis zum allerletzten Schritt (oh die Ironie ...), bei dem ich versuche, diesen Befehl auszuführen:

sudo service uwsgi start

Wenn mit dem folgenden Fehler fehlschlägt:

Uwsgi.service konnte nicht gestartet werden: Einheit uwsgi.service nicht gefunden.

Andere scheinen einen ähnlichen Fehler zu bekommen:

Uwsgi.service konnte nicht gestartet werden: Einheit uwsgi.service konnte nicht geladen werden: Keine solche Datei oder kein solches Verzeichnis.

Das Problem hängt anscheinend mit der Ubuntu-Version zusammen. Obwohl dieses Tutorial auf Ubuntu 14.04 ausgerichtet ist, scheint es für neuere Versionen nicht zu funktionieren, da Ubuntu in Version 15 vom upstartInit-Daemon zum systemdInit-Daemon gewechselt ist .

Wie kann ich systemduWSGI starten, damit es mit Nginx und Django funktioniert?

Vlad Schnakovszki
quelle

Antworten:

27

Die erste erforderliche Änderung betrifft die /etc/uwsgi/sites/firstsite.iniDatei. Die einzige Änderung, die erforderlich ist, ersetzt die Berechtigungen von 664bis 666. Das Skript würde so aussehen:

[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

Zweitens , wie wir verwenden , systemdanstatt upstart, wird die folgende Datei nicht benötigt und kann entfernt werden:/etc/init/uwsgi.conf

Drittens erstellen wir das folgende systemdSkript unter /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

Aktualisieren Sie den Status des systemd init-Systems mit diesem neuen integrierten uWSGI-Dienst

sudo systemctl daemon-reload

Um das Skript zu starten, müssen Sie Folgendes ausführen:

sudo systemctl start uwsgi

Um einen uWSGINeustart zu starten , benötigen Sie außerdem:

sudo systemctl enable uwsgi

Sie können den Status folgendermaßen überprüfen:

systemctl status uwsgi

Einige weitere Details finden Sie hier .

Vlad Schnakovszki
quelle
1
Wie lässt sich ein Python-Virtualenv-System verwenden? Wenn ich renne, systemctl status uwsgibekomme ich ImportError: No module named site.
tlng05
2
episch ..... ich hatte so lange damit zu kämpfen .... danke für die unkomplizierte und einfache schrittweise Lösung, die Sie hier geschrieben haben. +1
Rakib
1
Ich habe es ein paar Mal benutzt, sehr hilfreiche Antwort
jozi
0

So umgehen Sie diesen Fehler: Damit sudo systemctl daemon-reloaddie neu erstellte Datei uwsgi.service geladen wird.

Um Service Start auf jedem Neustart: sudo systemctl enable uwsgi.

Alexandr Karbivnichiy
quelle