J'ai trébuché au même endroit à chaque fois, alors prenez une note pour moi.
--Windows Server 2016 est installé. --Apache 2.4 est installé. --Merci pour l'article Comment intégrer mod_wsgi dans Apache sur Python Windows.
Suivez Comment intégrer mod_wsgi dans Apache sur Python Windows.
Je l'ai ajouté car cela ne fonctionnait pas selon l'article ci-dessus.
Après l'installation, mod_wsgi-express.exe
est créé dans le répertoire Python Scripts ( C: \ Program Files \ Python38 \ Scripts
dans votre environnement).
Les paramètres d'Apache httpd.conf sont automatiquement générés par mod_wsgi-express module-config
, donc copiez et collez ceci dans httpd.conf.
> 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"
…
Référence: Documentation Django 1.4 - Comment utiliser Django dans un environnement Apache et mod_wsgi
Le premier argument sur la ligne> WSGIScriptAlias
est l'emplacement où vous publiez votre application (/
représente l'URL racine), et le deuxième argument est l'emplacement du" fichier WSGI (discuté ci-dessous) "sur votre système. WSGI est généralement placé dans un package de projet (mysite dans cet exemple). Apache traitera désormais toutes les demandes sous l'URL racine à l'aide du fichier WSGI spécifié.
Autrement dit, cela signifie que la demande qui vient après le premier argument est traitée par le fichier WSGI spécifié par le deuxième argument. Pour le deuxième argument, spécifiez wsgi.py dans l'application de projet Django à laquelle vous souhaitez vous connecter.
httpd.conf
WSGIScriptAlias / d:/apps/appname/appname/wsgi.py
Référence: mod_wsgi --WSGIScriptAlias
Référence: Documentation Django 1.4 - Comment utiliser Django dans un environnement Apache et mod_wsgi
La ligne> WSGIPythonPath
garantit que les packages de votre projet peuvent être utilisés pour les importations dans les chemins Python.
Cela signifie que je vous indiquerai l'emplacement des packages de site utilisés dans le projet. Si vous modifiez la version de Python et créez plus de venv, vous devez également modifier ce chemin (Article connexe: ValueError at set_wakeup_fd ne fonctionne que dans la solution de contournement du thread principal / hiro-jp / items / 1a15ac51165f5af395f3)), mais généralement ʻappname / venv / Lib / site-packages` est bien.
httpd.conf
WSGIPythonPath d:/apps/appname/venv/Lib/site-packages
La partie> \
Dans ce qui suit, cela signifie autoriser l'accès à d: / apps / appname / appname
( Exiger tout accordé
).
httpd.conf
<Directory d:/apps/appname/appname>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
** Attention **: Dans Anciens matériaux comme la documentation Django 1.4 La description est la suivante, mais cela ne fonctionne pas dans Apache 2.4 ou version ultérieure (Référence: Apache 2.4 a changé la méthode de description des restrictions d'accès / items / c8eb1fedef3c00c5fbac)).
httpd.conf
# Apache2.2 Méthode de description précédente
<Directory d:/apps/appname/appname>
<Files wsgi.py>
Order allow,deny
Allow from all
</Files>
</Directory>
Lorsque j'essaye de me connecter, j'obtiens une erreur de serveur interne ici. Il peut être résolu par ce qui suit.
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 #← Ajouter
from django.core.wsgi import get_wsgi_application
sys.path.append('D:/apps/appname') #← Ajouter
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'appname.settings')
application = get_wsgi_application()
Article connexe: Comment gérer l'erreur de serveur interne mod_wsgi 500
Référence: Apache2 mod_wsgi, 500 Internal Server Error
Recommended Posts