企业级Windows10下使用Apache部署后端Flask解决方案,具体为Python3.6.6+Apache2434+mod_wsgi部署Flask【各个项目包独立 可跑多个Flask项目】
我选用的是python3.6.6+apache2.4.34(Win64)+mod_wsgi-4.6.8+ap24vc14-cp36-cp36m-win_amd64.whl(这个网上已经下载不到了,这是公司遗留的)一个虚拟环境的flask项目,放在apache上面启动。使用postman访问接口验证。1:用虚拟环境装包后,在放到apache上跑,即每个项目的包环境隔离开来。2:安装mod_wsgi,
背景:
1:公司老项目在windows10上是用apache部署的,需要学习掌握前面的技术。
2:看到前面同事的代码,缺点很明显,各个项目之间的包互相冲突,风险太大,因为它们是apache全局跑的同一个解释器。
23_10_11_分割线:
笔者能做到windows同一个apache跑flaskA,flaskB项目,二者的环境包互相隔离,而不是最初的一个apache使用一个环境包跑flaskA、flaskB项目。
期望:
1:用虚拟环境装包后,在放到apache上跑,即每个项目的包环境隔离开来。
过程:
1:根据python,apache版本,确定mod_wsgi版本(这一步十分重要!),主要就是看它是什么编译的(VC几),多少位。
我选用的是python3.6.6+apache2.4.34(Win64)+mod_wsgi-4.6.8+ap24vc14-cp36-cp36m-win_amd64.whl(这个网上已经下载不到了,这是公司遗留的)




贴出现有mod_wsgi地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/ (ctrl+f搜索:mod_wsgi)

2:安装mod_wsgi,并部署到apache里面。
我是选择pycharm开创一个flask项目的虚拟环境,我当初就是卡在这里很多天(pycharm自动创建的venu里面没有activate_this.py,假如要有,必须要cmd下
virtualenv --no-site-packages venu手动创建)
把mod_wsgi复制到venu里面的Scripts里面,
pip安装后输入mod_wsgi-express module-config,出现两行。
复制LoadModule wsgi_module "d:/python_project/test_apache_002/venu/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"
到apache目录D:\app_new\Apache-2.4.34\conf,httpd.conf里面。
检查是否安装成功的方法是apache重启不报错!




3:另外使用virtualenv重新创建一个虚拟环境的flask项目,放在apache上面启动。使用postman访问接口验证。
1:
virtualenv --no-site-packages venu # 创建虚拟环境venu
#项目生成requirement.txt文件
pip freeze > requirements.txt
#使用requirements.txt安装依赖的方式
pip install -r requirements.txt
#2:app.wsgi里面内容
activate_this = r'D:\python_project\test_venu_001\newenv\Scripts\activate_this.py'
with open(activate_this) as file_:
exec(file_.read(), dict(__file__=activate_this))
import sys
sys.path.insert(0, r'D:\python_project\test_venu_001')
from app import app as application
#3:apache配置里面内容
Listen 10020
<VirtualHost *:10020>
ServerName example.com
WSGIScriptAlias / D:\python_project\test_venu_001\app.wsgi
<Directory D:\python_project\test_venu_001>
Require all granted
</Directory>
</VirtualHost>
项目




成功标识

报错就找



坑点!
240522更新【windows下apache部署很坑,很多细节需要考虑,如果没有一个靠谱的博客,误人子弟,可以这么说~】
1:mod_wsgi版本的选择,我之前也不知道自己是什么版本,就一个个下载了pip,发现pycharm会提示你平台不符合,不能安装,还是很实用。
2:pycharm默认创建虚拟环境是不会有activate_this.py这个东西的,还是需要cmd下手动创建。
3:由于网上基本没有函数工厂部署这方面的,这也是个坑,记得转义r''地址与as application(mod_wsgi只认这个),此外假如使用mod_wsgi,其实flask就不走app.run()或者manage.run()即flask自带的服务器。
参考资料:
1:python3.6_flask_apahce_mod_wsgi 成功部署在windows2012x64 无数坑 无数次的尝试
博主更新动力
欢迎大家点赞、收藏、关注、评论、批评啦
更多推荐



所有评论(0)