[PYTHON] Django + Apache mit mod_wsgi unter Windows Server 2016

Hintergrund

Ich bin jedes Mal an derselben Stelle gestolpert, machen Sie sich also eine Notiz.

Umgebung

Annahme

--Windows Server 2016 ist installiert.

Download-Installation

Befolgen Sie Einbetten von mod_wsgi in Apache unter Python Windows.

Integrieren Sie mod_wsgi in Apache

Ich habe es hinzugefügt, weil es gemäß dem obigen Artikel nicht funktioniert hat.

1. Modullast + α

Nach der Installation wird "mod_wsgi-express.exe" im Python Scripts-Verzeichnis erstellt ("C: \ Programme \ Python38 \ Scripts" in Ihrer Umgebung). Die Einstellungen für Apache httpd.conf werden automatisch von mod_wsgi-express module-config generiert. Kopieren Sie diese und fügen Sie sie in httpd.conf ein.

> mod_wsgi-express module-config

LoadFile "c:/program files/python38/python38.dll"
LoadModule wsgi_module "c:/program files/python38/lib/site-packages/mod_wsgi/server/mod_wsgi.cp38-win_amd64.pyd"
WSGIPythonHome "c:/program files/python38"

httpd.conf


…
LoadFile "c:/program files/python38/python38.dll"
LoadModule wsgi_module "c:/program files/python38/lib/site-packages/mod_wsgi/server/mod_wsgi.cp38-win_amd64.pyd"
WSGIPythonHome "c:/program files/python38"
…

2. WSGIScriptAlias-Einstellungen

Referenz: Django 1.4-Dokumentation - Verwendung von Django in Apache- und mod_wsgi-Umgebungen Das erste Argument in der Zeile> WSGIScriptAlias ist der Speicherort, an dem Sie Ihre Anwendung veröffentlichen (/steht für die Stamm-URL), und das zweite Argument ist der Speicherort der" WSGI-Datei (siehe unten) "auf Ihrem System. WSGI wird normalerweise in einem Projektpaket platziert (in diesem Beispiel mysite). Apache verarbeitet nun alle Anforderungen unter der Stamm-URL unter Verwendung der angegebenen WSGI-Datei.

Das heißt, die Anforderung, die nach dem ersten Argument kommt, wird von der durch das zweite Argument angegebenen WSGI-Datei verarbeitet. Geben Sie für das zweite Argument wsgi.py in der Django-Projekt-App an, zu der Sie eine Verbindung herstellen möchten.

httpd.conf


WSGIScriptAlias / d:/apps/appname/appname/wsgi.py

Referenz: mod_wsgi --WSGIScriptAlias

3. WSGIPythonPath-Einstellungen

Referenz: Django 1.4-Dokumentation - Verwendung von Django in Apache- und mod_wsgi-Umgebungen Die Zeile> WSGIPythonPath stellt sicher, dass die Pakete Ihres Projekts für Importe in Python-Pfade verwendet werden können.

Dies bedeutet, dass ich Ihnen den Speicherort der im Projekt verwendeten Site-Pakete mitteilen werde. Wenn Sie die Python-Version ändern und mehr venv erstellen, müssen Sie auch diesen Pfad ändern (Zugehöriger Artikel: ValueError at set_wakeup_fd funktioniert nur in der Haupt-Thread-Problemumgehung / hiro-jp / items / 1a15ac51165f5af395f3)), aber normalerweise ist appname / venv / Lib / site-packages in Ordnung.

httpd.conf


WSGIPythonPath d:/apps/appname/venv/Lib/site-packages

4. Verzeichniseinstellungen

Der Teil> \ garantiert, dass Apache auf die Datei wsgi.py zugreifen kann.

Im Folgenden bedeutet dies, den Zugriff auf "d: / apps / appname / appname" zuzulassen ("Alle erforderlich").

httpd.conf


<Directory d:/apps/appname/appname>
   <Files wsgi.py>
       Require all granted
   </Files>
</Directory>

** Achtung **: In Alte Materialien wie Django 1.4 Documentation Die Beschreibung lautet wie folgt, funktioniert jedoch nicht in Apache 2.4 oder höher (Referenz: Apache 2.4 hat die Beschreibungsmethode für Zugriffsbeschränkungen geändert / items / c8eb1fedef3c00c5fbac)).

httpd.conf


# Apache2.2 Vorherige Beschreibungsmethode
<Directory d:/apps/appname/appname>
   <Files wsgi.py>
      Order allow,deny
      Allow from all
   </Files>
</Directory>

Django Seite wsgi.py Einstellungen

Wenn ich versuche, eine Verbindung herzustellen, wird hier ein interner Serverfehler angezeigt. ss19.png Es kann wie folgt gelöst werden.

wsgi.py


"""
WSGI config for appname project.

It exposes the WSGI callable as a module-level variable named ``application``.

For more information on this file, see
https://docs.djangoproject.com/en/3.0/howto/deployment/wsgi/
"""

import os
import sys  #← Hinzufügen

from django.core.wsgi import get_wsgi_application

sys.path.append('D:/apps/appname') #← Hinzufügen

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'appname.settings')

application = get_wsgi_application()

In Verbindung stehender Artikel: Umgang mit dem internen Serverfehler mod_wsgi 500

Referenz: Apache2 mod_wsgi, 500 Internal Server Error

Recommended Posts

Django + Apache mit mod_wsgi unter Windows Server 2016
Führen Sie eine Django-Anwendung unter Windows + Apache + mod_wsgi + aus.
Apache + Django + Shibboleth unter Windows Server 2016 Zusammenfassung verwandter Artikel
CentOS 6.4, Python 2.7.3, Apache, mod_wsgi, Django
So binden Sie mod_wsgi in Apache unter Python Windows ein
Python3 + Django ~ Mac ~ mit Apache
Veröffentlichen Sie Ihre Django-App unter Amazon Linux + Apache + mod_wsgi
Entwicklung der Django-Umgebung unter Windows 10
Django - Bereitstellung des virtuellen Hosts Apache mod_wsgi
So führen Sie Django unter IIS auf einem Windows-Server aus
Bloggen mit Pelican unter Windows
Richten Sie einen Webserver mit CentOS7 + Anaconda + Django + Apache ein
Bis zum Start des Django-Tutorials mit Pycharm unter Windows
Legen Sie mit Apache + mod_wsgi mehrere WSGIPythonPath fest
Führen Sie SwitchBot mit Bleak unter Windows 10 aus
Führen Sie python3 Django1.9 mit mod_wsgi aus (deploy)
Verwenden Sie Tensorflow 2.1.0 mit Anaconda unter Windows 10!
Beginnend mit USD unter Windows
Erste Schritte mit Python 3.8 unter Windows
Erstellen Sie mit Vagrant (Ubuntu 16.04) eine Umgebung für Django x Apache x mod_wsgi.
Führen Sie das Servo mit Python unter ESP32 (Windows) aus.
Arbeiten mit mehreren Django-Projekten unter Apache (WSGIDaemonProcess)
CentOS8 + Apache2.4 + pyenv + mod_wsgi + Django-Projektbereitstellung
Hinweise zum Aktivieren von PostgreSQL mit Django
Zwei Dinge, die ich süchtig danach war, Django + Apache + Nginx unter Windows zu erstellen
Janken Poi mit Python Lassen Sie uns für Anfänger auf einem lokalen Windows-Server laufen
Ich kann mit Python3.5 (Windows) + django1.7.1 kein Projekt erstellen.
Zeigen Sie ImageField-Bilder normalerweise mit Django + Google Cloud Strage auf dem Server an
Zeichentipps mit matplotlib auf der Serverseite
Internationalisierung mit Django
Installieren Sie OpenCV 4.0 und Python 3.7 unter Windows 10 mit Anaconda
Aktivieren Sie Jupyter Notebook mit conda auf dem Remote-Server
Webserverkonstruktion mit Apache 2.4 (httpd 2.4.43) + PHP 7.4 unter Linux ―― 4. Sicherheit (chown und firewalld)
Lassen Sie uns Django und Apache (httpd) auf dem Mac integrieren! !!
Starten Sie CentOS 8 von Windows 10 mit Wake On LAN
CRUD mit Django
Reverse Proxy mit Apache 2.4 unter Ubuntu 19.10 Eoan Ermine
Python-Anfänger süchtig nach Django
Hängen Sie das Verzeichnis eines anderen Servers mit sshfs ein
Verwenden Sie Python / Django mit dem Windows Azure Cloud Service!
Das Problem, dass Windows Python in pipenv auf WSL aufgerufen wird
Rückblick auf die Erstellung eines Webdienstes mit Django 1
Erstellen Sie Apache HTTP Server und Wildfly unter Oracle Linux 8
Rückblick auf die Erstellung eines Webdienstes mit Django 2
PIL in Python unter Windows8 (für Google App Engine)
Erstellen Sie eine Open AI Gym-Umgebung mit Bash unter Windows 10
Stellen Sie die mit PTVS erstellte Django-App in Azure bereit
Starten Sie Django auf einem Docker-Container mit Docker-Compose Up
Installieren Sie django auf Python + Anaconda und starten Sie den Server
Hinweise zum Betrieb von Firefox mit Selen unter Windows
Authentifizieren Sie Google mit Django
TFTP-Server mit Docker
Django 1.11 wurde mit Python3.6 gestartet
Laden Sie Dateien mit Django hoch
Entwicklungsverdauung mit Django
PDF mit Django ausgeben
Markdown-Ausgabe mit Django
Pylint unter Windows Atom