您的位置:首页 > 运维架构 > Apache

采用Apache+mod_wsgi在windows下搭建Flask项目(本地部署Flask的生产环境)

2016-12-24 15:57 791 查看

前言

在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:这是我的第一篇博文希望不会让大家失望~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  编辑器