Django + Apache avec mod_wsgi sur Windows Server 2016

Contexte

J'ai trébuché au même endroit à chaque fois, alors prenez une note pour moi.

environnement

supposition

--Windows Server 2016 est installé. --Apache 2.4 est installé. --Merci pour l'article Comment intégrer mod_wsgi dans Apache sur Python Windows.

Télécharger-installer

Suivez Comment intégrer mod_wsgi dans Apache sur Python Windows.

Incorporer mod_wsgi dans Apache

Je l'ai ajouté car cela ne fonctionnait pas selon l'article ci-dessus.

1. Charge du module + α

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"
…

2. Paramètres WSGIScriptAlias

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

3. Paramètres WSGIPythonPath

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

4. Paramètres du répertoire

La partie> \ garantit qu'Apache peut accéder au fichier wsgi.py.

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>

Paramètres wsgi.py côté Django

Lorsque j'essaye de me connecter, j'obtiens une erreur de serveur interne ici. ss19.png 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

Django + Apache avec mod_wsgi sur Windows Server 2016
Exécutez une application django sur Windows + Apache + mod_wsgi + service.
Apache + Django + Shibboleth sur Windows Server 2016 Résumé des articles connexes
CentOS 6.4, Python 2.7.3, Apache, mod_wsgi, Django
Comment intégrer mod_wsgi dans Apache sur Windows Python
Python3 + Django ~ Mac ~ avec Apache
Publiez votre application Django sur Amazon Linux + Apache + mod_wsgi
Développement de l'environnement Django sur Windows 10
Django - Déploiement de l'hôte virtuel mod_wsgi Apache
Comment exécuter Django sur IIS sur un serveur Windows
Bloguer avec Pelican sur Windows
Configurer un serveur Web avec CentOS7 + Anaconda + Django + Apache
Jusqu'au début du tutoriel django avec pycharm sous Windows
Définir plusieurs WSGIPythonPath avec Apache + mod_wsgi
Exécutez SwitchBot avec Bleak sur Windows 10
Exécutez python3 Django1.9 avec mod_wsgi (déployer)
Utilisez Tensorflow 2.1.0 avec Anaconda sur Windows 10!
Commençant par USD sur Windows
Premiers pas avec Python 3.8 sous Windows
Créer un environnement pour Django x Apache x mod_wsgi avec Vagrant (Ubuntu 16.04)
Exécutez le servo avec Python sur ESP32 (Windows)
Utilisation de plusieurs projets Django dans Apache (WSGIDaemonProcess)
CentOS8 + Apache2.4 + pyenv + mod_wsgi + Déploiement de projet Django
Remarques sur l'activation de PostgreSQL avec Django
Deux choses dont j'étais accro à la construction de Django + Apache + Nginx sous Windows
Janken Poi avec Python Exécutons sur un serveur local Windows pour les débutants
Je ne peux pas créer de projet avec Python3.5 (Windows) + django1.7.1.
Afficher les images ImageField normalement sur le serveur avec Django + Google Cloud Strage
Conseils de dessin avec matplotlib côté serveur
Internationalisation avec Django
Installez OpenCV 4.0 et Python 3.7 sur Windows 10 avec Anaconda
Activer Jupyter Notebook avec conda sur un serveur distant
Construire un serveur Web avec Apache 2.4 (httpd 2.4.43) + PHP 7.4 sous Linux --4 Security (chown et firewalld)
Intégrons Django et apache (httpd) sur Mac! !!
Démarrez CentOS 8 à partir de Windows 10 avec Wake On LAN
CRUD avec Django
Proxy inverse avec Apache 2.4 sur Ubuntu 19.10 Eoan Ermine
Débutants en Python accro à Django
Monter le répertoire d'un autre serveur avec sshfs
Utilisez Python / Django avec Windows Azure Cloud Service!
Le problème que Windows python est appelé dans pipenv sur WSL
Retour sur la création d'un service Web avec Django 1
Créer un serveur HTTP Apache et Wildfly sur Oracle Linux 8
Retour sur la création d'un service Web avec Django 2
PIL en Python sur Windows8 (pour Google App Engine)
Créez un environnement Open AI Gym avec Bash sur Windows 10
Déployer l'application Django créée avec PTVS sur Azure
Lancer Django sur un conteneur Docker à l'aide de docker-compose up
Installez django sur python + anaconda et démarrez le serveur
Remarques sur la façon d'utiliser Firefox avec du sélénium sous Windows
Authentifier Google avec Django
Serveur TFTP avec Docker
Django 1.11 a démarré avec Python3.6
Télécharger des fichiers avec Django
Résumé du développement avec Django
Sortie PDF avec Django
Sortie Markdown avec Django
Pylint sur Windows Atom