Windows下部署Flask的Web服务
概述
Flask提供了轻量级的Web服务,方便我们开发和调试,但是实际部署的时候,却不能直接用Flask发布应用,还需要Web服务和WSGI(web服务网关接口)。Flask更多是作为Web Framework,而不是Web Server。
我们用一个图来理解“web服务器,web框架与 WSGI ”之间的关系:
Web服务器层。Web服务器的主要作用就是接收请求 、处理请求、返回响应。比如:Nginx,Apache,IIS等。
Web框架层。Web框架的作用主要是方便我们开发 web应用程序,HTTP请求的动态数据就是由 web框架层来提供的。比如:Django、Flask等。
WSGI层。WSGI 不是服务器,也不是用于与程序交互的API,只是一种接口,它只适用于 Python 语言,其全称为 Web Server Gateway Interface,定义了 web服务器和 web应用之间的接口规范。也就是说,只要 web服务器和 web应用都遵守WSGI协议,那么 web服务器和 web应用就可以随意的组合。
大概介绍到这儿,下面还是说具体的搭建步骤。
先划重点(这个是造成无数人部署失败的核心):
mod_wsgi 版本、Apache 版本、Windows 环境、 Python 的版本要一一匹配
1、准备资源
- Python
- Apache
- mod_wsgi
- Flask
2、 安装Python
官网下载地址:
https://www.python.org/downloads/
这里我下载的 下载最新的 Python 3.6.5,64位
如何判断python版本和vc版本关系呢:
安装完成后命令提示符下输入:
Python
就可以看到对应的 v.1900
Visual C++ 2005 (8.0) MSC_VER=1400
Visual C++ 2008 (9.0) MSC_VER=1500
Visual C++ 2010 (10.0) MSC_VER=1600
Visual C++ 2012 (11.0) MSC_VER=1700
Visual C++ 2013 (12.0) MSC_VER=1800
Visual C++ 2015 (14.0) MSC_VER=1900
Visual C++ 2017 (15.0) MSC_VER=1910
这样,我们就知道,Python3.6.5 对应VC 2015,这个在后面要用到.
3、安装Web服务
这里我们选择apache,直接选择编译好的windows版本
下载地址:
https://www.apachehaus.com/cgi-bin/download.plx
选择对应VC2015、64位的版本下载。
将压缩包下载到本机,解压到需要的目录:
D:\Apache24
启动服务
输入地址访问:
http://localhost/
这样,apache就运行成功了
4、安装mod_wsgi
下载编译好的 mod_wsgi
https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi
把下载的.whl文件复制到python\Scripts下使用
用pip进行安装
pip3 install "mod_wsgi-4.5.15+ap24vc14-cp36-cp36m-win_amd64.whl"
进行安装在安装成功后在python的安装目录的\scripts文件夹下运行
mod_wsgi-express module-config
然后拷贝到http.conf 中,添加到其他的 loadmodule后。
重新启动Apache
没有报错则表示 mod_wsgi 模块在加载成功了。
注:很多教程都是用的mod_wsgi.so,但是已经找不到对应的版本的了。
5、创建Web例子
安装Flask
pip install Flask
创建Flask例子
from flask import Flask
app = Flask(__name__)
@app.route('/hello')
def hello():
return 'Hello Flask'
if __name__ == '__main__':
app.run()
创建wsgi文件
import sys
#app's path
sys.path.insert(0,"E:/pyWork/testweb")
from testweb import app
#Initialize WSGI app object
application = app
6、修改apache配置
打开 httpd.conf 文件,在最后添加虚拟环境:
<VirtualHost *>
ServerName example.com
WSGIScriptAlias / E:\pyWork\testweb\testweb.wsgi
<Directory E:\pyWork\testweb\>
Require all granted
</Directory>
</VirtualHost>
参考了网上很多教程,配置都不对,有可能是因为python或apache版本原因,最后还是看了官网配置才正确。
如果有问题推荐看官网配置,它才会同步更新:
http://dormousehole.readthedocs.io/en/latest/deploying/mod_wsgi.html
注:可以**自动重载,一旦.wsgi文件有所变动,mod_wsgi就会自动重新转入所有守护进程。在Dircetor一节加入以下指令就可以实现自动重载:
WSGIScriptReloading On
重启apache,然后输入url地址访问:
http://localhost/hello
这里我们看到的就是flask项目中的资源内容了。
参考文档:
https://blog.csdn.net/firefox1/article/details/46438769
https://www.jianshu.com/p/0aa1c7097976
http://dormousehole.readthedocs.io/en/latest/deploying/mod_wsgi.html
http://flask.pocoo.org/
上一篇: 减肥期间真的不能吃肉吗
下一篇: b站账号能注销吗 哔哩哔哩账号怎么注销
推荐阅读
-
4种Windows系统下Laravel框架的开发环境安装及部署方法详解
-
Windows下通过MySQL Installer安装MySQL服务的教程图解
-
Linux下将Python的Django项目部署到Apache服务器
-
干掉windows无脑设定:“始终使用选择的程序打开这种文件”、“使用Web服务查找正确的程序”
-
在Windows2012下安装SQL Server 2005无法启动服务的解决办法
-
淘宝Web服务器Tengine在CentOS下的安装教程
-
Windows下MySQL服务无法停止和删除的解决办法
-
在Windows下通过密钥认证机制连接Linux服务器的方法
-
Windows系统下Nginx服务器的基本安装和配置方法介绍
-
在Windows下使用XAMPP搭建简易WebDAV服务器的教程