前言
在windows上部署Flask环境遇到许多大坑,一一记录下来。
- 一级大坑:Apache,mod_wsgi和Python都必须用相同版本的C/C++编译器生成,它们要么是32位的,要么是64位的,不能混用。
一般来说python3版本对应vc10编译,python2对应vc9,如果你使用的是python2版本那么Apache和mod_wsgi应该使用vc10编译后的。
下载配置Apache
http://www.apachelounge.com/download/这个地址有VC编译后的Apache,下载后可直接使用。(我采用的是VC10编译后的)
- Apache配置的坑
下载后是个zip包解压后应该把Apache文件放在C盘的根目录下,因为Apache的配置文件制定的默认路径就是C盘根目录下,没按要求就会产生Apache服务无法启动。
放进C盘根目录后cmd命令进入到Apache的bin目录
之后安装Apache服务cmd命令>http -k install
启动服务>net start Apache2.4(这里的Apache2.4是服务名称,启动失败你需要查看你本机Apache服务名称在启动)
启动服务失败一般是因为路径问题看看你的解压后的Apache文件是不是在C盘根目录
停止服务>net stop Apache2.4 删除服务>sc delete apache(先停后删)
最后打开浏览器访问localhost显示It Works!说明Apache配置成功(访问localhost的时候默认添加了80端口http协议的缘由)
配置mod_wsgi
因为要找VC10编译过的在网上找了很久结果花了1积分在csdn中下载到了一个http://download.csdn.net/download/w5a1v9/9415164这里下载的文件要多次解压先是rar文件-》gz-》tar-》文件夹中包括VC9和VC10编译过的文件,32位和64位的。
将mod_wsgi-py34-VC10.so拷贝至C:\Apache24\modules\下,并更名为mod_wsgi.so,这个so文件就在解压后的目录下。
打开 c:\Apache24\conf\httpd.conf 添加如下配置
LoadModule wsgi_module modules/mod_wsgi.so
,位置应该是任意的或者是加入到相同代码段的区域再重启Apache服务,成功启动则说明配置成功。
安装python和Flask
这里不再重复,python路径最好配置到电脑环境变量中,在通过pip安装了Flask
把Flask项目配置进来
- 我的项目启动文件的路径为E:\star\git_manage\app.py,在这个同级目录下创建test.wsgi文件,代码内容如下
# wsgi配置文件
import sys, os
sys.path.insert(0, os.path.dirname(__file__))
from manage import app
application = app
注意,application一定不能改成别的。因为mod_wsgi在解析这个文件时,只认application。
在Apache中配置站点
<VirtualHost *:80>
#ServerAdmin example@company.com
#DocumentRoot c:\Test_Web
ServerName localhost
<Directory "E:\star\git_manage">
Order allow,deny
Allow from all
</Directory>
WSGIScriptAlias / E:\star\git_manage\test.wsgi
</VirtualHost>
这里#后面的代码是注释掉的因为这两段代码不注释掉Apache会提示你没有权限访问页面,参考博文http://blog.csdn.net/firefox1/article/details/46438769这位前辈可能有些配置没有给我们贴出来才会导致这种错误,因为我发现他博文的评论下好多出现这种问题。之后再参考了这篇文章才配置出来http://www.jb51.net/article/65536.htm
我这边的所有配置已经贴出来啦。
我的Flask启动文件如下所示
# 用在生产环境下启动
#!/usr/bin/env python
import os
from app import create_app, db
app = create_app(os.getenv('FLASK_CONFIG') or 'default')
if __name__ == '__main__':
app.run()
配置完成后记得重启Apache服务,之后访问http://localhost/index就可以看到我的Flask页面啦!!!
ps:这是我的第一篇博文希望不会让大家失望~