Win+apache+mod_wsgi+WSGIPythonHome配置部署多个虚拟环境解决方案

 

在Win下本地配置Python Django项目,如果存在多个有些麻烦,单个项目部署下面文档:

 

windowns下配置Apache+Python+Flask+mod_wsgi(详细部署步骤)

 

遇到的坑:

 

1、通过上面文档配置后,每个项目可以单独使用自己的虚拟环境,不影响其他项目依赖包,同样,在第三步执行【mod_wsgi-express module-config】后会得到一个【WSGIPythonHome】

如果将这个WSGIPythonHome同样放在httpd.conf,Apache不会报错,但会有警告,会跳过前面一个WSGIPythonHome,加载后面WSGIPythonHome的环境位置,这时候如果是新项目,前面原有的项目环境就不起作用了。

另外:WSGIPythonHome配置必须放在httpd.conf中,加载到VirtualHost,Apache启动不了,不用再试了。

 

2、网上有不少教程是用 WSGIDaemonProcess和WSGIProcessGroup配置解决的,这个应该是加载了wsgi_module/mod_wsgi.so 才可以用,我的本地项目是wsgi_module/mod_wsgi.cp36-win_amd64.pyd 这样的,所以这个也不行。

Win+apache+mod_wsgi+WSGIPythonHome配置部署多个虚拟环境解决方案

3、网上还有一个教程,在wsgi文件中加:

activate_this = '/home/bjhee/virtualenv/bin/activate_this.py'

execfile(activate_this, dict(__file__=activate_this))
 
这个意思是单独的项目指定激活环境,但是,我的项目还是不行。
 
在.wsgi文件中引入这段代码原理是说得通的,通过我的测试,发现代码没执行。
 
解决方案:
 
上面第3点的代码是有问题的,修改成下面的,即可正常运行:
 
Win+apache+mod_wsgi+WSGIPythonHome配置部署多个虚拟环境解决方案
 
with open(activate_this) as f:
    exec(f.read(),dict(__file__=activate_this))

 

 

参考资料:

 

http://www.pythondoc.com/flask/deploying/mod_wsgi.html

https://segmentfault.com/q/1010000004687378

https://modwsgi.readthedocs.io/en/develop/user-guides/virtual-environments.html  mod_wsgi配置虚拟环境的详细介绍,仔细看,认真看,能解决很多问题。