在服务器部署一个可被外网访问的flask示例

一.Flask简介

Flask是一个由Python语言写成的轻量级Web框架,最早由奥地利人Armin Ronacher于2010年发布。Flask最显著的特点是它是一个”微”框架,轻便灵活,但同时又易于扩展。默认情况下,Flask 只相当于一个内核,不包含数据库抽象层(ORM)、用户认证、表单验证、发送邮件等其它Web框架经常包含的功能。Flask依赖用各种灵活的扩展(比如邮件Flask-Mail,用户认证Flask-Login,数据库Flask-SQLAlchemy)来给Web应用添加额外功能。Flask的这种按需扩展的灵活性是很多程序员喜欢它的地方。Flask没有指定的数据库,可以用MySQL,也可以用 NoSQL。

二.前期准备

你需要租一台服务器,并且在服务器上安装Flask。这里我使用的是阿里云的服务器,系统是CentOS。

三.一个简单的示例

一个最小的 Flask 应用看起来会是这样:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'

if __name__ == '__main__':
    app.run()

把它保存为 hello.py (或是类似的),然后用 Python 解释器来运行(命令后面的 &意味将此文件在后台运行)。 确保你的应用文件名不是 flask.py ,因为这将与 Flask 本身冲突。

$ python hello.py &

现在用服务器然后通过curl命令访问 http://127.0.0.1:5000/ ,你会看见 Hello World 问候…………. 吗?

3.1 你可能遇到这个错误

在服务器部署一个可被外网访问的flask示例

经查阅,这是因为flask未使用 WSGI 启动。经过如下改动便可解决这个问题。

from flask import Flask
from gevent import pywsgi

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'

if __name__ == '__main__':
    server = pywsgi.WSGIServer(('0.0.0.0',5000),app)
    server.serve_forever()

这时再运行hello.py文件,然后通过curl命令访问http://127.0.0.1:5000/ 会得到如下结果。

在服务器部署一个可被外网访问的flask示例

这便成功的在自己的服务器上访问了这个简单的Flask示例程序。

四.从外网访问该示例程序

其实此时已经可以从外网用 公网ip+端口来访问该示例程序了,但是在我尝试的过程中还是发现了不能访问的情况。经查阅是阿里云的服务器端口开放需要去阿里云的”安全组配置”开放相应端口,才能正常使用。这步操作大家可以直接百度”阿里云开放端口”就可以百度到具体操作。

如果遇到不能访问的情况,还有一个简单的方法能解决这个问题,就是将端口由5000改为80。

也就是将代码

server = pswsgi.WSGIServer(('0.0.0.0',5000),app)

改为

server = pswsgi.WSGIServer(('0.0.0.0',80),app)

然后便可在你的电脑浏览器中访问部署在你服务器上的示例程序了。效果如下

在服务器部署一个可被外网访问的flask示例

参考:

  1. WARNING: This is a development server. Do not use it in a production deployment. falsk WSGI
  2. 阿里云服务器地址端口不能公网访问的问题,及让端口通过防火墙的命令

Original: https://blog.csdn.net/li_l_il/article/details/114867400
Author: li_il
Title: 在服务器部署一个可被外网访问的flask示例

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/747162/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球