Windows Server 2008 R2 IIS部署Flask

介绍

大家都知道服务器使用linux部署的好,但总有一些例外。

这次部署,看了很多的教程,但还是遇到很多坑。所以写这篇记录一下,为自己,也是为了后来人能多一份参考。

安装

  1. python的安装

    明确需要安装的python版本,在官网选择对应的版本下载,安装。安装时建议勾选ADD Python xx to PATH,并选择自定义安装在一个较短的路径下,方便后面使用时过长的路径造成输入错误。

  2. 安装数据库

    选择恰当的数据库,和本地安装数据库步骤一样,这里就不多说。

  3. 安装IIS和URL重写

    这两个软件可以通过Microsoft Web Platform Installer来安装,下载后运行,在搜索框中输入CGI,点击添加,输入URL点击添加。之后点击安装即可,等待安装完成。

《Windows Server 2008 R2 IIS部署Flask》 1529291973276.png
《Windows Server 2008 R2 IIS部署Flask》 1529292336895.png
《Windows Server 2008 R2 IIS部署Flask》 1529292381033.png

  1. 上传代码

这里远程桌面我是用teamviewer,一个很良心的远程连接软件,个人使用免费,不过传输速度很一般。总之,将代码上传到服务器。

配置

  1. 安装web程序依赖包
    • 在代码目录中按住shift+鼠标右键点击在此处打开命令提示符。使用命令pip install -r requirements.txt安装web程序依赖包(如果有的话)。
    • 使用命令pip install wfastcgi安装wfastcgi,安装成功后启用wfastcgi,使用命令wfastcgi-enable。返回如图4,记住返回的c:\python\python.exe|c:\python\lib\site-packages\wfastcgi.py,python安装目录不同,返回的不相同,以自己的为准。当然也可以使用wfastcgi-disable停止该服务。

《Windows Server 2008 R2 IIS部署Flask》 1529293402884.png

在Internet 信息服务(IIS)管理器配置网站

  1. 打开Internet 信息服务(IIS)管理器

《Windows Server 2008 R2 IIS部署Flask》 1529306889481.png

  1. 点击网站,右键添加网站,点击确定

    《Windows Server 2008 R2 IIS部署Flask》 1529306999895.png

  2. 处理程序映射

    《Windows Server 2008 R2 IIS部署Flask》 1529307115340.png

  3. 双击进入处理程序映射后,点击右边添加模块映射。

如果双击处理程序映射报错(…在父级别上锁定了该节…),在管理员权限的命令提示符下执行下面两条命令即可。

%windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/handlers 
 %windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/modules

《Windows Server 2008 R2 IIS部署Flask》 1529307329734.png

  1. 点击请求限制,取消勾选

    《Windows Server 2008 R2 IIS部署Flask》 1529307368328.png

  2. FastCGI设置

    《Windows Server 2008 R2 IIS部署Flask》 1529307471177.png

《Windows Server 2008 R2 IIS部署Flask》 1529307503205.png

  1. 添加两个环境变量
  • name 为PYTHONPATH,value为C:\MathModeling-dev(注意:这里是你的程序根目录地址)
  • name为WSGI_HANDLER,value为run.app(注意:这里应该是你启动项目时运行的程序名加上.app)
    《Windows Server 2008 R2 IIS部署Flask》 1529307529508.png
  1. 回到这里,点击重新启动后,点击浏览网站下面的链接,应该就能看到你的网站了。至此我们就成功部署了。

    《Windows Server 2008 R2 IIS部署Flask》 1529307974650.png

阿里云搭建实战

进行上面的步骤没有问题的话,我们这里只需要设置阿里云服务器的防火墙即可。

《Windows Server 2008 R2 IIS部署Flask》 1529309477624.png

点击添加规则,设定好端口范围即可。这里的端口范围应该包含我们添加网站时设置的端口。

《Windows Server 2008 R2 IIS部署Flask》 1529308311528.png

用外网就可以访问了,如果不能访问,进行以下设置。

《Windows Server 2008 R2 IIS部署Flask》 1529308508092.png

打开高级安全windows防火墙,点击左边的
入站规则,再点击右边的
新建规则

《Windows Server 2008 R2 IIS部署Flask》 1529308585656.png

《Windows Server 2008 R2 IIS部署Flask》 1529308659873.png
《Windows Server 2008 R2 IIS部署Flask》 1529308728136.png

然后下一步,下一步到完成就OK.名称随便写都可以。到这里外网应该能访问了,如果还不行,就直接关闭服务器的防火墙。检查以上所有步骤是否完善正确。

参考

Deploying Python web app (Flask) in Windows Server (IIS) using FastCGI

使用wfastcgi在IIS上部署Python Flask应用

Windows IIS 部署 Flask应用

点赞