1.Django+Apache+mod_wsgi
??前面我们使用 python manage.py runserver 来运行服务器,这只适用测试环境中使用。正式发布的服务,我们需要一个可以稳定而持续的服务器,比如apache, Nginx, lighttpd等,本文将以Apache为例。
2.环境配置
??① Python 3.7.11 ??② Django3.2.7 ??③ apache2.4.51 ??④ mod_wsgi-4.9.0
3.下载Apache
??① 访问Apache官网,下载对应版本。 ??② 下载完成后解压,把Apache24放在你想要放的位置,不需要安装,我这里放在了D盘的根目录下。 ??③ 配置Apache服务器文件,打开D:\Apache24\conf目录下的httpd.conf文件,我这里用的是sublime text打开的,修改下面几行。 ??在cmd输入下面命令查看IP
ipconfig
......
Define SRVROOT "D:/Apache24"
......
Listen 192.168.1.107:80
......
ServerName 192.168.1.107:80
......
??④ 创建apache服务,以管理员身份运行命令行,cd进入D:\Apache24\bin文件夹,输入如下代码创建服务,出现successfully installed说明服务创建成功。(服务删除操作命令行为sc delete “Apache24py”)
httpd -k install -n "apache24py"
??④ 开启服务,进入浏览器访问本地IP或者127.0.0.1就可以看到下面第二张图的界面。
4.下载配置mod_wsgi
??① 安装mod_wsgi,下载相应版本mod_wsgi Python的插件,这个插件我理解的作用是一个python与apache的接口的作用,因为django项目本身使用python写的。cp37指python3.7,win_adm64指操作系统为64位,一定下载正确的版本。 ??② pip安装mod_wsgi,进入下载目录,我这里下载到D盘根目录下的,使用下面命令进行安装,注意:首先要确保安装到的是Django开发环境,我使用的conda命令进入Django环境。
conda activate pydjango
pip install mod_wsgi-4.9.0-cp37-cp37m-win_amd64.whl
??③ 安装文件名根据实际更改,安装成功后再使用下面的命令,获取Python三行的配置信息,后面配置Apache要使用。
mod_wsgi-express module-config
??④ 出现以下三行提示信息,这三行信息一定要记下来,后面配置Apache最重要的就是这三行提示信息。
LoadFile "d:/installpackage/anaconda3/envs/pydjango/python37.dll"
LoadModule wsgi_module "d:/installpackage/anaconda3/envs/pydjango/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
WSGIPythonHome "d:/installpackage/anaconda3/envs/pydjango"
5.配置Django工程
??再次打开httpd.conf文件,再最末尾添加如下代码,具体解释看注释,实际情况根据自己的项目位置更改。
LoadFile "d:/installpackage/anaconda3/envs/pydjango/python37.dll"
LoadModule wsgi_module "d:/installpackage/anaconda3/envs/pydjango/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
WSGIPythonHome "d:/installpackage/anaconda3/envs/pydjango"
WSGIScriptAlias / D:/Py/DP/myproject/myproject/wsgi.py
WSGIPythonPath D:/Py/DP/myproject
<Directory D:/Py/DP/myproject/myproject>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Alias /static D:/Py/DP/myproject/static
<Directory D:/Py/DP/myproject/static>
AllowOverride None
Options None
Require all granted
</Directory>
6.错误解决
??① 开启服务出现下面的错误。 ??② 通过查看错误日志D:\Apache24\logs\error.log。 ??③ 解决措施,由于我这里用的conda安装的Python虚拟环境,所以需要添加PYTHONHOME环境变量,变量值为Python路径。
7.开启服务
??添加上面的环境变量后,重启服务,在浏览器就可以访问了。
|