Windows + Flask + Apache + wsgi踏坑总结
- 据前人踏坑经历,拷贝如下:
- 1. Apache,mod_wsgi和Python都必须用相同版本的C/C++编译器生成,要么都是32位的,要么都是64位的,不能混用。
- 2. Apache和mod_wsgi 也必须选择相同位数相同VC编译版本(比如:都是x64 VC14编译)
本人以x64 VC14编译版本为例,
Windows版本: Window Server 2008 R2 x64
Python: 3.7.2 x64
1. 首先安装Python环境,安装python3.7.2 x64版本
下载地址:https://www.python.org/ftp/python/3.7.2/python-3.7.2-amd64.exe
验证一下,是否安装成功:
2. 安装Flask
3. 安装Apache
打开网页: https://httpd.apache.org
这里一定一定要选对版本,我这里选的x64, vc14版本
下载后,将文件解压出来,如图所示:
命令行启动httpd.exe,并验证是否启动成功,显示"IT WORKS", 没有问题
4. 安装mod_wsgi
在https://www.lfd.uci.edu/~gohlke/pythonlibs/ 页面搜索 mod_wsgi, 并且一定要选对版本,我的版本是vc14+py37+x64版本
将下载的文件后缀改为zip,解压出来,拷贝mod_wsgi.cp37-win_amd64.pyd 文件放到C:\Apache24\modules 目录,并改名为mod_wsgi.pyd
5. 修改配置
搜索SRVROOT 并修改apache的路径, apache配置文件:C:\Apache24\conf\httpd.conf
加载mod_wsgi模块,增加行 LoadModule wsgi_module modules/mod_wsgi.pyd
创建web app
main.py 代码:
- from flask import Flask
- app = Flask(__name__)
- @app.route('/')
- def hello_world():
- return 'Hello World!'
- @app.route("/index/")
- def foo():
- return "index page"
- @app.route("/login/")
- def login():
- return "login page"
- if __name__ == '__main__':
- app.run()
test.wsgi代码:
- import sys
- sys.path.insert(0, "C:/web")
- from main import app
- application = app
修改httpd.conf配置,末尾增加内容:
- <VirtualHost *:8090 >
- ServerAdmin "0.0.0.0"
- DocumentRoot "c:/web"
- <Directory "c:/web">
- Require all granted
- Require host ip
- Allow from all
- </Directory>
- WSGIScriptAlias / c:/web/test.wsgi
- </VirtualHost>
搜索Listen,监听端口改为8090
再次启动httpd,可能会出现以下错误:
以上错误是由于httpd.conf中某些模块没有启用,启用以下模块即可:
- LoadModule access_compat_module modules/mod_access_compat.so #基于主机的组授权(名称或IP地址) httpd 2.x兼容的模块,
- LoadModule proxy_module modules/mod_proxy.so #apache的代理模块
- LoadModule proxy_http_module modules/mod_proxy_http.so #代理http和https请求
- LoadModule vhost_alias_module modules/mod_vhost_alias.so #虚拟主机动态配置
- LoadModule authz_host_module modules/mod_authz_host.so #基于主机的组授权
- Include conf/extra/httpd-vhosts.conf#启用虚拟主机配置
如果上述步骤都没有问题,测试一下结果:
公网访问试试:
OK,至此,配置算是圆满成功!
本文发布于:2019-03-04 21:55:55
Windows + Flask + Apache + wsgi踏坑总结的更多相关文章
- windows下apache+wsgi+web.py环境搭建
首先安装好wsgi模块并启用:1.下载地址:我本机是python2.7 http://code.google.com/p/modwsgi/downloads/detail?name=mod_wsgi- ...
- Windows环境下flask+Apache+mod_wsgi部署及爬坑
文章目录 安装python Windows 环境使用virtualenv和virtualenvwrapper 安装mod_wsgi 安装nginx 安装Apache 遇到的坑 安装Apache遇到的坑 ...
- windows下apache + mod_wsgi + python部署flask接口服务
windows下apache + mod_wsgi + python部署flask接口服务 用python3安装虚拟环境 为啥要装虚拟环境? 原因1:安装虚拟环境是为了使项目的环境和全局环境隔离开,在 ...
- Windows下Apache+mod_python+Django配置
Windows下Apache+mod_python+Django配置 Apache 首先要安装Apache,我安装的版本是2.2.*: Python python肯定是要安装的,我安装的版本是2.5的 ...
- DB数据源之SpringBoot+MyBatis踏坑过程(二)手工配置数据源与加载Mapper.xml扫描
DB数据源之SpringBoot+MyBatis踏坑过程(二)手工配置数据源与加载Mapper.xml扫描 liuyuhang原创,未经允许进制转载 吐槽之后应该有所改了,该方式可以作为一种过渡方式 ...
- DB数据源之SpringBoot+MyBatis踏坑过程(三)手工+半自动注解配置数据源与加载Mapper.xml扫描
DB数据源之SpringBoot+MyBatis踏坑过程(三)手工+半自动注解配置数据源与加载Mapper.xml扫描 liuyuhang原创,未经允许禁止转载 系列目录连接 DB数据源之Spr ...
- DB数据源之SpringBoot+MyBatis踏坑过程(五)手动使用Hikari连接池
DB数据源之SpringBoot+MyBatis踏坑过程(五)手动使用Hikari连接池 liuyuhang原创,未经允许禁止转载 系列目录连接 DB数据源之SpringBoot+Mybatis踏坑 ...
- DB数据源之SpringBoot+MyBatis踏坑过程(七)手动使用Tomcat连接池
DB数据源之SpringBoot+MyBatis踏坑过程(七)手动使用Tomcat连接池 liuyuhang原创,未经允许禁止转载 系列目录连接 DB数据源之SpringBoot+Mybatis踏坑 ...
- dll文件32位64位检测工具以及Windows文件夹SysWow64的坑
自从操作系统升级到64位以后,就要不断的需要面对32位.64位的问题.相信有很多人并不是很清楚32位程序与64位程序的区别,以及Program Files (x86),Program Files的区别 ...
随机推荐
- html横向滑动案例
<style type="text/css"> .outer-container,.content {width: 630px; height: 185px;paddi ...
- C# 温故之.NET 异步
Bitter Coffee的温故之.NET 异步 相当经典(请允许我用经典两字),读了好几遍,留存.
- nginx 学习(一)
今天不会nginx被怼了一顿.我必然不能忍,所以就赶忙来补充一下nginx知识!! nginx简介 nginx是一款高性能的http服务器,目前国内包括BAT在内的众多互联网企业均采用其作为反向代理服 ...
- return 返回值
# ### return 返回值 """ (1) return + 数据类型 : 将这个数据弹到函数的调用处,后面除了可以接六大标准数据类型之外,还可以返回类 对象 函数 ...
- 简单透析cookies,sessionStorage和localStorage
首先大致说一下 1.sessionStorage是会话层的一种存储方式,当会话关闭或者退出,sessionStorage就会被清除,有效期较短 2.localStorage是浏览器提供的本地存储方式, ...
- xargs处理来之STDIN的输入
xargs能够将标准输入进行处理,配合下一个命令进行批量处理 #example grep -f go.test ~/jqyou/genedhs_10D |sed '/-1$/d' |awk '{pri ...
- MySQL最基本的概念梳理
本文根据<MySQL必知必会>(Ben Forta著,2009)整理,基于MySQL4.1-5,可作为深入研究MySQL之前的漱口篇.(基本语句.正则表达式.联结.全文本搜索.增删改查.存 ...
- http error: "request body stream exhausted"
'request body stream exhausted' after authentication challenge #661 Closed aburgel opened this issu ...
- Proxy代理模式(结构型)
一:描述: 为其他对象提供一种代理,来控制对这个对象的访问.如当操作某个对象很复杂时,我们可以建个代理来操作复杂对象,并开放一些简单的接口/方法来让我们比较简单的间接操作,也可在代理层实现一些自己的业 ...
- 配置trunk
SW1 Switch>en Switch#conf t Enter configuration commands, one per line. End with CNTL/Z. Switch(c ...