来源: Flask + mod_wsgi + Apache on Windows 部署成功(随时接受提问) – 火狐设计的专栏 – CSDN博客
前言
说是前言,纯粹就是吐槽。如果你赶时间,完全可以跳过这部分,我保证不会在这里隐藏任何有用的内容。
人上年纪后,可能冲劲不足,我花了大概两周的时间才成功的将flask部署到windows上。还好没有放弃,最终找到了答案。
不过这也说明我在开源软件的应用和配置上还很差劲呀,当我看到要用VC10的C/C++编译器编译源代码时,头都大了。你说我们这些平时习惯了Vistual Studio编译的,哪还懂什么make命令呀。还好网上什么都有,连帮你编译的都有,因此,编译这一难没有经历。
对于flask这样的开源软件来说,部署总是有多种选择,我现在吐槽一下我试过的,但没有成功的经历。
- PyISAPIe + IIS
- CGI + IIS (虽然配置成功,但是不能解析wsgi)
- FastCGI + Nginx
- FastCGI + Lighttpd (需要cygwin进行编译)
参考
最终方案
Windows下的编译器,参见: http://www.microsoft.com/express/vc/
步骤
可以在http://www.apachelounge.com/download/ 下载适合自己环境的版本。
将压缩包下载到本机,然后将压缩包里面的Apache24文件夹拷贝到C:\。
当然,你可以拷贝到你的系统的任何位置,但Apache的默认配置是C:\Apache24。
如果你本机运行了IIS,将其关掉。因为IIS和Apache都默认用的是80端口。如果你想配置其它端口,我相信那也不难。等把Flask部署成功后再来捣鼓吧。
打开cmd
>cd c:\
>cd Apache24\bin\
>httpd
然后打开浏览器,输入
http://localhost
如果网页上显示 It Works! ,那说明apache服务器运行起来了。
2. 安装mod_wsgi
将mod_wsgi-py34-VC10.so拷贝至C:\Apache24\modules\下,并更名为mod_wsgi.so。
打开 c:\Apache24\conf\httpd.conf 添加如下配置
LoadModule wsgi_module modules/mod_wsgi.so
从新启动httpd,如果没有报错,说明mod_wsgi模块在apache里面加载成功了。
3. 安装Python
Python 3.4安装时,最好选择将Python添加到系统目录。安装完成后就可以直接运行Python的相关程序了,例如下面安装flask时用到的pip
4. 安装flask
直接打开cmd,运行如下命令
pip install flask
它会自动将flask和flask依赖的两个库全部装上,这太方便了。
5. 创建Web App
创建C:\Test_Web\test.py
- from flask import Flask, request
- app = Flask(__name__)
- @app.route(‘/hello’)
- def hello_world():
- name = request.args.get(‘name’,”)
- return ‘Hello ‘ + name + ‘!’
- if __name__ == ‘__main__’:
- app.run()
创建C:\Test_Web\test.wsgi
- import sys
- #Expand Python classes path with your app’s path
- sys.path.insert(0, “c:/Test_Web”)
- from test import app
- #Put logging code (and imports) here …
- #Initialize WSGI app object
- application = app
注意,application一定不能改成别的。因为mod_wsgi在解析这个文件时,只认application。
另外,同IIS不同的时,不需要给C:\Test_Web文件夹加入NETWORK SERVICE用户的访问权限。
6. 在Apache中配置站点
- <VirtualHost *:80 >
- ServerAdmin example@company.com
- DocumentRoot c:\Test_Web
- <Directory “c:\Test_Web”>
- Order allow,deny
- Allow from all
- </Directory>
- WSGIScriptAlias /flasktest c:\Test_Web\test.wsgi
- </VirtualHost>
我对Apache的配置纯粹是外行。我的理解是一个VirtualHost节点就相当于在IIS里面的一个Web Site节点。如果我的理解有误,还望各位路过的Apache配置高手纠正。
我在研究的过程中还看见有人将站点的配置放在另外一个conf文件中,然后将其包含至httpd.conf。
7. 测试
如果你看见网页上出现 Hello CZY! 说明你的站点运行起来了。
剩下的工作就是以当前的工作为原型,开始Python的Web App开发之旅吧。如果你在尝试的过程中遇到什么问题,请给我随时在CSDN上留言。