IIS部署FLASK网站

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

涉及工具和平台

  • Windows 7 x64python

  • Python 3.4+git

  • Flaskgithub

完成 Hello Flask 网站

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

# 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 环境一切正常,能够继续后面的步骤。sql

安装 IIS,启用 CGI

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

iis+cgi

安装 URL 重写组件

IIS 须要安装 URL 重写组件,这个能够经过Microsoft Web Platform Installer来安装。下载Microsoft Web Platform Installer后运行,搜索url,分别安装。flask

wpi-url

注:听说 Windows10 上的 IIS 10 如今不支持 url 重写?待验证segmentfault

安装 wfastcgi

经过pip就能够安装:api

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 └───hello hello.py web.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,跟着向导一步两步你就能够完成魔鬼的步伐。

link: http://www.javashuo.com/article/p-ypbzjgib-ex.html

IIS调用COM组件时的权限问题

解决方案:

在DCOM组件服务中给MICROSOFT.EXCEL组件 赋予ASP.NET的操做权限,具体步骤: (1)打开开始菜单的运行对话框,输入dcomcnfg命令,肯定,这时会弹出组件服务窗口 (2)展开计算机-〉个人电脑-〉DCOM配置,找到Microsoft Excel应用程序节点 (3)单击右键-〉属性,选中“安全”选项,在下面三个项目都选择“自定义”,并单击编辑按钮 (4)在启动权限对话框中点击添加按钮,添加相应的用户(注意:若是是WIN2000,XP,则添加“机器名/ASPNET”用户,我这里是以WIN2003为例, WIN2003是添加“NETWORK Service”用户),并赋予最大权限 (5) 选择”身份标识”,再选择”交互式用户”便可上文中是设置EXCEL组件,你须要在你的dcomcnfg中找到你使用的com组件原文:https://blog.csdn.net/BleuRever/article/details/50783133

相关文章
相关标签/搜索