Ubuntu 系统搭配 Gunicorn 运行 Flask 应用

本文记录了 Ubuntu 系统中,使用 Gunicorn 运行 Flask 应用的详细操作过程。

前言

在云服务器中使用 Python 直接运行 Flask 应用时,会出现以下提示:

WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.

当然了,出现该提示并不影响 Flask 应用的正常运行和使用。

但了解如何使用 WSGI 服务器运行 Flask 应用还是很有必要的。

本文 Linux 系统 : WSL2 , Ubuntu (全新安装)

操作步骤

本部分正式开始介绍如何在 Ubuntu 系统上以 Gunicorn 的方式运行 Flask 应用。

开始之前

进入正题之前,建议检查一下 Ubuntu 系统上是否具备本文所需的环境依赖。

  • 首先执行以下命令更新 Ubuntu 的软件包列表
    sudo apt update
    

  • 执行以下命令确认 Python 版本(若 Python 版本低于 3.6 ,则建议安装更高版本):
    python3 -V
    

  • 执行以下命令确认 pip 版本:
    pip3 -V
    
  • 若提示 Command 'pip3' not found 信息,则执行以下命令安装 pip 软件包:
    sudo apt install python3-pip
    

  • 执行以下命令确认 Ubuntu 系统中是否安装了 Python 的 venv 软件包
    apt list --installed | grep python3-venv
    
  • 如果没有安装Python 的 venv 软件包,则执行以下命令安装
    sudo apt install python3-venv
    

运行程序

  1. 在 Linux 的用户目录中创建名为 pythonProject 的文件夹并进入该文件夹
    mkdir ~/pythonProject && cd ~/pythonProject
    
  2. 在 pythonProject 文件夹中创建一个新的 Python 虚拟环境
    python3 -m venv ~/pythonProject/.venv
    
  3. 激活 pythonProject 文件夹中的 venv 虚拟环境
    source ~/pythonProject/.venv/bin/activate
    
  4. 在激活后的 venv 虚拟环境中安装 flask 库和 gunicorn 库
    pip install flask gunicorn
    
  5. 使用 vi 命令在 pythonProject 文件夹中创建并编辑 app.py 文件
    vi ~/pythonProject/app.py
    
  6. 将以下代码块的内容复制粘贴至 ~/pythonProject/app.py 文件中,保存后退出
    from flask import Flask
    
    app = Flask(__name__)
    
    
    @app.route('/', methods=['GET'])
    def hello_world():
        return 'Hello World'
    
    
    if __name__ == '__main__':
        app.run('0.0.0.0', 5678)
    
  7. 使用 venv 虚拟环境的 gunicorn 库运行 app.py 中的 Flask 应用
    ~/pythonProject/.venv/bin/gunicorn app:app
    
  8. 运行后会有 Listening at: http://127.0.0.1:8000 (3323) 的类似提示信息,浏览器访问其中的 URL 地址即可

扩展内容

以上为 gunicorn 的简单使用例子,实际中或许需要额外的 gunicorn 运行参数。

  • -w 参数 : 控制 Flask 应用运行的进程数
    • 例如运行 10 个 Flask 应用进程
      gunicorn -w 10 app:app
      
  • -b 参数 : 控制 Flask 应用绑定的 IP 地址和端口号
    • 例如将 Flask 应用绑定在 192.168.1.100:8008 地址上
      gunicorn -b 192.168.1.100:8008 app:app
      

      在云服务器上运行时,应绑定云服务器的内网 IP 地址或者 0.0.0.0 地址

  • -D 参数 : 控制 gunicorn 在后台运行
    • 例如在后台运行 Flask 应用
      gunicorn -w 10 -b 0.0.0.0:8210 -D app:app
      

      后台运行时,需要使用 ps -ef | grep app 命令查找并终止 Flask 应用进程

  • -h 参数 : 查看 gunicorn 的使用帮助
    gunicorn -h
    
  • app:app 参数 : 该参数为 Flask 应用的入口,实际对应 py 文件名 : Flask 对象的变量名
    • 例如 py 文件名为 main.py 而不是 app.py
      gunicorn main:app
      

更多的 gunicorn 使用参数需要查阅帮助文档,此处不再列出。

总结

对于 gunicorn 的使用我也是浅尝辄止,当初只是为了在服务器上部署一个 API 用于项目。

文中大部分命令中都使用了绝对路径,正常情况下使用相对路径也是可以的。

参考链接

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇