Da ich kürzlich ein innovatives Projekt durchführen musste, das Python-Webentwicklung erforderte, habe ich Django studiert, ein sehr vielseitiges Python-Web-Framework.
Warum brauchen Sie Ngix?
Lassen Sie uns zunächst darüber sprechen, warum es notwendig ist, diese drei zum Erstellen einer Website zu kombinieren. Wenn Sie nur Django verwenden, können Sie keinen Lastausgleich erreichen. Wenn Sie beispielsweise einige statische Ressourcen anfordern müssen, müssen Sie sie alle von Django verarbeiten. Die Anforderungen können nicht angemessen verteilt werden, und Ngix kann dieses Problem lösen (es scheint, dass dieses Projekt keinen Lastausgleich in Betracht ziehen muss, sondern eine Verbesserung). Leistung ist immer erforderlich.) Ngix kann einige dynamische Anforderungen über die Konfiguration senden. Lassen Sie Django damit umgehen und statische Anforderungen selbst verarbeiten. Wenn Sie außerdem PHP-Seiten auf der Website ausführen müssen, ist Ngix definitiv eine gute Wahl . PHP-Anfragen werden zur Verarbeitung an Apache verteilt und die verarbeiteten Ergebnisse werden über den Socket-Port zurückgegeben.
Warum brauchen Sie dann uwsgi?
WSGI ist eine Webserver-Gateway-Schnittstelle. Es handelt sich um eine Spezifikation für die Kommunikation zwischen einem Webserver (z. B. Nginx) und einem Anwendungsserver (z. B. einem uWSGI-Server). Dann ist uwsgi ein Webserver, der sowohl uwsgi- als auch WSGI-Protokolle implementiert. Um es einfach auszudrücken: Mit uwsgi können wir Django über uwsgi starten und dann kommuniziert ngix über den Port mit uwsgi. In diesem Prozess realisiert gjango die Funktion des wsgi-Servers und ngix realisiert die Funktion des wsgi-Clients, aber weiter Das Web Im Inneren spielt NGIX die Rolle eines Servers (Viele Softwarekommunikationen in Computern erfolgen im Client-Server-Modus. Beispielsweise sind Dateiressourcen ein Dienst, und dann implementiert die Anwendung das entsprechende Protokoll, um diesen Dienst aufzurufen). Dies realisiert die Übertragung von uwsgi zwischen ngix und django.
Warum lässt man Ngix nicht direkt mit Django kommunizieren?
uWSGI verwendet weder das wsgi-Protokoll noch das fcgi-Protokoll. Stattdessen erstellt es ein eigenes uwsgi-Protokoll, das etwa zehnmal so leistungsfähig sein soll als das fcgi-Protokoll schnell.
Die Hauptmerkmale von uWSGI sind wie folgt:
◆Ultraschnelle Leistung.
◆Geringe Speichernutzung (gemessen etwa die Hälfte von mod_wsgi von Apache2).
◆Mehrere App-Verwaltung.
◆Detaillierte Protokollfunktion (kann zur Analyse der App-Leistung und von Engpässen verwendet werden).
◆Hochgradig anpassbar (Speichergrößenbeschränkung, Neustart nach einer bestimmten Anzahl von Diensten usw.).
Die Prinzipien zwischen den drei sind wie folgt:
<span><code>the web client <-> the web server(nginx) <-> the socket <-> uwsgi <-> Django</code></span>
Bereitstellung starten
1. Ngix installieren sudo apt-get install ngix
Weil meine Maschine da ist ist auch Apache drauf. Ich muss den Abhörport von ngix auf 8080
wie folgt ändern
server { listen 8080 default_server; listen [::]:8080 default_server ipv6 root /var/ngix; #将根目录改为/var/ngix index index.html index.htm; }
2 .Django installieren
Verwenden Sie Pythons eigenen Paketmanager easy_install, um easy_install django zu installieren, um automatisch die neueste Version zu installieren
3. Installieren Sie uwsgi
<code>apt-get install python-dev #不安装这个,下面的安装可能会失败 pip install uwsgi 如果是apt-get安装就需要 sudo apt-get install uwsgi-plugin-python </code>
.
└── myproject
├── app
│ ├── admin.py
│ ├── __init__.py
│ ├── Migrationen
│ │ └── __init__.py
│ ├── Modelle .py
d Jango .xml
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── Settings.py
│ ├── Settings.pyc
│ ├ ── URLs .py
│ ├── urls.pyc
│ ├── wsgi.py
│ └── wsgi.pyc
├── templates
└── test.py
Django.xml-Dateiinhalt ist:
Socket für die Kommunikation mit ngix verwenden. Die Portnummer ist der lokale Port 8630
Dann müssen Sie es in die Konfigurationsdatei von ngix einfügen
<uwsgi> <socket>127.0.0.1:8630</socket> <chdir>/var/ngix/myproject/myproject</chdir> <pythonpath>..</pythonpath> <module>wsgi</module> </uwsgi> 这里需要注意的是wsgi模块,网上很多都是错误的,直接用自动生成的就行。
uwsgi ist ein Modul, das mit ngix geliefert wird
Starten Sie ngix neu service, und starten Sie dann den uwsgi-Dienst
location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8630; }
$ uwsgi -x django.xml --plugin python
Bedürfnisse soll in dem Verzeichnis ausgeführt werden, in dem sich django.xml befindet
Geben Sie schließlich 127.0.0.1:8080 in den Browser ein, um die Django-Debugging-Seite anzuzeigen~~
Nach einem Tag des Herumwerfens ist es geschafft
Fassen Sie weitere gelernte Dinge zusammen: Löschen Sie die entsprechenden Installationsdateien unter /etc/dpkg/info/, um das apt-Unterproblem zu lösen. Prozess-Startfehler. Nachdem Sie es gelöscht haben, müssen Sie es automatisch entfernen
Schließlich ist die Verteilung wirklich eine große Gefahr! ! ! ! ! ! ! !
Datenaustausch: wsgi-Konzept UWSGI-Konzept Bereitstellung von Django auf Ubuntu basierend auf Nginx und uWSGI
So übergeben Sie uwsgi an die Supervisor-Verwaltung unavailable-modifier-requested-0 Lösung
uwsgi-Handbuch
Zusammenfassung häufig gestellter Fragen zur Bereitstellung von Django mit uwsgi
Django Chinesisch-Tutorial Es wird weiterhin empfohlen, das englische Tutorial zu lesen, das vollständiger ist
Die oben genannten Informationen sind die Informationen, auf die ich mich beziehe
Das Obige stellt die Website-Erstellung mit der Ngix-Uwsgi-Django-Kombination vor, einschließlich des Inhalts. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.