ngix uwsgi django-Kombination Website-Erstellung

WBOY
Freigeben: 2016-08-08 09:23:49
Original
1171 Leute haben es durchsucht

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>
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach der Installation des Tools können Sie mit der Konfiguration des Projekts beginnen, das automatisch Django-Projekte generieren kann Sie müssen django nicht ausführen. admin.py generiert die entsprechende Projektdatei

.
└── 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模块,网上很多都是错误的,直接用自动生成的就行。
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

$ 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 geschafftngix uwsgi django-Kombination Website-Erstellung

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.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage