win2008 R2 生产环境 安装python flask apach mod_wsgi

2 篇文章 0 订阅
1 篇文章 0 订阅

0 前言

因有一台云服务器,服务器为win2008 R2,运行着ASPX的网站,其构架为IIS+MYSQL。为了配合后续MQTT等开发,打算在该服务上跑python和flask.

因现有网站是基于IIS,所以最开始利用IIS服务器,wfastcgi模块。网上也有很多教程,但是根据他们的方案,始终没有调试成功。

开始尝试apache+mod_wsgi,通过大师们的教程,虽然版本和配置环境要求需要比较高,但是还是调试成功。

python flask 在linux服务配置非常简单,而window 配置非常苛刻,所以非特殊情况还是推荐采用linux来运行。

1 版本匹配说明

Windows 下安装python flask需要考虑以下的VC++的编译版本问题:
windows系统的VC++ 库
python的编译版本
apache的编译版本
mod_wsgi的编译版本
python 3.7以上版本都是VC++2017编译,而apache和mod_wsgi最新为2016版编译。
我们需要先考虑windows VC库和mod_wsgi的编译版本,再选择相应的python版本号和apache编译版本。刚开始先安装python,结果发现apache和mod_wsgi无法找到合适的版本。自己编译太麻烦,也容易出错。

1.1 windows VC++库安装

windows 版本为2008 R2,已经升级并打了补丁,变为SP1,可以安装VC++2015(vc14)库。要是没有打补丁到SP1,需要更新后再安装。
在这里插入图片描述
windows官方VC++2015库下载地址
在这里插入图片描述

1.2 mod_wsgi

mod_wsgi 采用已经编译好的版本,连接地址为:https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi。

在这里插入图片描述
其中ap24vcXX标识为apache的版本为2.4,采用VC14(VC++2015)编译;cpXX为python版本,win_am64为win 64位架构。

打算采用3.6版本的python,但是没有明显标记vc14版本的mod_wsgi. 打算采用mod_wsgi‑4.7.1‑cp36‑cp36m‑win_amd64.whl来尝试配置,居然尝试通过。

1.3 python

下载python,下载地址:https://www.python.org/downloads/windows/

在这里插入图片描述
安装完成后,运行python,vc版本位1900,即VC++2015.
在这里插入图片描述

1.4 Apache

Apache 下载地址为:https://www.apachehaus.com/cgi-bin/download.plx
在这里插入图片描述

2 安装与配置

2.1 apache 安装配置

apache 不需要安装,直接解压放到服务器目录下,例如c:\server.

apache每次运行再cmd下输入目录\bin\httpd,太麻烦,可以采用添加环境变量。
在这里插入图片描述
双击bin目录下的ApacheMonitor.exe,出现控制界面(这个是配置好的界面)在这里插入图片描述
修改配置文件apache/conf/httpd.conf,端口改为8080 8081(因运行环境已经占用80端口),SRVROOT目录改为“c:/server/Apache24”
在这里插入图片描述
在这里插入图片描述
在服务ApacheMonitor中重启服务,IE中输入localhost:8080,回出现Apache的页面。
在这里插入图片描述

2.2 安装mod_wsgi

把下载的mod_wsgi_XXXXX.whl文件复制到python\Scripts下,在CMD终端,将运行目录调整C:\python\Script目录,使用pip3安装

pip3 install "mod_wsgi‑4.7.1‑cp36‑cp36m‑win_amd64.whl"  
cd c:\server\python\Script
mod_wsgi-express module-config
loadFile "c:/server/python/python36.dll"
LoadModule wsgi_module "c:/server/python/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"
WSGIPythonHome "c:/server/python"

再将下面文件拷贝到apache的配置文件apache/conf/httpd.conf中添加上述运行结果的最后三行,具体如下:
在这里插入图片描述

2.3 安装flask

在cmd 终端输入 pip3 install flask安装flask

3 配置与测试

3.1 创建网站目录与网站文件

创建网站目录c:\server\test,在这个目录下创建下面两个文档
利用pycharm IDE粘贴下列代码,保存为test.py

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
    return "Welcom to win2008 python flask new!"
    
if __name__ == '__main__':
    app.run()

在粘贴下列代码,保存为test.wsgi

import sys

#app's path
sys.path.insert(0,"C:/server/test")

from test import app 

#Initialize WSGI app object
application = app

注意wsgi文件只能放在网站根目录下。

3.2 配置apache 虚拟机

修改配置文件apache/conf/httpd.conf,先增加监听端口号8081(前面已经配置了,不在重复贴图),再开启虚拟主机选项,去掉“#”,如下:

在这里插入图片描述
在conf/extra/httpd-vhosts.conf的最后加入下面内容:

<VirtualHost *:8081>
    ServerName example.com
    Documentroot c:\server\test
    WSGIScriptAlias /test C:\server\test\test.wsgi
    <Directory C:\server\test>
        Require all granted
    </Directory>
</VirtualHost>

保存后重启服务

3.3 测试

在IE浏览器输入localhost:8081/test/,可以看到如下图结果。
在这里插入图片描述

3. 4 虚拟环境下配置安装

为了使项目的环境和全局环境隔离开,常用虚拟环境安装和运行python+flask。
计划在c:\server目录下增加一个虚拟环境下网站目录,文件夹为web01.

安装虚拟环境

在CMD终端下输入

cd c:\server
pip install virtualenv

运行 “virtualenv web01” 命令

virtualenv web01

在这里插入图片描述
在server目录下创建了web01文件夹,其文件下内容如下:
在这里插入图片描述

激活虚拟环境

切换到web01\Scripts目录下,运行activate激活虚拟环境,并进入虚拟环境界面下
在这里插入图片描述

虚拟环境下安装flask

输入pip3 install flask即可
在这里插入图片描述

测试代码

from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
    return "Welcom to virtual win2008 python flask!"
if __name__ == '__main__':
    app.run()

保存为test.py,存储在web01目录下;

import sys

#app's path
sys.path.insert(0,"C:/server/web01")#注意网站目录地址也可以改为C:\\server\\web01,必须是两根\\
from test import app 

#Initialize WSGI app object
application = app

保存为test.wsgi,存储在web01下。

Apache 虚拟主机配置修改

只需要修改虚拟主机的配置(httpd-vhosts.conf)即可,如下:

<VirtualHost *:8081>
    ServerName example.com
    Documentroot c:\server\web01
    WSGIScriptAlias /test C:\server\web01\test.wsgi
    <Directory C:\server\web01>
        Require all granted
    </Directory>
</VirtualHost>

测试

重启Apache 服务器,在IE地址栏输入“localhost:8081/test/”
在这里插入图片描述

4 其他说明

4.1 wsgi 启用虚拟环境的应用

上文中采用的虚拟环境测试,是把wsgi配置到python主环境中的,不是配置到虚拟环境中,若在虚拟环境中,可能需要对wsgi做先激活虚拟环境,再调用flask

activate_this = r'C:\server\web01\Scripts\activate_this.py'
exec(compile(open(activate_this, "rb").read(), activate_this, 'exec'), dict(__file__=activate_this))
import sys
#Expand Python classes path with your app's path
sys.path.insert(0, r'C:\server\web01\')
#from test import app
#application = app
#上面两句话组合成一体
from test import app as application

4.2避免冲突

避免过个api或者网站发生冲突,可以在Apache 住配置文件中最后加上,下面语句。

WSGIApplicationGroup %{GLOBAL}

4.3 自动更新模块

如果我们修改test.py的内容,如下:

from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
    return "Welcom to virtual new win08!"
if __name__ == '__main__':
    app.run()

不重启apache 服务时,IE访问的结果还是未修改前的结果。
在这里插入图片描述

在Apache 虚拟机配置文件中加入WSGIScriptReloading On 测试后没有起作用。
其他的采用在入口文件test.py中加入debug=True也不行。
因为我们开发是在环境中做好,再到生产环境中运行,所以影响不是很大。就没有深入处理,若需要深入专研,可以仔细阅读mod_wsgi的英文资料,网址:https://modwsgi.readthedocs.io/en/develop/user-guides/reloading-source-code.html。

5 参考文献

1)flask在window下使用Apache进行部署的详细指南
2)Windows下部署Flask的Web服务
3)window 2008 r2 搭建apache服务器详解
4)mod_wsgi (Apache)
5)windows下apache + mod_wsgi + python部署flask接口服务
6)在Windows环境,采用Apache + mod_wsgi的方式部署flask
7)Flask+Apache24+mod_wsgi+virtualenv虚拟环境 部署在Windows上

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值