Python + Django4 zum Erstellen eines persönlichen Blogs (20): Alibaba Cloud-Bereitstellungsblogprojekt

In diesem Artikel werden wir den letzten Teil unserer Kernfunktion zum Erstellen eines persönlichen Blogs abschließen: Bereitstellung und Start.

Im nächsten Teil werden wir von Zeit zu Zeit einige andere Blog-Funktionen aktualisieren, wie z. B. Artikelspalten, Nachrichtenbenachrichtigungen, Benutzererweiterungen und andere kleine Funktionsmodule.


Inhaltsverzeichnis

Bereiten Sie den Server vor

Installieren Sie Xshell und Xftp

Serverinstallationssoftware

Installieren Sie MySQL

Ändern Sie die Django-Projektkonfigurationsdatei

Übertragen Sie das Django-Projekt auf den Server

Nginx-Konfiguration

Bereiten Sie Backend-Benutzer vor und aktivieren Sie Gunicorn

Testen und ausführen


In diesem Artikel werden wir Nginx und Gunicorn verwenden, um Website-Projekte zu implementieren und die Online-Bereitstellung von Django-Projekten in Alibaba Cloud zu implementieren.

Während der Entwicklung haben wir Djangos eigenen Entwicklungsserver verwendet, dessen Leistung jedoch zu schlecht war, um in einer Online-Umgebung verwendet zu werden. Daher müssen wir bei der Online-Bereitstellung nicht nur Django, sondern auch Nginx und Gunicorn installieren. Der Workflow dieser drei Brüder ist wie folgt:

  • Der Client sendet eine http-Anfrage und Nginx dient als direkte externe Serverschnittstelle zur Analyse der http-Anfrage.
  • Wenn es sich um eine statische Ressourcenanforderung handelt, wird sie von Nginx selbst bearbeitet (äußerst effizient).
  • Wenn es sich um eine dynamische Ressourcenanforderung handelt, leiten Sie sie an Gunicorn weiter
  • Nachdem Gunicorn die Anfrage vorverarbeitet hat, leitet sie sie an Django weiter und schließt schließlich die Rückgabe der Ressource ab.

Die Schritte zum Bereitstellen eines Django-Projekts lauten ungefähr wie folgt:

  • Bereiten Sie den Server vor (öffnen Sie Port 80)
  • Bereiten Sie Tools für die Remote-Verbindung zum Server und die Dateiübertragung vor (Xshell und Xftp).
  • Installieren Sie Python, Nginx, MySQL
  • Datenbank erstellen
  • Ändern Sie die Django-Projektkonfigurationsdatei
  • Übertragen Sie das Django-Projekt auf den Server
  • Installieren Sie die relevanten Python-Pakete, die im Projekt „Requirements.txt“ enthalten sind
  • Sammeln Sie statische Ressourcen
  • Konfigurieren Sie Nginx-bezogene Proxy-Parameter
  • Installieren und aktivieren Sie Gunicorn
  • Testlauf

Bereiten Sie den Server vor

In diesem Artikel wird Alibaba Cloud verwendet. Alibaba Cloud-Server können einen Monat lang getestet werden. Wir verwenden den Testserver als Beispiel für die Implementierung der Projektbereitstellung.

In der Service-Aktivierungsoberfläche können Sie die anderen Informationen nach Belieben eingeben. Wir verwenden die 64-Bit-Version des Betriebssystems Ubuntu 22.04.

Bei der Aktivierung wählen wir nur das Betriebssystem aus und es sind keine weiteren Anwendungen vorinstalliert.

Rufen Sie nach der Aktivierung die Schnittstelle der Verwaltungsinstanz auf und Sie können den Inhalt unseres wichtigsten Felds sehen, die öffentliche IP:39.107.240.223

Setzen Sie dann unser Instanzpasswort zurück (andernfalls wird der geheime Schlüssel standardmäßig beim Anmelden am Server verwendet).

Überprüfen Sie dann die eingehenden Ports in unserer Sicherheitsgruppe. Mindestens die Ports 80 und 22 müssen geöffnet sein.

Installieren Sie Xshell und Xftp

Xshell und Xftp sind von NetSarang entwickelte Remote-Tools.

  • Xshell kann eine Fernverbindung zum Server herstellen und ihn steuern
  • Xftp kann Dateien remote auf den Server übertragen

Die Download-Adresse lautet wie folgt. Für den persönlichen Gebrauch nutzen Sie einfach die kostenlose Version.

Kostenlos für Zuhause/Schule – NetSarang-Website https://www.xshell.com/zh/free-for-home-school/

Nach der Installation der Software öffnen wir zunächst Xshell, erstellen eine neue Sitzung und geben die öffentliche Netzwerkadresse von Alibaba Cloud auf dem Host ein.

Wählen Sie „Benutzerauthentifizierung“, geben Sie Ihren Login-Benutzernamen und Ihr Passwort ein und klicken Sie auf die Schaltfläche „Verbinden“, um die Anmeldung abzuschließen.

Die Installations- und Anmeldemethoden von Xftp und Xshell sind nahezu identisch, daher erfolgt hier keine besondere Einführung.

Serverinstallationssoftware

Vor der Installation der Software aktualisieren wir zunächst die Version der Systembibliothek, um Problemen durch veraltete Systemversionen vorzubeugen.

~$ sudo apt-get update
~$ sudo apt-get upgrade

Installieren Sie die erforderliche Software: Nginx, Python, PIP und PIP installiert die virtuelle Python-Umgebungsbibliothek virtualenv.

~$ sudo apt-get install nginx
~$ sudo apt-get install python3
~$ sudo apt-get install python3-pip
~$ sudo pip3 install virtualenv

Installieren Sie MySQL

sudo apt install mysql-server

Überprüfen Sie den Betriebsstatus

sudo systemctl status mysql

Melden Sie sich nach Abschluss der Installation mit dem Befehl direkt als Root-Benutzer an.

sudo mysql

(Unter MySQL 8.0 wird der Root-Benutzer standardmäßig über das auth_socket- Plug-in autorisiert und kann sich nicht mit einem Passwort anmelden. Die Passwortanmeldung kann erst nach Änderung des Passworts aktiviert werden.)

Geben Sie dann die folgenden zwei Befehle in die MySQL-Befehlsschnittstelle ein, um das Passwort des Root-Benutzers in Ihr neuestes Passwort zu ändern:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword';

mysql> FLUSH PRIVILEGES;

Beenden Sie MySQL:

mysql> exit

Anschließend prüfen Sie, ob die Anmeldung mit dem Root-Passwort erfolgreich war:

mysql -u root -p

Die folgende Schnittstelle stellt eine erfolgreiche Anmeldung dar.

Praktischerweise haben wir die Datenbank gemeinsam erstellt (solange der Name derselbe ist wie der, den wir lokal erstellt haben):

mysql> CREATE DATABASE IF NOT EXISTS django_blog DEFAULT CHARSET utf8;

Ändern Sie die Django-Projektkonfigurationsdatei

Wenn wir das Projekt online bereitstellen, müssen wir die Konfigurationsdatei ändern django4blog/settings.py.

DEBUG = False

ALLOWED_HOSTS = ['*']

# 静态文件收集目录
STATIC_ROOT = os.path.join(BASE_DIR, 'collected_static')

Im Wesentlichen geht es um 3 Punkte:

  • Deaktivieren Sie den Debugging-Modus bei der Bereitstellung, um Sicherheitsprobleme zu vermeiden (Django verarbeitet zu diesem Zeitpunkt keine statischen Ressourcen mehr).
  • ALLOWED_HOSTS gibt den Servernamen oder die IP-Adresse an, auf die zugegriffen werden darf, und das Sternchen zeigt an, dass alle Anforderungen zulässig sind. Bitte ändern Sie es während der tatsächlichen Bereitstellung in Ihren Domänennamen oder Ihre IP, z. B. ALLOWED_HOSTS = [ '127.0.0.1'].
  • Es gibt viele statische Dateien im Projekt. Bei der Bereitstellung müssen Sie einen Ort finden, an dem sie einheitlich gesammelt werden können. Dies ist die durch STATIC_ROOT angegebene Adresse. Nach Angabe dieser Adresse kann Django den Befehl verwenden, um alle (einschließlich der Admin-Seite) zu sammeln kommt mit Django) während der Bereitstellung. Verwandte) statische Ressourcen (CSS, JS usw.) werden alle in bestimmten Ordnern gesammelt, was es für uns einfacher macht, sie während der Bereitstellung einheitlich zu laden.

Dann müssen wir die Konfiguration ändern, um das domänenübergreifende Problem der Online-Bereitstellung zu lösen:

Installieren Sie zunächst das Paket mit PIP django-cors-headers:

pip install django-cors-headers

Ändern Sie dann die Konfigurationsdateidjango4blog/settings.py

INSTALLED_APPS = [
    ......
    'corsheaders',  #解决浏览器跨域问题
    ......
]

MIDDLEWARE = [
    ......
    'corsheaders.middleware.CorsMiddleware',  #解决浏览器跨域问题
    'django.middleware.common.CommonMiddleware', #解决浏览器跨域问题
    ......
]

CORS_ORIGIN_ALLOW_ALL = True #解决浏览器跨域问题
CORS_ALLOW_CREDENTIALS = True #解决浏览器跨域问题

SECURE_CROSS_ORIGIN_OPENER_POLICY = 'None'  #Django4 特定解决浏览器跨域问题

Wenn unser Server-Datenbankkennwort nicht mit dem lokalen Datenbankkennwort übereinstimmt, können wir außerdem die Parameter der Konfigurationsdatei im Voraus ändern:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',    # 数据库引擎
        'NAME': 'django_blog', # 数据库名称
        'HOST': '127.0.0.1', # 数据库地址,本机 ip 地址 127.0.0.1
        'PORT': 3306, # 端口
        'USER': 'root',  # 数据库用户名
        'PASSWORD': 'newpassword', # 数据库密码 修改为服务器数据库密码
    }
}

Abschließend erstellen wir eine Liste der Bibliotheken, die wir in unserem lokalen Projekt verwenden müssen, damit diese einheitlich auf dem Server installiert werden können.

Geben Sie den Befehl in der lokalen virtuellen Umgebung ein:pip freeze > requirements.txt

(env) E:\django_project\django4blog>pip freeze > requirements.txt

Rufen Sie die Bibliotheksmanifestdatei ab requirements.txt.

Übertragen Sie das Django-Projekt auf den Server

Nach der Überarbeitung der lokalen Projektparameter melden wir uns bei Xftp an und kopieren den lokalen Projektordner direkt django_projectauf den Server

Kehren Sie zur Serverbetriebsoberfläche von Xshell zurück und geben Sie unseren Projektordner eindjango_project

cd django_project

Erstellen Sie dann eine virtuelle Umgebung auf dem Server:

virtualenv --python=python3.10 myenv

Betreten Sie die virtuelle Umgebung:

source env/bin/activate

Gehen Sie zum django4blogProjektordner:

cd django4blog

Geben Sie den folgenden Befehl ein, um die erforderlichen Python-Bibliotheken für das Projekt zu installieren.

(env) ../django4blog# pip3 install -r requirements.txt

Wenn pip3 install -r requirements.txtwährend des Befehls der folgende Fehler auftritt.

Dies liegt daran, dass die Version der lokalen tzdata-Bibliothek zu hoch ist. Die Spiegelversion von Alibaba unterstützt derzeit nur 2022.4. Zu diesem Zeitpunkt können wir die tzdata-Version in „requirements.txt“ direkt auf 2022.4 ändern.

Der Befehl zum Ändern der Ubuntu-Datei lautet wie folgt:

vi requirements.txt,öffne einen Ordner

Drücken Sie die Taste „Einfügen“ oder „i“, um mit der Änderung der Datei zu beginnen und die tzdata-Version auf 2022.4 zu ändern

Nachdem die Änderung abgeschlossen ist, drücken Sie zuerst die Esc-Taste und geben Sie dann den Befehl :wqzum Speichern und Verlassen der Datei ein.

Führen Sie den Befehl erneut aus

pip3 install -r requirements.txt

Erfolgreiche Installation

Geben Sie dann die folgenden Befehle ein, um die Sammlung statischer Ressourcen und die Datenmigration abzuschließen.

(env) ../django4blog# python3 manage.py collectstatic
(env) ../django4blog# python3 manage.py migrate

Zu diesem Zeitpunkt sind unsere Bereitstellungsarbeiten für den Entwicklungs- und Codierungsteil abgeschlossen.

Nginx-Konfiguration

Der nächste Schritt besteht darin, Nginx zu aktivieren und zugehörige Proxys zu konfigurieren.

Zuerst löschen wir die Standardkonfigurations- und Verbindungsdateien von Nginx default.

Geben Sie die Befehle separat ein /etc/nginx/sites-availableund geben Sie sie in die beiden Ordner ein:/etc/nginx/sites-enabled

sudo rm -r defaultdefaultDateien löschen .

Dann geben wir /etc/nginx/sites-availableeine eigene neue Konfigurationsdatei ein und erstellen sie:django4blog

(myenv) root.../etc/nginx/sites-available# cd /etc/nginx/sites-available
(myenv) root.../etc/nginx/sites-available# vi django4blog

Geben Sie den folgenden Konfigurationsinhalt ein:

server {
  charset utf-8;
  listen 80;
  server_name 39.107.240.223;  # 改成你的 IP

  location /static {
    alias /root/django_project/django4blog/collected_static;
  }

  location / {
    proxy_set_header Host $host;
    proxy_pass http://unix:/tmp/39.107.240.223.socket;  # 改成你的 IP
  }
}

 :wq Geben Sie nach dem Speichern und Beenden den Befehl ein

sudo ln -s /etc/nginx/sites-available/django4blog /etc/nginx/sites-enabled

Überprüfen Sie dann die Benutzerinformationen der Nginx-Konfigurationsdatei:

Ändern Sie diesen Benutzernamen root, andernfalls wird möglicherweise ein 403-Berechtigungsfehler gemeldet.

cd /etc/nginx# , vi nginx.confändern Sie den Benutzer auf root

Aktualisieren Sie abschließend die Nginx-Konfigurationsinformationen:

sudo service nginx reload

Bereiten Sie Backend-Benutzer vor und aktivieren Sie Gunicorn

Gehen Sie zunächst zurück in das Verzeichnis, in dem sich das Projekt befindet , betreten Sie die virtuelle Umgebung und geben Sie den Befehl zum Erstellen eines Superkontos ein:cd django_project/django4blog

python manage.py createsuperuser

Dann installieren Sie gunicorn:

pip3 install gunicorn

Starten Sie es gunicornund ändern Sie es in Ihre eigene öffentliche Netzwerkadresse und Ihren eigenen Projektnamen.

gunicorn --bind unix:/tmp/39.107.240.223.socket django4blog.wsgi:application

Testen und ausführen

Kehren Sie zum lokalen System zurück und geben Sie die Adresse in den Browser ein: Homepage

Erfolgreich ausgeführt! !

Dann melden wir uns beim Backend- Login | Django-Site-Administrator an und fügen ein paar Daten hinzu.

zurück zur Homepage

Artikeldetailseite lesen

Supongo que te gusta

Origin blog.csdn.net/agelee/article/details/127787103
Recomendado
Clasificación