Ubuntu 18.04

Wie man Django mit Nginx auf Ubuntu Top 10 veranstaltet.Top 10 Bionic Beaver Linux

Wie man Django mit Nginx auf Ubuntu Top 10 veranstaltet.Top 10 Bionic Beaver Linux

Zielsetzung

Installieren und konfigurieren Sie Ubuntu 18.04 Um das Django -Framework zu hosten.

Verteilungen

Ubuntu 18.04

Anforderungen

Eine Arbeitsanlage von Ubuntu 18.04 mit Root -Privilegien

Schwierigkeit

Mittel

Konventionen

Einführung

Wenn Sie Webanwendungen mit Python erstellen und hosten möchten, ist Django die beliebteste Wahl. Da Python so eng in das Linux integriert ist, ist es nicht zu schwer, einen Django -Server auf Ubuntu einzurichten.

Es gibt keinen festen Weg, um Django -Projekte zu hosten, aber ein Stapel, der aus PostgreSQL, Nginx, Gunicorn und Django besteht.

Installieren Sie die Pakete

Bevor Sie anfangen, müssen Sie die erforderlichen Pakete installieren. Es gibt nicht so viele, aber stellen Sie sicher, dass Sie Apache oder einen anderen Webserver deaktivieren, der auf Port 80 ausgeführt wird, bevor Sie beginnen.

$ sudo apt installieren python3 python3-venv nginx postgresql


Erstellen Sie die Datenbank

Sie müssen auch eine Datenbank erstellen, um die Informationen aus Ihrer Django -Anwendung zu speichern. Postgresql wird diese Rolle übernehmen. Wenn Sie Postgresql noch nie verwendet haben, ist es nicht ganz so wie bei MySQL. Die Syntax ist unterschiedlich und behandelt auch Benutzeranmeldungen anders.

Um sich bei postgresql anzumelden und es zu verwalten, müssen Sie die verwenden Postgres Benutzer auf Ihrem Computer, der erstellt wurde, als Sie das PostgreSQL -Paket installiert haben. Wechseln Sie zu diesem Benutzer mit su.

$ sudo su postgres

Sobald Sie auf der sind Postgres Benutzer greifen mit der Datenbank auf Ihre Datenbank zu PSQL Befehl.

Nachdem Sie sich angemeldet haben, sollten Sie Ihrem Administrator ein Passwort hinzufügen, bevor Sie etwas anderes tun.

postgres =# user user postgres mit verschlüsseltem kennwort 'yourpassword';

Erstellen Sie als nächstes Ihre Datenbank.

postgres =# Datenbank erstellen your_db;

Erstellen Sie einen neuen regulären Benutzer, um die Datenbank zu verwalten. Dies ist der Benutzer, mit dem sich Django anmelden wird.

postgres =# rolle erstellen django_user mit verschlüsseltem passwort 'yourpassword';

Geben Sie dann den Benutzerberechtigten zur Verwendung der Datenbank gewähren.

postgres =# gib alle Berechtigungen in der Datenbank your_db an django_user;

Wenn Sie fertig sind, beenden Sie mit \Q. Verlassen Sie die Postgres Benutzer auch.

Richten Sie Ihr Verzeichnis ein

Es ist normalerweise keine gute Idee, Python-Pakete systemweit zu installieren. Es ist viel schwieriger, Paketversionen zu verwalten und alles stabil zu halten.

Python 3 unterstützt virtuelle Umgebungen, mit denen Sie Ihre Python -Projekte nach Verzeichnis unterteilen können. Jede Umgebung verfügt über eigene Python -Pakete, und Sie können sie als regulärer Benutzer installieren und verwalten.

Wählen Sie den Ort, an dem Sie Ihre Website hosten möchten. /var/www/yourite ist normalerweise eine gute Wahl. Verwenden Sie den integrierten Befehl, um Ihre virtuelle Umgebung zu erstellen.

$ sudo python3 -m venv/var/www/yourite

Gehen Sie in Ihr Verzeichnis und aktivieren Sie es.

$ cd/var/www/yourite $ source bin/aktivieren

Wenn Sie im Verzeichnis fertig sind, können Sie es leicht deaktivieren.

$ deaktivieren


Installieren Sie Django

Wenn Ihre virtuelle Umgebung begonnen hat, können Sie Django selbst zusammen mit ein paar anderen Python -Paketen installieren, die Sie benötigen, um alles zu verbinden.

$ pip Installieren Sie Django Psycopg2 Gunicorn

Es wird ein paar Sekunden dauern, aber PIP wird alles installieren, was Sie benötigen, um Ihr Django -Projekt einzurichten.

Erstellen Sie ein Django -Projekt

Nachdem Sie Django haben, können Sie Ihr Projekt tatsächlich erstellen. Stellen Sie sicher, dass Sie sich in Ihrer virtuellen Umgebung befinden und es aktivieren lassen.

$ django-admin startProject Your-Project

Sobald Sie Ihr Projekt haben, müssen Sie die Konfiguration ändern, um Ihre Datenbank einzurichten. Standardmäßig ist Django eingerichtet, um SQLite3 als Datenbank zu verwenden. Das ist mehr für Entwicklungszwecke. Um postgreSQL zu verwenden, müssen Sie die Haupt -Django -Konfiguration unter bearbeiten Ihr Projekt/Ihre Projekte/Einstellungen.py. Finden Sie diese Datei und öffnen Sie sie. Suche nach Datenbanken Blockieren und bearbeiten, um wie der unten auszusehen.

Datenbanken = 'Standard':  #'Engine': 'Django.db.Backends.Sqlite3 ', #' Name ': OS.Weg.Join (Base_dir, 'DB.Sqlite3 '),' Motor ':' Django.db.Backends.postgresql_psycopg2 ',' name ':' your_db ',' user ':' django_user ',' password ':' yourpassword ',' host ':' localhost ',' port ': ",

Speichern und schließen. Jetzt können Sie jetzt die ersten Migrationen anwenden und Ihren Administratorbenutzer erstellen. Kehren Sie zum Stammverzeichnis Ihres Projekts zurück und führen Sie die folgenden Linux -Befehle aus.

$ python verwalten.py migrieren $ python verwalten.Py erzeugt

Konfigurieren Sie Gunicorn

Die Gunicorn -Konfiguration ist ziemlich einfach, aber es ist immer noch wichtig, fertig zu werden. Ein ... kreieren Gunicorn Verzeichnis in der Wurzel Ihrer Website. Sie müssen es im Wesentlichen sagen, wo Sie seinen Sockel führen können, wie viele Arbeiter zum Laichen und wo Sie sich anmelden sollen. Erstellen Sie eine Python -Datei mit dem Namen Gunicorn-Config.py, Und lassen Sie es so aussehen wie das unten unten aussehen.

Multiprocessing bind = 'unix:/tmp/gunicorn importieren.Sock 'Workers = Multiprocessing.cpu_count () * 2 + 1 reload = true Daemon = True AccessLog = './Zugang.log 'ERRAGELOG =' log './Fehler.Protokoll'

Sobald Sie es so eingestellt haben, wie Sie möchten, speichern und beenden.

Sie können GuniCorn aus dem Root -Verzeichnis Ihres Projekts mit einem ähnlichen Befehl wie folgt starten:

$ Gunicorn -c Gunicorn/Gunicorn -Config.Py Your-Project.WSGI


Konfigurieren Sie Nginx

Die gesamte Nginx -Konfiguration ruht in /etc/nginx. Es gibt eine Menge Dateien in diesem Verzeichnis, aber Sie müssen sich keine Sorgen um alle machen. Sie brauchen nur wirklich wirklich /etc/nginx/nginx.Conf und die ortsspezifische Datei, die Sie erstellt haben /etc/nginx/sites-verfügbare/Ihre Site. Tatsächlich ist die Hauptnginx -Konfiguration nicht so erforderlich, wenn Sie Ihre Website in der Produktion optimieren möchten. Sie müssen sich nicht wirklich damit anlegen, nur um Ihre Website zum Laufen zu bringen.

Erstellen Sie also eine Datei für Ihre Website unter /etc/nginx/sites-verfügbare/Ihre Site.

Das erste Stück der Datei, die Sie benötigen stromaufwärts Block. Dieser Block teilt Nginx mit, dass der Webanwendungscode an einem anderen Ort ausgeführt wird (in diesem Fall Gunicorn.

Upstream Your-Gunicorn Server Unix:/TMP/Gunicorn.SOCK fail_timeout = 0; 

Dieser Block erstellt mehr oder weniger eine Variable basierend auf dem von Ihnen angegebenen Namen stromaufwärts und weist ihm den Wert des Zielservers zu. Der Server kann entweder ein UNIX -Socket oder eine IP -Adresse und eine Portnummer sein. Da Gunicorn lokal läuft, ist es besser, einen Unix -Sockel zu verwenden. Denken Sie daran, dass Sie dies früher in der Gunicorn -Konfiguration eingerichtet haben. Zeigen Sie also Ihre Nginx -Konfiguration darauf an.

Als nächstes können Sie zum Hauptblock für Nginx übergehen, die Server Block. Fügen Sie das hinzu.

Server 

Die grundlegenden Optionen geben Nginx an, welchen Port zu hören ist und auf welche URL achten muss.

Hören Sie 80 Standard; client_max_body_size 4g; server_name your-site.com; keepalive_timeout 70;

Fügen Sie dann Ihre Protokollorte hinzu.

Access_log/var/log/nginx/Ihre Site.Access_log main; ERROR_LOG/VAR/LOG/NGINX/Ihre Site.INAGE_LOG INFO;

Punkt Nginx im Stammverzeichnis Ihrer Website.

root/var/www/virtualenv/Ihre Site;

Gunicorn serviert keine statischen Dateien, sodass Sie NGINX einrichten müssen, um die statischen Dateien Ihrer Website zu bedienen. Genau dort, wo sich diese Dateien befinden, werden in Ihrer Django -Einstellungsdatei bestimmt. Normalerweise gibt es zwei Verzeichnisse, eine für die statischen Dateien der Website und eine für hochgeladene Dateien. Die Blöcke teilen die gleiche Struktur. Das folgende Beispiel wird davon ausgegangen, dass Ihre statischen Dateien in einem Verzeichnis namens vorhanden sind statisch In der Wurzel Ihres Projekts.

Ort / static / autoIndex on; alias/var/www/virtualenv/Ihre Site/static/; läuft 1m ab; Access_log aus; add_header cache-kontroll "public"; proxy_ignore_Headers "set-Cookie"; 

Es gibt dort einige andere Optionen, die eine gute Standardeinstellungen für das Caching machen.

Der nächste Standort Blockieren Sie, den Sie benötigen. Wie stromaufwärts Es legt eine weitere Art von Variablen fest und fordert es an, Verbindungen an Ihren Upstream -Block weiterzugeben.

location @proxy_to_app proxy_set_header x-forwarded-for $ proxy_add_x_forwarded_for; proxy_set_header host $ http_host; Proxy_Redirect Off; Proxy_Pass http: // Ihr-Gunicorn; 

Richten Sie schließlich einen Block ein, in dem Nginx nach statischen Dateien suchen soll, die eingehende Anforderungen entsprechen,. Wenn keiner gefunden wird, geben Sie es an Gunicorn weiter.

Ort / try_files $ uri @proxy_to_app; 

Das ist alles was du unbedingt brauchst. Sie können viel mehr Leistungsstimmen machen, aber es ist nicht wichtig, Django zum Laufen zu bringen. Speichern und schließen.

Erstellen Sie einen Link zwischen Ihrer neuen Datei und der Websites fähig Ordner. Entfernen Sie die vorhandenen Standard Datei dort drin.

$ sudo rm/etc/nginx/sites-fähig/Standard $ sudo ln-s/etc/nginx/sites-verfügbare/your-site/etc/nginx/sites-fähig/

Starten Sie Nginx neu.

$ sudo systemctl starten nginx neu

Inzwischen sollten Sie in der Lage sein, Ihren Browser zu öffnen und die Standard -Django -Seite zu sehen.

Gedanken schließen

Okay, das war eine Art langer Weg. Ob Sie so viel Konfiguration auf einem Entwicklungsserver durchlaufen möchten oder nicht, liegt ganz bei Ihnen. Für die Produktion bietet es jedoch eine solide Grundlage für die Hosting Ihrer Django -Projekte. Beachten Sie jedoch.

So spielen Sie das WMV -Format auf Linux alias Video -Codec nicht verfügbar
Vor kurzem habe ich versucht, eine WMV -Datei (Microsoft ASF) mit VLC zu öffnen. VLC konnte einen Video -Stream nicht öffnen, also habe ich ein paar w...
Setzen Sie einen Keks mit Perl und CGI ein und holen Sie sie
Es gibt mehrere Parameter, die beim Erstellen eines Cookie festgelegt werden können. Dies gilt nicht nur für Perl und CGI, sondern für alle anderen En...
Ändern Sie die Prioritäten von Linux -Prozessen mit Nizza und Renice
Jeder Prozess, der auf dem Linux -System ausgeführt wird, hat eine Standardpriorität zugewiesen......