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

加载更多搜索结果...

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

如何在 Rocky Linux 上安装带有 Nginx 和 Gunicorn 的 Flask

在此页

  1. 先决条件
  2. 安装依赖项
  3. 设置用户
  4. 设置 Python 虚拟环境
  5. 安装 Flask 和 Gunicorn
  6. 创建第一个 Flask 应用程序
  7. 设置 Gunicorn 和 Supervisord
  8. 设置 Nginx 反向代理
  9. 结论

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)配对。

在本教程中,我们将展示如何在 Rocky Linux 服务器上使用 Gunicorn 和 Nginx 安装和配置 Flask Python Web 框架。您还将学习如何将 Supervisord 设置为流程管理器来管理 Python Flask 应用程序。

先决条件

要完成本教程,您需要满足以下一些要求:

  • Rocky Linux 服务器 - 您可以同时使用 Rocky Linux v8 或 v9 - 台式机或服务器。
  • 具有 sudo root 管理员权限的非 root 用户。
  • 用于本地开发的虚拟域名。

安装依赖

在第一步中,您将安装一些包依赖项,这些依赖项将用于安装和部署 Flask Web Framework。这包括 Python Pip、Nginx 和 Supervisord。

所有这些依赖包都在 Rocky Linux 存储库中可用,您可以通过 DNF 命令轻松安装它。

首先,确保您的系统上安装了 EPEL 存储库。或者您可以通过下面的 dnf 命令安装并启用它。

sudo dnf install epel-release

现在,使用下面的 dnf 命令安装一些 python 包 python3-pip 和 python3-devel 以及 GCC 编译器。这些包将用于安装 Python 包。

sudo dnf install python3-pip python3-devel gcc

当提示确认安装时,输入 y 并按 ENTER 继续。

接下来,运行下面的另一个 dnf 命令来安装 Nginx Web 服务器和 supervisord 包。这里的 Nginx 将作为你的 Flask 项目的反向代理,而 supervisord 将用于管理你的 Flask 应用进程。

sudo dnf install nginx supervisor

输入y,回车确认安装。

现在,通过下面的 systemctl 命令启动并启用 Nginx 服务。然后,验证 Nginx 服务以确保其正在运行。

sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx

您将看到如下输出 - Nginx 服务已启用并将在系统启动时自动运行。而Nginx服务的状态是running。

对于 supervisord 服务,运行以下命令启动并启用它。然后,验证 supervisord 服务的状态以确保其正在运行。

sudo systemctl start supervisord
sudo systemctl enable supervisord
sudo systemctl status supervisord

您将看到 supervisord 服务已启用,并将在启动时自动运行。而supervisord服务的状态是running。

设置用户

安装包依赖项后,您现在将设置一个新用户,用于运行 Flask 项目。

运行以下命令创建新用户并设置密码。在此示例中,您将创建新用户 alice。

当提示创建新密码时,输入您的密码并重复。

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

现在,运行以下命令将用户 alice 添加到 wheel 组,以便用户可以执行 sudo 命令。

sudo usermod -aG wheel alice

最后,登录新用户并运行 sudo 命令以验证 root 权限。出现提示时输入您的密码。

su - alice
sudo su

您应该会看到 Rocky Linux 机器的根 shell。

设置 Python 虚拟环境

在此步骤中,您将为 Flask Web 框架设置 Python 虚拟环境。

使用以下命令以您的用户身份登录。

su - alice

使用以下 mkdir 命令创建一个新的 Flask 安装目录 /var/www/myflask。

sudo mkdir -p /var/www/myflask

使用以下命令更改 Flask 安装目录的所有权和权限。所有权应属于具有 755 权限的用户 alice。

sudo chown -R alice:alice /var/www/myflask
sudo chmod 755 /var/www/myflask

现在,将您的工作目录移动到 Flask 安装目录 /var/www/myflask 并通过下面的 python 命令创建一个新的 Python 虚拟环境。

cd /var/www/myflask
python3 -m venv myenv

您将看到创建了一个新目录 myenv。

接下来,使用以下命令激活 Python 虚拟环境。如果激活,您将看到提示格式更改为例如 (myenv [email 。

source myenv/bin/activate

要从虚拟环境中停用,您应该运行以下命令。

deactivate

安装 Flask 和 Gunicorn

在安装 Flask 之前,请确保您处于虚拟环境中。或者您可以运行以下命令登录。

su - alice
cd /var/www/myflask
source myenv/bin/activate

现在,通过下面的 pip 命令安装 Flask 和 Gunicorn。这将在虚拟环境中安装 Flask 和 Gunicorn,而不是在系统范围内。

pip3 install flask gunicorn

安装 Flask 和 Gunciron 后,您就可以使用 Flask Web Framework 创建第一个应用程序了。

创建第一个 Flask 应用程序

在开始创建 Flask 应用程序之前,请确保您处于 Python 虚拟环境中。

使用您喜欢的编辑器创建一个新的 Python 文件 myflask.py。在这个例子中,我们将使用 nano 编辑器。

nano myflask.py

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

# myflask.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(host='0.0.0.0')

完成后保存文件并退出编辑器。

接下来,为您的静态文件创建一个新目录 templates 并在其上创建一个新的 index.html 文件。

mkdir -p templates
nano templates/index.html

将以下 HTML 脚本添加到文件中。

<html>
    <body>
        <h1><center>Hello Flask - Rocky Linux!</center></h1>
    </body>
</html>

完成后保存文件并退出编辑器。

现在使用以下命令执行 Python Flask 脚本 myflask.py。这将在开发模式下运行您的 Flask 应用程序,使用默认端口 5000 运行服务器 IP 地址。

python3 myflask.py

以下是您将获得的类似输出。

接下来,打开另一个终端并运行下面的 curl 命令来访问您的 Flask 应用程序。您将看到您创建的 index.html 文件的脚本。

curl localhost:5000

现在按 Ctrl+c 终止您的 Flask 应用程序。

设置 Gunicorn 和 Supervisord

在此步骤中,您将使用 Gunicorn 和 Supervisord 设置 Flask 应用程序。这允许您通过 Supervisord 进程可管理和可控制地运行和管理您的 Python 应用程序。

在 Flask 应用程序的同一目录中创建一个新的 Python 文件 uwsgi.py。在此示例中,目录应为 /var/www/myflask。

nano wsgi.py

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

# import myflask Flask application
from myflask import app

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

完成后保存文件并退出编辑器。

现在,运行以下 gunicorn 命令启动 Flask 应用程序并验证 Gunicorn 的配置。该应用程序现在应该在端口 8000 的 Gunicron 下运行。

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

下面是 gunicorn 命令的输出。

接下来,打开您的网络浏览器并访问服务器 IP 地址和端口 8000(即:http://192.168.5.100:8000/)。您应该会看到 Flask 应用程序的 index.html 页面。

此时,您的 Flask 应用程序正在使用 Gunicorn 运行,没有任何错误。您现在可以返回终端并按 Ctrl+c 终止 gunicorn 进程并开始配置 Supervisord 进程管理器。

通过以下 nano 命令为 Flask 应用程序 /etc/supervisord.d/flaskapp.ini 创建一个新的 Supervisord INI 文件配置。配置应存储在 /etc/supervisord.d 目录中。

sudo nano /etc/supervisord.d/flaskapp.ini

将以下配置添加到文件中。并确保更改应用程序的详细路径、用户和组以及日志路径。

使用此配置,您的 Flask 应用程序将在 Gunicorn 创建的 UNIX 套接字下运行。此 unix 套接字还将用于与 Nginx 反向代理交互。

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

完成后保存文件并退出编辑器。

现在,运行下面的 systemctl 命令以重新启动 Supervisord 服务并应用新的更改。然后,验证 Supervisord 状态并确保该服务正在运行。

sudo systemctl restart supervisord
sudo systemctl status supervisord

在下面的屏幕截图中,您可以看到 Supervisord 正在使用 Flask 应用程序的新附加配置运行。

最后,您现在可以通过下面的 supervisorctl 命令验证 Flask 应用程序的进程。您应该看到有一个名为 myflask 的进程,其状态为 OK。

sudo supervisorctl status

设置 Nginx 反向代理

在这一步中,您将学习如何将 Nginx 设置为在 Supervisord 进程管理器下运行的 Flask 应用程序的反向代理。您将为反向代理创建一个新的 Nginx 服务器块,并为 Flask 应用程序使用本地域名。

使用以下 nano 编辑器创建一个新的 Nginx 服务器块配置 /etc/nginx/conf.d/flaskapp.conf。

sudo nano /etc/nginx/conf.d/flaskapp.conf

将以下配置添加到文件中。并确保将域名 www.myflask.local 更改为您的本地开发域。

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

    location / {
        include uwsgi_params;
        proxy_pass http://unix:/var/www/myflask/ipc.sock;
    }
}

完成后保存文件并退出编辑器。

接下来,验证 Nginx 配置以确保您的配置正确。然后,重新启动 Nginx 服务以应用新更改。

sudo nginx -t
sudo systemctl restart nginx

此时,您的 Flask 应用程序现在可以通过在默认 HTTP 端口上运行的 Nginx 反向代理访问。

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

sudo nano /etc/hosts

使用域名“www.myflask.local”定义 Ubuntu 机器 IP 地址,如下所示。

192.168.5.28 www.myflask.local

保存并关闭文件。

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

结论

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

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