Detaillierte Schritte zum Starten des Django-Projekts mit nginx+uwsgi

Detaillierte Schritte zum Starten des Django-Projekts mit nginx+uwsgi

nginx+uwsgi+django ist unsere häufig verwendete Bereitstellungsmethode für Django. Als Front-End-Server ist nginx für den Empfang aller Client-Anfragen verantwortlich. Die angeforderten statischen Dateien werden vom nginx-Server selbst verarbeitet, da dieser gut mit statischen Dateien umgehen kann, eine optimierte Leistung aufweist und eine hohe Parallelität unterstützt. Der uWSGI-Server ist ein Support-Server, der zum Bedienen von nginx verwendet wird. nginx übergibt die angeforderten dynamischen Dateien zur Verarbeitung an uWSGI. uWSGI implementiert die Protokolle uwsgi, wsgi und http. Das uwsgi-Protokoll ist ein benutzerdefiniertes Protokoll von uWSGI, das die Schnittstelle zwischen dem Framework (Django) und dem Server definiert.

1. Installieren Sie die Projektumgebung

Systemumgebung: Ubuntu 16.04

Python-Umgebung: python3.5.2

Django-Version: django1.11.7

Nginx-Umgebung: nginx_1.10.3

Virtuelle Umgebung: virtualenv15.1.0

uwsgi-Version: uwsgi2.0.17.1

Installieren und öffnen Sie die virtuelle Projektumgebung:

sudo apt-get installiere virtualenv
virtualenv -p python3 env_mein_projekt 
Quelle env_my_project/bin/activate
pip install -r Anforderungen.txt

2. Projektkonfiguration und Betriebstest

Ändern Sie die Projektkonfigurationsdatei:

cp mein_projekt/settings_local.py.beispiel mein_projekt/settings_local.py

Ändern Sie die es-Konfigurationsdatei:

cp rs_es/es_settings.py.beispiel rs_es/es_settings.py

wsgi.py:

Betriebssystem importieren
von django.core.wsgi importiere get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mein_Projekt.settings_local")
Anwendung = get_wsgi_application()

Projektlauftest:

python manage.py collectstatic # Statische Dateien sammeln python manage.py makemigrations
python manage.py migrieren
python manage.py runserver 0.0.0.0:8001

3. NGINX- und UWSGI-bezogene Konfiguration

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/mein_projekt
sudo ln -s /etc/nginx/sites-available/mein_projekt /etc/nginx/sites-enabled/
sudo vim /etc/nginx/sites-enabled/mein_projekt

Nginx-Konfiguration:

Upstream mein_Projekt{
 Server unix:///var/run/my_project.sock;
}

Server {
 listen 8001; //Der Dienst mit der Service-Portnummer wird über die Kommunikation zwischen Nginx und Uwsgi gestartet. Servername 192.168.xx.xx; //Die IP des Nginx-Proxys 
 Zeichensatz UTF-8;

 # maximale Upload-Größe
 Maximale Client-Körpergröße: 10 M;

 # Senden Sie alle nicht-medialen Anfragen an den Django-Server.
 Standort / {
  uwsgi_pass mein_Projekt;
  /etc/nginx/uwsgi_params einschließen;
 }

 Standort /static/ {
  root /home/ubuntu/mein_projekt;
 }
}

Uwsgi-Konfiguration:

sudo mkdir /var/log/uwsgi
sudo chmod -R 777 /var/log/uwsgi

uwsgi.ini:
[Benutzer]
chdir=/home/ubuntu/mein_projekt
home=/home/ubuntu/mein_projekt/env_mein_projekt
Modul=mein_Projekt.wsgi:Anwendung

socket=/var/run/mein_projekt.sock
chmod-Socket = 666

Master = Wahr
Prozesse = 5
Maximale Anfragen = 5000

# Umgebung beim Beenden löschen
Vakuum=Wahr

pidfile=/var/run/mein_projekt.pid
daemonize=/var/log/uwsgi/mein_projekt.log

# git pull startet den Dienst automatisch neu touch-reload=.git/index

4. Konfigurieren Sie die Überwachung im Emperor-Modus und den automatischen Systemstart von uwsgi

Konfigurieren des Emperor-Modus-Abhörens

sudo mkdir /etc/uwsgi
sudo mkdir /etc/uwsgi/vassals
sudo ln -s /home/ubuntu/mein_projekt/uwsgi.ini /etc/uwsgi/vassals/

Das System startet automatisch uwsgi

sudo vim /etc/rc.local
/usr/local/bin/uwsgi --emperor /etc/uwsgi/vassals

5. Starten Sie den Django-Dienst über uwsgi

Starten Sie uwsgi

uwsgi --ini uwsgi.ini

Starten Sie nginx neu

sudo service nginx neu starten

Starten Sie den Django-Dienst

sudo uwsgi --reload /var/run/mein_projekt.pid

An diesem Punkt können Sie über den IP- und Port-Proxy von ngnix im Browser auf den Dienst zugreifen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Detailliertes Tutorial zum Erstellen von Django+Nginx+Uwsgi unter Ubuntu
  • Detaillierte Erklärung der Best Practices für Django + uwsgi + Nginx online
  • Detaillierte Bereitstellung von Django uwsgi Nginx in der Produktionsumgebung
  • So stellen Sie den Django-Dienst nginx+uwsgi auf Centos bereit
  • Detaillierte Erläuterung der Bereitstellung von Django + Uwsgi + Nginx in der Produktionsumgebung
  • Detaillierte Erläuterung der Bereitstellung der Produktionsumgebung von Django + Uwsgi + Nginx
  • Lösen Sie alle Probleme bei der Bereitstellung von Django mit nginx+uwsgi (Zusammenfassung)
  • So implementieren Sie die Bereitstellung einer Produktionsumgebung mit Django+Uwsgi+Nginx

<<:  Vue implementiert einen visuellen Drag-Page-Editor

>>:  Grafisches Tutorial zur Installation und Konfiguration von MySQL 5.7.11 Zip

Artikel empfehlen

So stellen Sie Confluence und Jira-Software in Docker bereit

Version: centos==7.2 jdk==1.8 Zusammenfluss == 6....

Fallstudie zu MySQL-Berechtigungen und Datenbankdesign

Berechtigungen und Datenbankdesign Benutzerverwal...

Eine kurze Einführung in Linux-Leistungsüberwachungsbefehle kostenlos

Wie können wir den Fehler lokalisieren, wenn im S...

Linux Bash: ./xxx: Fehler „Binärdatei kann nicht ausgeführt werden“

Heute habe ich einem Kunden ein kleines Tool für ...

Der Unterschied zwischen clientWidth, offsetWidth, scrollWidth in JavaScript

1. Konzept Sie alle sind Attribute des Elements u...

Reiner CSS3-Code zur Implementierung einer laufenden Uhr

Wirkung der OperationCode-Implementierung html &l...

Einige Fragen zu Hyperlinks

Ich freue mich sehr, an dieser Folge der Kartoffe...

mysql5.7 Installations- und Konfigurationstutorial unter Centos7.3

In diesem Artikel finden Sie das Installations- u...

CentOS7 verwendet RPM-Paket zur Installation von MySQL 5.7.18

veranschaulichen Dieser Artikel wurde am 20.05.20...

MySQL-Partitionierungspraxis mit Navicat

MySQL-Partitionierung ist hilfreich bei der Verwa...

Drei Vererbungsmethoden in JavaScript

erben 1. Was ist Vererbung? Vererbung: Zunächst e...

js implementiert ein einfaches Englisch-Chinesisch-Wörterbuch

In diesem Artikel wird der spezifische Code von j...