在 Rocky Linux 9 上使用 Gunicorn 和 Nginx 安装 Flask |在 Rocky Linux 9 上使用 Gunicorn 和 Nginx 安装 Flask |在 Rocky Linux 9 上使用 Gunicorn 和 Nginx 安装 Flask |在 Rocky Linux 9 上使用 Gunicorn 和 Nginx 安装 Flask |
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

在 Rocky Linux 9 上使用 Gunicorn 和 Nginx 安装 Flask |

发表 admin at 2025年2月28日
类别
  • 未分类
标签

欢迎阅读本指南,了解如何在 Rocky Linux 9 上使用 Gunicorn 和 Nginx 安装 Flask。但在深入讨论这个问题的核心之前,我们需要了解一些事情。

编程是当今科技世界的一个基本概念。它可以定义为用计算机可以理解和执行的一组指令编写代码。 Python 是最常用的编程语言之一。它用于自动化、机器学习、软件和网站开发、数据科学等

Flask 是一个 Python 模块,有助于简化 Python 的 Web 开发。它之所以受到青睐,是因为它的灵活性和可扩展性提供了无数的内置模块,使开发过程变得非常容易。开发人员能够使用单个文件开发 Web 应用程序。 Flask 基于Jinja 模板引擎,它使用熟悉的 Python 概念(例如循环、列表、变量等)构建 HTML 页面。

Flask 可用于国内和企业公司。这些公司包括 LinkedIn、Reddit、Uber、Netflix、Pinterest、Uber、Airbnb、Mailgun、PythonAnyWhere 等。 Flask 广泛用于:

  • 天气应用
  • 反馈表
  • 休息API应用程序
  • 博客应用程序
  • 部署机器学习模型
  • 投资组合网站
  • 社交网络网络应用程序

让我们深入了解一下!

#1.安装所需的组件

此设置需要多个软件包。其中一些在 EPEL 存储库中提供,需要使用以下命令启用:

sudo dnf install epel-release

在 Ropcky Linux 9 上启用 EPEL 存储库后,安装 Python 包管理器 (PIP)、编译器以及 Gunicorn 所需的 Python 开发包。

sudo yum install python3-pip python3-devel gcc

代理还需要 Nginx Web 服务器:

sudo dnf install nginx -y

#2.创建Python环境

这里需要 Python 环境来保护我们的 python 项目。首先,使用 PIP 安装 virtualenv 软件包。

sudo pip3 install virtualenv

接下来,创建项目目录:

sudo mkdir /sample_project && cd /sample_project
sudo chmod 777 /sample_project

现在创建项目环境并激活它:

virtualenv projectenv
source projectenv/bin/activate

#3。创建 Flask 应用程序

在创建应用程序之前,我们需要安装 Flask 和 Gunicorn。这可以通过执行命令来实现:

pip3 install gunicorn flask

现在创建应用程序:

vim /sample_project/hello.py

下面是一个简单的应用程序代码,其中 Flask 已作为 Python 模块导入以初始化 Web 应用程序。

from flask import Flask
application = Flask(__name__)

@application.route("/")
def hello():
    return "<h1 style='color:chocolate'>Hello World! Flask is stupefying!</h1>"

if __name__ == "__main__":
    application.run(host='0.0.0.0')

当在端口 5000 上查询根域时,将提供此 Web 应用程序。允许此端口通过防火墙:

sudo firewall-cmd --add-port=5000/tcp --permanent
sudo firewall-cmd --reload

使用以下命令测试应用程序:

$ python hello.py
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
 * Serving Flask app 'hello'
 * Debug mode: off
 * Running on all addresses (0.0.0.0)
   WARNING: This is a development server. Do not use it in a production deployment.
 * Running on http://127.0.0.1:5000
 * Running on http://192.168.205.12:5000 (Press CTRL+C to quit)

使用提供的 URL 在浏览器上访问应用程序,验证该应用程序是否正常工作

#4。为 Flask 配置 Gunicorn

为了让 Gunicorn 与应用程序交互,我们需要创建一个 WSGI 入口点。

vim /sample_project/wsgi.py

从创建的应用程序导入 Flask 实例。

from hello import application

if __name__ == "__main__":
    application.run()

保存文件并允许端口 8080 通过防火墙:

sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload

现在测试 Gunicorn 在所需端口 (8080) 上为应用程序提供服务的能力。

cd /sample_project
gunicorn --bind 0.0.0.0:8080 wsgi

使用提供的端口访问网络上的应用程序:

使用CTRL+C 关闭实例并停用虚拟环境。

deactivate

#5。管理 Flask 应用程序

我们需要创建一个 systemd 服务文件,它将在每次系统启动时自动启动 Gunicorn 并为 Flask 应用程序提供服务。

sudo vim /etc/systemd/system/web-app.service

该文件将包含以下行:

[Unit]
Description=The Gunicorn instance to serve Flask Project
After=network.target

[Service]
User=nginx
Group=nginx
WorkingDirectory=/sample_project
Environment="PATH=/sample_project/projectenv/bin"
ExecStart=/sample_project/projectenv/bin/gunicorn --workers 3 --bind unix:myproject.sock -m 007 wsgi

[Install]
WantedBy=multi-user.target

在上述文件中,将 /sample_project 替换为项目的正确路径。我们还设置 Gunicorn 创建一个名为 myproject.sock 的 Unix 套接字,umask 值为 007,允许 Nginx 组 t 访问它。

设置文件并配置 SELinux 以使路径可访问。

sudo chcon -R -t bin_t /sample_project/projectenv/bin/

重新加载系统守护进程

sudo systemctl daemon-reload

启动并启用应用程序在启动时自动启动:

sudo systemctl start web-app
sudo systemctl enable web-app

确认服务是否按需要运行:

$ systemctl status web-app
● web-app.service - The Gunicorn instance to serve Flask Project
     Loaded: loaded (/etc/systemd/system/web-app.service; enabled; vendor preset: disabled)
     Active: active (running) since Thu 2022-08-04 15:05:51 CEST; 7s ago
   Main PID: 31603 (gunicorn)
      Tasks: 4 (limit: 23441)
     Memory: 61.0M
        CPU: 370ms
     CGroup: /system.slice/web-app.service
             ├─31603 /sample_project/projectenv/bin/python /sample_project/projectenv/bin/gunicorn --workers 3 --bind unix:myproject.sock ->
             ├─31604 /sample_project/projectenv/bin/python /sample_project/projectenv/bin/gunicorn --workers 3 --bind unix:myproject.sock ->
             ├─31605 /sample_project/projectenv/bin/python /sample_project/projectenv/bin/gunicorn --workers 3 --bind unix:myproject.sock ->
             └─31606 /sample_project/projectenv/bin/python /sample_project/projectenv/bin/gunicorn --workers 3 --bind unix:myproject.sock

#6。配置 Nginx Web 服务器

我们需要配置 Nginx 来代理传递 HTTP 请求,并指示 Gunicorn 捕获有关客户端的一些信息。

sudo vim /etc/nginx/conf.d/sampleapp.conf

在文件中,添加以下行;

server {
    listen 80;
    server_name server_domain_or_IP;

    location / {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://unix:/sample_project/myproject.sock;
    }
}

在该文件中,替换 server_domain_or_IP 和 Unix 套接字路径 /sample_project/myproject.sock。

现在允许 Nginx 访问 Gunicorn sock:

sudo semanage permissive -a httpd_t 

另外,允许 Nginx 访问项目目录:

sudo chgrp -R nginx /sample_project/

验证配置的语法:

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

启动并启用 Nginx:

sudo systemctl start nginx
sudo systemctl enable nginx

允许 HTTP 端口通过防火墙:

sudo firewall-cmd --add-port=80/tcp --permanent
sudo firewall-cmd --reload

现在访问 URL http://IP_Address 或 http://domain_name

判决

我们系统地介绍了如何在 Rocky Linux 9 上安装带有 Gunicorn 和 Nginx 的 Flask。此处收集的知识可用于创建和使用带有 Gunicorn 和 Nginx 的任何其他 Flask 应用程序。我希望这很重要。

查看更多:

学习面向对象编程的最佳书籍

如何在 Rocky Linux 8/CentOS 8 上安装 NetBox IPAM

在 CentOS 8/CentOS 7 上安装 Python 3.9

©2015-2025 Norria support@norria.com