Django+Apache+Virtualenv在Windows上的部署
环境:
Python3.6.8
Django2.2
Apache24
Windows10
流程:
Django项目路径:D:\pywww\djbbs

Apache路径:D:\Apache24
Pyhton路径:D:\python36
第一次练习性的部署,一路摸爬滚打,参考了一堆文档,踩了不少坑,最终成功。现将过程记录如下:
- 我想用python虚拟环境来部署,于是用virtualenv在D盘建了个虚拟环境,路径为:D:\pyenvs\py36
- 下载对应apache和python版本的mod_wsgi 4.7.1的whl包,切换到虚拟环境,pip安装,然后执行命令如下:
mod_wsgi-express module-config
系统会输出如下:
LoadModule wsgi_module "d:/pyenvs/py36/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd" WSGIPythonHome "d:/pyenvs/py36"
这里有两种情况,如果你没用virtualenv虚拟环境,还会多一个LoadFile配置项如下:
loadFile "d:/python36/python36.dll"
当然,如果是这种情况,你应该可以很顺利的部署完成。
先记住上述输出的配置项,马上要用到。 - 打开apache的httpd.conf配置文件,在底部添加如下:
LoadModule wsgi_module "d:/pyenvs/py36/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd" WSGIPythonHome "d:/python36" WSGIPythonPath "d:/pyenvs/py36/Lib/site-packages;d:/pywww/djbbs" #wsgi文件地址 WSGIScriptAlias / D:\pywww\djbbs\djbbs\wsgi.py
#wsgi文件权限 <Directory D:\pywww\djbbs\djbbs> <Files wsgi.py> Require all granted </Files> </Directory>
#static目录权限 Alias /static D:\pywww\djbbs\static <Directory D:\pywww\djbbs\static> Require all granted </Directory>
#media目录权限 Alias /media D:\pywww\djbbs\media <Directory D:\pywww\djbbs\media> Require all granted </Directory>我们需要注意的就是上述的这两行配置项:
WSGIPythonHome "d:/python36" WSGIPythonPath "d:/pyenvs/py36/Lib/site-packages;d:/pywww/djbbs"
WSGIPythonHome的路径要指向全局,WSGIPythonPath要添加虚拟环境的site-packages。
如果没这样配置Home启动apache就会报错:![]()
Path没加访问就会500
我就卡在这儿了,完全没搞清楚问题出在哪,直到看了这篇文章,“因此这些新版本无法以某种方式成功找到该encodings模块”,说实话,我看的很懵。。。
按照上述配置后,apache启动时,项目就能找到虚拟环境的包和全局python的包,项目就能跑起来了。为什么会这样呢?,但终归问题解决了。

浙公网安备 33010602011771号