如何在 Ubuntu 22.04 上安装带有 Nginx 和 Gunicorn 的 Flask如何在 Ubuntu 22.04 上安装带有 Nginx 和 Gunicorn 的 Flask如何在 Ubuntu 22.04 上安装带有 Nginx 和 Gunicorn 的 Flask如何在 Ubuntu 22.04 上安装带有 Nginx 和 Gunicorn 的 Flask
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Ubuntu 22.04 上安装带有 Nginx 和 Gunicorn 的 Flask

本教程适用于这些操作系统版本

  • Ubuntu 22.04(Jammy Jellyfish)
  • Ubuntu 20.04(Focal Fossa)

在此页

  1. 先决条件
  2. 设置新用户
  3. 安装依赖包
  4. 设置开发环境
  5. 在虚拟环境中安装 Python Flask
  6. 使用 Flask 创建第一个应用程序项目
  7. 设置 Gunicorn
  8. 使用 Gunicorn 和 Supervisor 运行 Flask 应用程序
  9. 将 Nginx 设置为 Flask 应用程序的反向代理
  10. 结论

Flask 是一个用 Python 编写的微框架,用于开发现代 Web 应用程序和 API(应用程序编程接口)。它基于 Werkzeug 工具包和 Jinja2 模板。 Flask 没有使用复杂的架构,而是一个小型的 Web 框架,易于扩展核心并且易于学习,因为 Flask 代码较少。 Flask 不包含 ORM,但仍然具有 URL 路由和模板引擎等很酷的功能。

Gunicorn 或“Green Unicorn”是一个具有 pre-fork worker 模式的 WSGI HTTP 服务器。它移植自 Rubys Unicorn 项目。 Gunicorn 可以与多个 Web 框架搭配使用,它对服务器资源轻量级且速度很快。 Gunicorn 位于您的应用程序和网络服务器之间,因此您可以将 Gunicorn 与网络服务器(例如 Nginx 和 Apache2)配对。

在这篇文章中,我们将向您展示如何在 Ubuntu 22.04 系统上使用 Gunicorn 和 Nginx 安装和配置 Python Flask Web 框架。本教程还介绍了如何使用 Gunicorn 和 Supervisord 设置 Python Flask。

先决条件

对于本指南,您需要满足以下先决条件:

  • Ubuntu 22.04 系统 - 您可以使用 Ubuntu 22.04 桌面版或服务器版。
  • 根用户 - 或非根用户。

设置新用户

在第一步中,您将为开发环境 Python Flask Web 框架设置一个新用户。如果您已经拥有具有 root/sudo 权限的非 root 用户,则可以跳过此步骤。该用户将用于运行 Python Flask 应用程序。

在此示例中,您将创建一个名为 \james\ 的新用户。运行以下命令创建新用户“james”,并为用户“james”设置密码。请务必使用强密码。

sudo useradd -m -s /bin/bash james
sudo passwd james

接下来,使用以下命令将用户 \james\ 添加到 \sudo\ 组。这将允许新用户 \james\ 运行 \sudo su\ 命令并获得 root 管理员权限。这是安装软件包和设置系统配置所必需的。

sudo usermod -aG sudo james

最后,通过以用户“james”登录并运行“sudo su”命令获取根权限来检查和验证新用户。输入用户 \james\ 的密码,您将获得 root shell。当前 shell 将从 \[email \ 更改。

su - james
sudo su

现在按 \Ctrl+d\ 或键入 \exit\ 返回到非根用户 \james\。

安装包依赖

现在您将为 Python Flask 安装安装一些包依赖项,这包括 \python3-pip\ 和 \python3-venv\。最后,您还将安装 Nginx Web 服务器和主管。

在开始安装包之前,请运行下面的 apt 命令来更新和刷新您的包存储库。

sudo apt update

现在使用以下命令安装 python3-pip 和 python3-venv。 python3-pip 将用作 Python 包的包管理器,python3-venv 将用于创建 Flask 应用程序开发的虚拟环境。

sudo apt install python3-pip python3-venv

输入 Y 确认安装,然后按 ENTER 继续。安装将开始。

安装完成后,运行以下命令在您的 Ubuntu 系统上设置默认的 Python。

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10

现在验证 Python 和 Pip 的版本,并通过运行以下命令检查 Python venv 模块。在以下示例中,您将使用 Python 3.10 安装 Python Flask Web 框架。

python --version
pip --version
python -m venv -h

接下来,运行以下 apt 命令来安装 Nginx Web 服务器和主管程序包。 Nginx 网络服务器将用作 Python Flask 网络框架的默认网络服务器,主管将用于控制 Flask 应用程序,例如启动和停止 Flask 进程。

sudo apt install nginx supervisor

输入 Y 确认安装,然后按 ENTER 继续。等待包安装完成。

搭建开发环境

在本节中,您将创建一个新的 Python 虚拟环境,用作 Python Flask Web 框架的开发环境。

运行以下命令创建一个新的项目目录\/var/www/myapp\。该目录将用作 FLask 应用程序的主项目目录。

sudo mkdir -p /var/www/myapp

使用以下命令将新目录的所有权更改为用户 \james\ 并将权限更改为 \755\。

sudo chown -R james:james /var/www/myapp
sudo chmod 755 /var/www/myapp

移动到项目目录 \/var/www/myapp\ 并使用以下命令创建一个名为 \myenv\ 的新 Python 虚拟环境。

cd /var/www/myapp
python -m venv myenv

最后,使用以下命令激活虚拟环境\myenv\。激活后,您的 shell 提示符将变成类似 \(myenv) [email \。

source myenv/bin/activate

在虚拟环境中安装 Python Flask

设置虚拟环境后,您可以运行下面的 pip 命令在您的虚拟环境中安装 Python Flask 和 Gunicorn。所有这些包都将从 PyPi Python 存储库安装。

pip install flask gunicorn

现在开始安装。

使用 Flask 创建第一个 App 项目

您现在已经安装了 Python Flask Web 框架。现在您将使用 Flask 创建第一个应用程序。

在创建 Flask 项目之前,请确保您位于主项目目录 \/var/www/myapp\ 并且虚拟环境 \myenv\ 已激活.

使用 nano 编辑器创建一个新文件 \myapp.py\。

nano myapp.py

现在将以下 Python 脚本添加到文件中。

# myapp.py
from flask import Flask, render_template  # importing the render_template function

app = Flask(__name__)
# route to index page
@app.route("/")
def hello():
    return render_template('index.html')

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

完成后保存并关闭文件。

接下来,创建一个新目录\templates\ 并在\template\ 中创建一个新文件\index.html\ “ 目录。

mkdir -p templates/
nano templates/index.html

向其中添加以下 HTML 脚本。

<html>
    <body>
        <h1><center>Hello World!</center></h1>
    </body>
</html>

完成后保存并关闭文件。

最后,运行脚本 \myapp.py\ 来运行您的第一个 Flask 应用程序。

python myapp.py

您将看到您的 Flask 项目正在默认的本地主机上运行,端口为 5000。

打开你的 Ubuntu 机器的新终端 shell 并运行下面的 curl 命令。

curl http://127.0.0.1:5000/

现在您可以在以下屏幕截图中看到 index.html 页面的输出。

要终止 Flask 应用程序进程,可以按“Ctrl+c”按钮。

设置 Gunicorn

Gunicorn 或“Green Unicorn”是 HTTP 服务器的 Python Web 服务器网关接口。它允许您将 Python 应用程序作为 HTTP 进程或使用 sock 文件运行。现在您将把 Gunicorn 添加到您的 Flask 项目中。

在 Flask 项目目录中,使用 nano 编辑器创建一个新文件 \wsgi.py\。

nano wsgi.py

向其中添加以下脚本。

# import myapp Flask application
from myapp import app

if __name__ == "__main__":
    app.run(debug=True)

完成后保存并关闭文件。

接下来,运行以下命令以使用 Gunicorn 启动和运行 Flask 项目。在此示例中,您的 Flask 项目将在端口为 8000 的公共 IP 地址上运行。

gunicorn -w 4 --bind 0.0.0.0:8000 wsgi:app

打开您的网络浏览器并输入您的 Ubuntu 系统 IP 地址和端口 8000(即 http://192.168.5.28:8000/)。您应该会看到 Flask 项目的索引页。

现在按 \Ctrl+c\ 终止 Guncorn 进程。

使用 Gunicorn 和 Supervisor 运行 Flask 应用程序

现在您已经为 FLask 项目配置了 Gunicorn。是时候为 Flask Web 框架设置 Supervisor 了。

supervisor 是流程管理,它允许您在一个地方控制流程。因此,您将使用 Supervisor,而不是将 Flask 应用程序作为系统服务运行。

使用 nano 编辑器创建一个新的配置文件 \/etc/supervisor/conf.d/myapp.conf\。

sudo nano /etc/supervisor/conf.d/myapp.conf

将以下配置添加到文件中。并且一定要更改配置和用户的详细路径。

使用此配置,您将使用 Gunicorn 运行 Flask 项目,而不是使用应用程序的 IP 地址,您将像 sock 文件一样运行 Flask 项目。

[program:myapp] 
command=/bin/bash -c 'source /var/www/myapp/myenv/bin/activate; gunicorn -w 3 --bind unix:/var/www/myapp/ipc.sock wsgi:app'
directory=/var/www/myapp
user=james
group=www-data
autostart=true
autorestart=true
stdout_logfile=/var/www/myapp/myapp.log
stderr_logfile=/var/www/myapp/error.log

完成后保存并关闭文件。

现在使用以下命令重新启动主管服务以应用新更改。

sudo systemctl restart supervisor

最后,使用以下命令检查并验证 Supervisor 下的进程列表。您应该看到 \myapp\ 进程正在运行。

sudo supervisorctl status

如果您检查主管服务,您将看到主管服务处于活动状态并正在运行。

sudo systemctl status supervisor

将 Nginx 设置为 Flask 应用程序的反向代理

使用 nano 编辑器创建一个新的虚拟主机配置\/etc/nginx/sites-available/myapp.conf\。

sudo nano /etc/nginx/sites-available/myapp.conf

将以下配置添加到文件中。在此示例中,Flask 项目将在本地域“www.myapp.local\”下运行。此外,您还可以看到“proxy_pass”选项指向在 Gunicorn 和 Supervisor 下运行的 UNIX sock 文件。

server {
    listen 80;
    server_name www.myapp.local;

    location / {
        include proxy_params;
        proxy_pass http://unix:/var/www/myapp/ipc.sock;
    }
}

完成后保存并关闭文件。

接下来,运行以下命令激活服务器块配置“myapp.conf”,然后验证 Nginx 配置。如果您没有收到任何错误,您将看到输出消息,例如“Syntax OK - test successful\”。

sudo ln -s /etc/nginx/sites-available/myapp.conf /etc/nginx/sites-enabled/
sudo nginx -t

之后,您可以使用以下命令重新启动 Nginx 服务以将新更改应用于 Nginx 配置。

sudo systemctl restart nginx

现在在您的本地计算机上,使用 nano 编辑器编辑 /etc/hosts 文件。

sudo nano /etc/hosts

定义 Ubuntu 机器 IP 地址,域名为 \www.myapp.local\,如下所示。

192.168.5.28 www.myapp.local

保存并关闭文件。

现在打开您的网络浏览器并在地址栏中输入 Flask 项目域名(即 http://www.myapp.local)。你应该得到你的 Python Flask 项目的索引页。

结论

恭喜!您已经在 Ubuntu 22.04 机器上成功安装了带有 Gunicorn 和 Nginx 的 Python Flask Web 框架。您还学习了如何创建第一个 Python Flask 项目、设置 Python 虚拟环境以及为 Flask 项目设置 Supervisor 进程管理。

©2015-2025 艾丽卡 support@alaica.com