背景:

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 无数坑 无数次的尝试

博主更新动力

欢迎大家点赞、收藏、关注、评论、批评啦 

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐