【Django】在Apache服务器通过wsgi部署Django
- 安装wsgi,下载
mod_wsgi-4.9.0-cp38-cp38-win_amd64.whl
文件,要先选择对应Python版本(cp38对应Python3.8),然后使用pip
命令安装 - 安装好wsgi之后,在黑窗口运行
mod_wsgi-express module-config
命令,查看Apache的配置信息,一般会输出以下信息:
LoadFile "c:/users/administrator/appdata/local/programs/python/python38/python38.dll"
LoadModule wsgi_module "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\Lib\site-packages\mod_wsgi\server\mod_wsgi.cp38-win_amd64.pyd"
WSGIPythonHome "c:/users/administrator/appdata/local/programs/python/python38"
把这3行复制到Apache配置文件httpd.conf
的最后。
- 配置环境变量。
PYTHONHOME
和PYTHONPATH
,如果不配置Apache启动不了
PYTHONHOME c:/users/administrator/appdata/local/programs/python/python38
PYTHONPATH c:/users/administrator/appdata/local/programs/python/python38 - 配置Apache虚拟主机
<VirtualHost *:8888>
WSGIScriptAlias / d:/mysite/mysite/wsgi.py
# wsgi文件权限
<Directory D:/mysite/mysite>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
# static目录权限
Alias /static D:/mysite/static
<Directory D:/mysite/static>
Require all granted
</Directory>
# media目录权限
Alias /media D:/mysite/media
<Directory D:/mysite/media>
Require all granted
</Directory>
</VirtualHost>
- 修改Django项目的wsgi文件
"""
WSGI config for mysite 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/2.2/howto/deployment/wsgi/
"""
import os
# 后添加的代码开始
import sys
import site
site.addsitedir("d:/envs/project/Lib/site-packages") # 虚拟环境路径
sys.path.append("d:/mysite")
sys.path.append("d:/mysite/mysite")
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
# 后添加的代码结束
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
application = get_wsgi_application()