Flask站点如何在服务器部署使用80端口?(IIS服务器)

avatar 2020年2月13日17:34:24 评论 2,999

加入VIP,可以享受无广告视频播放!更可享受教程提前看!详情猛戳:VIP介绍

熟悉python的flask框架的朋友都知道,flask默认的端口是5000。你也可以自己定义其他的可用的端口。

但在生产环境给用户使用的时候,如果输入个网址还需要在域名后面输入个端口号,怎么看都觉得不够高大上,让我感觉很想解决这个问题,遍寻各种资料并自己尝试后,终于实现了。

本文适用于win server服务器的部署,如果你是用win10等部署的,部分内容有些许不同,看着办就好了。

欢迎找我交流。

现在把相关的步骤教给大家:

一、系统环境

windows server 2019

python 3.6.6(虚拟环境)(别的版本应该也行)

flask(后面安装)

wfastcgi(后面安装)

二、安装IIS和CGI

win server系统是默认安装好IIS的,如果你是win10等则需要安装一下IIS。

打开服务器管理器,选择添加角色和功能。

Flask站点如何在服务器部署使用80端口?(IIS服务器)

前面的默认往前进,可以找到这个目录部分。好像发现CGI默认是安装好了的。

Flask站点如何在服务器部署使用80端口?(IIS服务器)

如果没有安装,往下步骤安装就好了。

三、安装URL重写组件

(我的服务器过去安装有,所以无需安装,也不能百分百确认到底要不要这一步,后面我没有用到它)

以下是摘录别人的下载安装说明:

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

Flask站点如何在服务器部署使用80端口?(IIS服务器)

四、创建python虚拟环境

(这一步不是必须的,如果你为了让你的flask运行的python环境比较纯净,则可以使用虚拟环境,本文不讲细节,以后我会单独写一篇总结文章来写这个细节)

由于是win环境,则在系统预先安装好的python基础上安装虚拟环境的包:

pip install virtualenv

pip install virtualenvwrapper-win

然后在系统环境变量配置好虚拟环境的存放目录:

Flask站点如何在服务器部署使用80端口?(IIS服务器)

然后用管理员模式运行cmd,运行命令创建虚拟环境:

mkvirtual flask_test

创建一个名字为flask_test的虚拟环境空间,使用系统安装的默认python版本3.6.6。

此时会自动进入虚拟空间,你也可以在平常输入如下命令进入:

workon flask_test

此时安装的pip包啊什么的都只是在这个虚拟环境中安装了。

这里我们不细讲。

五、安装flask和wfastcgi

接下来安装flask和wfastcgi。

分别运行命令安装即可:

pip install flask

pip install wfastcgi

其实本质用的是wfastcgi这个功能包来实现。

安装完之后,可以通过cmd来到你使用来解析的python的scripts目录下,运行如下命令:

wfastcgi-enable

此时会返回相关内容:

Flask站点如何在服务器部署使用80端口?(IIS服务器)

其中需要特别注意一下你那里返回的框出来的双引号的内容,这个在后面的配置中会用到,不同电脑的人不同。

你可以把引号中间的内容保存到文本文件,这个cmd窗口就可以先关闭了。后面网站正式运行之后,你不需要像平常启动flask网站那样启动,也不用打开cmd窗口或进入虚拟环境启用。

如果你运行这个命令,看到什么ERROR这样的字符报错,可以先运行一下wfastcgi-disable这个命令先禁用,再运行上述命令启用。

六、配置你的服务器解析

由于我们的最终目的是实现外网的用户仅输入域名,不需要添加端口号就可以实现网站的访问,所以需要进行解析DNS的规则配置。

到你的DNS供应商配置一条A记录,比如我配置的主机记录是flask,即全称域名为:http://flask.xueshanlinghu.com。而指向的IP地址是自己的外网IP地址即可。

七、准备好你的flask站点源码

因为在测试嘛,所以就写一个最简单的flask站点好了。

找一个文件夹,作为网站的运行目录,并在里面创建一个python文件,名字为hello.py。

源码如下:

# coding:utf-8

from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
    return "hello flask python"
    
if __name__ == "__main__":
    app.run(debug=True)

这样,启动网站首页之后,就会看到内容“hello flask python”。

八、编写web.config文件

由于是IIS服务器,所以需要编写一个服务器的配置文件,按照我前面的内容,配置参考如下(你需要根据自己的情况改成自己的):

其中scriptProcessor需要改成你刚才启用wfastcgi的时候返回的内容。

WSGI_LOG这个的目录,一定要创建好!!!后面配置的日志路径如果没有配置则会报错的,比如我返回的就是500错误。

WSGI_HANDLER这个的值目前我还不是很确定应该怎么填写,尝试过修改为hello2.app好像也能用。所以这块需要再研究下。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <!-- scriptProcessor 的值来自命令行工具 wfastcgi-enable -->
      <add name="FlaskFastCGI" path="*" verb="*" modules="FastCgiModule" scriptProcessor="d:\programs\virtualpython\flask_test\scripts\python.exe|d:\programs\virtualpython\flask_test\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="D:\logs\oboeqa_web.log" />
    <add key="WSGI_RESTART_FILE_REGEX" value="" />
  </appSettings>
</configuration>

写好之后保存为web.config文件,放在网站根目录下。

九、IIS添加网站

经过了前面的各种准备工作,终于到添加网站这一步啦!

接下来还是打开“服务器管理器”,在右上角选择“工具”菜单栏,选择“Internet Information Services (IIS)管理器”进入IIS的管理器。

左侧找到网站,右键,选择添加网站。

Flask站点如何在服务器部署使用80端口?(IIS服务器)

然后在弹出的窗口中填写好如下所示的内容:

Flask站点如何在服务器部署使用80端口?(IIS服务器)

网站名称是网站显示给你看的名字,你可以改成别的。

物理路径,选择刚才我们存放flask网站的那个目录。

端口啥的默认就有,不用管,我们就是想要80端口,所以不用改。

主机名应该是填写的访问的域名,所以我就填写了。

填写完成后,点击确定,启动网站。

此时,在外网输入网址:http://flask.xueshanlinghu.com

发现已经能够不输入端口号访问啦!大功告成!

Flask站点如何在服务器部署使用80端口?(IIS服务器)

 

 

当然,这仅仅是测试用的,发完本文,这个网址可是无法访问的。大家不用测试嘿嘿。请用自己的服务器来测试吧!

 

希望能帮到大家!

如果有什么别的想法,欢迎评论或找我交流。

avatar

发表评论

您必须才能发表评论!