Ich habe mich mit flask, wsgi und apache2 verbunden, aber ich habe Django immer gehasst. Ich habe mich jedoch für Django und Nginx entschieden, weil ich WebSocket einführen wollte.
Selbst jetzt wird es nur angezeigt, wenn ich ** "http://example.com:9000" ** eingebe, aber ich habe den Punkt erreicht, an dem uwsgi im Hintergrund gestartet wird.
Ich werde den Teil, mit dem ich zu kämpfen hatte, unten schreiben
Es war gut, bis ich den Nginx-Server startete
$sudo /etc/init.d/nginx restart
Wenn ich es tippte, konnte es manchmal nicht gestartet werden. Ich habe die folgende Anzeige
[....] Restarting nginx (via systemctl): nginx.serviceJob for nginx.service failed because the control process exited with error code.
See "systemctl status nginx.service" and "journalctl -xe" for details.
failed!
Dies lag an der falschen Konfigurationsdatei in ** / etc / nginx / sites-available / ** in meiner Ubuntu-Umgebung. (Zum Beispiel wurde der Port mit einem anderen Server dupliziert.)
Dies war der Beginn des Leidens. Es fiel mir schwer, unter Uwsgi zu leiden. Vor allem ist es ein Versagen zu glauben, dass etwas mit Klebstoff gemacht werden kann.
Stellen Sie sich uwsgi als Middleware vor, die als Vermittler mit Einstellungen für die Verbindung von Nginx- und Django-Apps fungiert. Wie füge ich meine beschissene INI-Datei ein? Übrigens werde ich auch die Seiten vorstellen, die in uwsgi sehr hilfreich waren. (Englisch)
Unten sind meine INI-Dateien und deren Kommentar.
# open_dashboard_uwsgi.ini file
[uwsgi]
project = open_dashboard
base = /home/user/Python #← Pfad meines Python-Projekts
chdir = %(base)/%(project)
#home = %(base)/Env/%(project)
home = %(base)/env #← Pfad meiner virtuellen Python-Umgebung
module = %(project).wsgi:application
#uid = root
uid = user #← Mein Benutzername
master = true
processes = 2
socket = %(base)/%(project)/%(project).sock #← Versuchen Sie nicht, diese Steckdose selbst herzustellen
chmod-socket = 666
vacuum = true #← Es ist sehr wichtig, dass der Socket automatisch gelöscht wird, wenn der Server abgeschaltet wird.
Auf dieser Grundlage stellen wir den Emperor-Modus ein, bei dem uwsgi im Hintergrund ausgeführt wird (eigentlich ist es ein großartiger Modus, mit dem mehrere Apps gestartet werden können), der jedoch in den meisten Fällen auf den folgenden Fehler stößt.
unix:///home/user/Python/open_dashboard/open_dashboard.sock failed (13: Permission denied)
Das ist ärgerlich, aber Sie können es lösen, indem Sie uid und gid im Kaisermodus als Benutzernamen verwenden. Auch die Protokolldatei ** sudo chown user: user /var/log/uwsgi-emperor.log ** Vergessen Sie nicht, wie einzustellen.
Stellen Sie .bashrc wie folgt ein. (/etc/rc.local scheint gut zu sein, aber vorerst die sichere)
.bashrc
/usr/local/bin/uwsgi --emperor /etc/uwsgi/vassals --uid www-data --gid www-data --daemonize /var/log/uwsgi-emperor.log
Der *** --emperor / etc / uwsgi / vassals *** Teil des obigen Codes ist wie folgt festgelegt.
# create a directory for the vassals
sudo mkdir /etc/uwsgi
sudo mkdir /etc/uwsgi/vassals
# symlink from the default config directory to your config file
sudo ln -s /path/to/your/mysite/mysite_uwsgi.ini /etc/uwsgi/vassals/
Sie können es nicht verstehen, weil Sie es eilig haben, aber vorerst ** Damit ich mich nicht wieder verliere ** Ich habe diesen Artikel geschrieben.
[Ich habe dunkle Tage mit nur 502 Fehlern wie diesem Artikel verbracht](https://www.linode.com/community/questions/222/how-do-i-fix-this-502-bad- Gateway-Fehler-beim-Einrichten-Django-Projekt-auf-Ubuntu)
_ Als nächstes werde ich Docker herausfordern! _
--2019 / 12/16 Neu erstellt --2020 / 1/1 Es wurde hinzugefügt, wie uwsgi für Python3 erneut installiert und konfiguriert wird, wenn es mit Python3 ausgeführt wird
Recommended Posts