在Windows平台使用IIS部署Flask网站

news/2024/5/1 23:01:42/文章来源:https://blog.csdn.net/weixin_34246551/article/details/89068569

在 Windows 平台部署基于 Python 的网站是一件非常折腾的事情,Linux/Unix 平台下有很多选择,本文记录了 Flask 部署到 IIS 的主要步骤,希望对你有所帮助。

涉及工具和平台

  • Windows 7 x64

  • Python 3.4+

  • Flask

完成 Hello Flask 网站

这是一个最简单的 Flask 网站:

# hello.py
from flask import Flask
app=Flask(__name__)@app.route('/',methods=['GET'])
def index():return "Hello Flask!"if __name__=='__main__':app.run(debug=True)

运行python hello.py后没有错误说明你的 Python 环境一切正常,可以继续后面的步骤。

安装 IIS,启用 CGI

在控制面板中找到打开或者关闭 Windows 功能,安装 IIS 和 CGI,如下图。

iis+cgi

安装 URL 重写组件

IIS 需要安装 URL 重写组件,这个可以通过Microsoft Web Platform Installer来安装。下载Microsoft Web Platform Installer后运行,搜索url,分别安装。

wpi-url

注:据说 Windows10 上的 IIS 10 现在不支持 url 重写?待验证

安装 wfastcgi

通过pip就可以安装:

pip install wfastcgi

启用 wfastcgi

剩下的事情就只有一些配置了。首先以管理员身份运行wfastcgi-enable来在IIS上启用wfastcgi,这个命令位于c:\python_dir\scripts,也就是你需要确保此目录在系统的PATH里,或者你需要cd到这个目录后再执行。

# cd to python_dir\scripts if it is not in PATH
wfastcgi-enable

记住命令执行成功后返回的信息:

C:\Python34\Scripts> wfastcgi-enable
Applied configuration changes to section "system.webServer/fastCgi" for "MACHINE/WEBROOT/APPHOST" at configuration commit path "MACHINE/WEBROOT/APPHOST"
"C:\Python34\python.exe|C:\Python34\lib\site-packages\wfastcgi.py" can now be used as a FastCGI script processor

"C:Python34python.exe|C:Python34libsite-packageswfastcgi.py" 在下文的配置文件中需要使用。

Tips: 使用命令 wfastcgi-disable 可以将其移除。

创建 web.config 文件

下面是一个web.config文件的例子,你只需要修改对应部分就可以使用。

<?xml version="1.0" encoding="UTF-8"?>
<configuration><system.webServer><handlers><!-- scriptProcessor 的值来自命令行工具 wfastcgi-enable --><add name="FlaskFastCGI" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\Python34\python.exe|C:\Python34\lib\site-packages\wfastcgi.py" resourceType="Unspecified" requireAccess="Script" /></handlers><security> <!-- URL 重写中的特殊字符,比如加号+等等 --><requestFiltering allowDoubleEscaping="true"></requestFiltering> </security> </system.webServer><appSettings><!-- Required settings --><!-- 在这里指定Falsk app在模块中的具体位置 --><add key="WSGI_HANDLER" value="hello.app" /><add key="PYTHONPATH" value="~/" /><!-- Optional settings --><!-- 需要先创建日志目录,否则报错 --><add key="WSGI_LOG" value="C:\logs\oboeqa_web.log" /><add key="WSGI_RESTART_FILE_REGEX" value="" /></appSettings>
</configuration>

配置 IIS 目录及权限

假设你的 Flask 程序将部署在 C:websitehello 下面,那么你的目录结构大致如此。

C:\WEBSITE
└───hellohello.pyweb.config

现在你需要让IIS用户拥有访问和执行你的网站脚本的权限,进入 C:website 目录,执行下面两条命令:

cd C:\website
icacls . /grant "NT AUTHORITY\IUSR:(OI)(CI)(RX)"
icacls . /grant "Builtin\IIS_IUSRS:(OI)(CI)(RX)"

创建并访问你的网站

现在你离成功只差一步之遥,打开 IIS 管理面板,新建一个网站。

iis-add-web-site

你只需要填上网站名称,物理地址和相应的端口号,点击确认。

iis-website-config

打开浏览器,就可以访问你配置好的网站。如果有错误,可以去检查 web.config 中配置的日志文件。

iis-web-site-ok

简单总结

写完之后发现其实要完成的步骤并不是特别复杂,但是从摸索到实践的过程确实不易。本文仅讨论了部署的主要步骤,其实真正的生产环境你要考虑的问题可能更多,比如使用virtualenv 对网站进行隔离,安全问题,静态文件解析等等。

最后的惊喜

据说部署Python 网站到 IIS 还有更简单的办法,那就是安装宇宙最强的IDE - Visual Studio 2015 (VS2017 暂不支持 Python 开发),个人开发者可以免授权使用社区版。在 VS 中你可以使用 PTVS 来快捷开发并部署Python 程序,真正让你一键无忧。

ptvs-web

PTVS 支持了常见的 Python Web 框架,比如 Flask,Django,Bottle,Jade 等等,调试的时候只需要按 F5,部署右键选择 publish,跟着向导一步两步你就可以完成魔鬼的步伐。

参考链接

  • http://stackoverflow.com/ques...

  • http://stackoverflow.com/ques...

  • http://blog.csdn.net/firefox1...

  • http://www.cnblogs.com/liulix...

  • http://www.cnblogs.com/xiaole...

关于作者:Python技术爱好者,目前从事测试开发相关工作,转载请注明原文出处。

欢迎关注我的博客 https://betacat.online,你可以到我的公众号中去当吃瓜群众。

Betacat.online

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_713922.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大型网站压力测试及优化方案

相关阅读&#xff1a;阿里职位层级&#xff08;附P级详细要求&#xff09;互联网技术(java框架、分布式、集群)干货视频大全&#xff0c;不看后悔&#xff01;(免费下载)最全 BATJ 大厂面试题整理&#xff01;&#xff08;速度收藏&#xff09;作者&#xff1a;邴越来自&#x…

【转载】如何让外网访问IIS里面搭建的网站

如何让IIS被外网访问 很多人都有过类似的疑问&#xff0c;以前在百度上回答过很多这样的问题&#xff0c;但是&#xff0c;好多人还是不懂&#xff0c;今天&#xff0c;我就来做个教程&#xff0c;讲讲这个问题。首先&#xff0c;要了解外网和内网的区别。什么是外网&#xff0…

linux网站配置文件.htaccess伪静态转换到IIS web.config中

linux下的php网站放到Windows服务器IIS下.htaccess文件伪静态规则转换。此办法只适合于linux下的php网站放到Windows服务器IIS下&#xff0c;网站除了主页面正常以外子页面全部出现404错误&#xff0c;这里子页面出现404 错误是说明伪静态没有开启。什么是.htacdess:.htaccess叫…

网站集成paypal快捷支付

为什么80%的码农都做不了架构师&#xff1f;>>> 由于公司需求&#xff0c;需做国际支付&#xff0c;首先网上查找资料&#xff0c;最终选定paypal的快捷支付集成到我们的网站。 1.注册一个paypal账户&#xff0c;待激活后&#xff0c;进入paypal页面&#xff0c;然…

程序员实用工具网站

目录 1、搜索引擎 2、PPT 3、图片操作 4、文件共享 5、应届生招聘 6、程序员面试题库 7、办公、开发软件 8、高清图片、视频素材网站 9、项目开源 10、在线工具宝典大全 程序员开发需要具备良好的信息检索能力&#xff0c;为了备忘&#xff08;收藏夹真是满了&#x…

struts2的国际化(即实现网站整体中英文切换)实例

环境要求&#xff1a;Struts2框架环境搭建成功 为了实现程序的国际化&#xff0c;必须先提供程序所需要的资源文件。资源文件的内容基本是key-value对&#xff0c;其中key是程序使用的部分&#xff0c;而value是程序的显示部分。 资源文件的命名可以是如下3种形式&#xff1a;…

【系统架构】大型网站架构模式

作者&#xff1a;周旭龙链接&#xff1a;http://www.cnblogs.com/edisonchou/p/3790225.html本文思维导图&#xff1a;分层最常见的架构模式&#xff0c;将系统在横向维度上切分成几个部分&#xff0c;每个部分单一职责。网站一般分为三个层次&#xff1a;应用层、服务层和数据…

为什么找不到使用rem的网站

这东西是为了解决移动端适配的&#xff0c;所以你访问 PC 站点基本是找不到的&#xff0c;先用开发者工具模拟成移动端再看。 给你截图看吧&#xff0c;注意红色箭头处。&#xff08;以下截图均是答此题时才截的&#xff09; 腾讯&#xff1a;www.qq.com 京东&#xff1a;ww…

SEO如何辨别真假Baiduspider

我们站长查看网站访问数据&#xff0c;分析IP来源是我们站长的日常工作&#xff0c;对一些异常的IP段&#xff0c;我们首先要区分是否是搜索引擎蜘蛛的IP段&#xff0c;以免误伤&#xff0c;下面我们就以2段IP为例&#xff0c;一个是百度蜘蛛的220.181.108.140&#xff0c;另外…

8. 大型网站架构演化

1.1 大型网站软件系统的特点 1.2 大型网站架构演化发展历程 1.3 大型网站架构演化的价值 1.4 网站架构设计误区 1.5 小结

9. 大型网站架构模式

2.1 网站架构模式 2.2 架构模式在新浪微博的应用 http://timyang.net/architecture/weibo/ 2.3 小结

10. 大型网站核心架构要素

3.1 性能 3.2 可用性 3.3 伸缩性 3.4 扩展性 3.5 安全性

11. 瞬时响应:网站的高性能架构

4.1 网站性能测试 4.2 Web 前端性能优化 4.3 应用服务器性能优化 4.4 存储性能优化 4.5小结 性能指标&#xff1a; 响应时间&#xff0c;并发数&#xff0c;吞吐量&#xff0c;性能计数器性能测试方法&#xf…

12.万无一失:网站的高可用架构

5.1 网站可用性的度量与考核 5.2 高可用的网站架构 5.3 高可用的应用 5.4 高可用的服务 5.5 高可用的数据 5.6 高可用网站的软件质量保证 5.7 网站运行监控 5.8 小结 高可用&…

13. 永无止境:网站的伸缩性架构

6.1 网站架构的伸缩性设计 6.2 应用服务器集群的伸缩性设计 6.3 分布式缓存集群的伸缩性设计 6.4 数据存储服务器集群的伸缩性设计 6.5 小结 网站伸缩性设计分类&#xff1a;(1.按功能进行物理分割实现伸缩&…

14. 随需应变:网站的可扩展架构

7.1 构建可扩展的网站架构 7.2 利用分布式消息队列降低系统耦合性 7.3 利用分布式服务打造可服用的业务平台 7.4 可扩展的数据结构 7.5 利用开发平台建设网站生态圈 7.6 小结 网站可扩展架构的核心&#xff1a;模块化…

15. 固若金汤:网站的安全架构

8.1 道高一尺魔高一丈的网站应用攻击与防御 8.2 信息加密技术及秘钥安全管理 8.3 信息过滤与反垃圾 8.4 电子商务风险控制 8.5 小结

20.大型网站典型故障分析

1.大型网站典型故障分析

8个接私活的网站,只要你有码,那“我”就有钱

今天为大家带来的内容正是江湖卖艺赚钱养家的好渠道&#xff08;程序员&#xff1a;8个接私活的网站&#xff0c;只要你有码&#xff0c;那“我”就有钱&#xff01;&#xff09;一起来看看吧&#xff01;1、程序员客栈&#xff1a;程序员的经纪人https://www.proginn.com/2、快…

响应式网站关于资源跨域问题

什么是域&#xff1f; 域可以理解为域名&#xff0c;如baidu.com是一个域名&#xff0c;它是一个域 什么是跨域&#xff1f; 即指从一个域名请求另外一个域名的资源 跨域的表现一 如上图&#xff0c;whir_css.css在本地服务器&#xff0c; respondv1.4.2.min.js在cdn.bootcs…