当前位置: 首页 > news >正文

【实战】在 Linux 上使用 Nginx 部署 Python Flask 应用

在 Linux 上使用 Nginx 部署 Python Flask 应用

步骤一:准备 Flask 应用

  1. 创建 Flask 应用 确保你有一个可以运行的 Flask 应用。例如,创建一个简单的 app.py 文件:

    from flask import Flask
    app = Flask(__name__)@app.route('/')
    def hello_world():return 'Hello, World!'if __name__ == '__main__':app.run(host='0.0.0.0', port=5000)
    
  2. 安装依赖 在你的 Flask 应用目录中创建一个 requirements.txt 文件,并添加 Flask

    Flask==2.0.1
    

    然后安装依赖:

    pip3 install -r requirements.txt
    

步骤二:使用 systemd 管理 Flask 应用

  1. 创建一个 systemd 服务文件 创建一个新的 systemd 服务文件,例如 /etc/systemd/system/flaskapp.service,内容如下:

    [Unit]
    Description=Flask Application
    After=network.target[Service]
    User=your_username
    WorkingDirectory=/path/to/your/flaskapp
    ExecStart=/usr/bin/python3 /path/to/your/flaskapp/app.py
    Restart=always[Install]
    WantedBy=multi-user.target
    
  2. 重新加载 systemd 配置

    sudo systemctl daemon-reload
    
  3. 启动并启用服务

    sudo systemctl start flaskapp
    sudo systemctl enable flaskapp
    
  4. 检查服务状态

    sudo systemctl status flaskapp
    

步骤三:配置 Nginx

  1. 安装 Nginx 如果你还没有安装 Nginx,可以使用以下命令进行安装:

    SHELL

    sudo yum install nginx
    
  2. 配置 Nginx 反向代理 创建一个新的 Nginx 配置文件,例如 /etc/nginx/conf.d/flaskapp.conf,内容如下:

    SHELL

    server {listen 80;server_name your_domain_or_ip;location / {proxy_pass http://127.0.0.1:5000;proxy_set_header Host $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;}
    }
    
  3. 测试 Nginx 配置

    sudo nginx -t
    
  4. 重启 Nginx

    sudo systemctl restart nginx
    

步骤四:访问你的 Flask 应用

现在,你可以通过浏览器访问你的服务器 IP 或域名,应该能够看到 “Hello, World!” 的输出。

额外提示

  • 确保防火墙允许 HTTP 流量(端口 80)。你可以使用以下命令打开端口:

    sudo firewall-cmd --permanent --add-service=http
    sudo firewall-cmd --reload
    
  • 如果你使用的是 HTTPS,可以考虑配置 SSL 证书,例如使用 Let’s Encrypt。

相关文章:

  • 实现Azure Databricks安全地请求企业内部API返回数据
  • 【MySQL】004.MySQL数据类型
  • 【Openlayers】Openlayers 入门教程
  • ARINC818-实现
  • 解决 IntelliJ IDEA 项目启动时端口冲突问题
  • Spring Boot中Excel处理完全指南
  • 基于chatgpt和deepseek解答显卡的回答
  • PyTorch数据操作基础教程:从张量创建到高级运算
  • STM32 外部中断EXTI
  • 原生localStorage到zustand + persist改造
  • [密码学基础]密码学发展简史:从古典艺术到量子安全的演进
  • 碰一碰发视频系统源码搭建全解析:定制化开发
  • 芝法酱躺平攻略(21)——kafka安装和使用
  • LabVIEW 程序维护:为何选靠谱团队?
  • 纯FPGA控制AD9361的思路和实现之一 概述
  • JVM 系列:JVM 内存结构深度解析
  • Day10【基于encoder- decoder架构实现新闻文本摘要的提取】
  • 面向对象设计中的类的分类:实体类、控制类和边界类
  • 暨南大学 2024年ACM程序设计校赛 题解与知识点分析
  • SOA 核心三要素:服务、构件与对象的深度解析
  • 2025年福建省文旅经济发展大会召开
  • 观察|如何推动再保险交易规模上量增加话语权,行业在临港新片区共倡议
  • 人民网评:官方轻踩刹车,智能驾驶不能“蒙眼狂奔”
  • 2025扬州“烟花三月”国际经贸旅游节开幕,37个重大项目现场签约
  • 一季度江西GDP达7927.1亿元,同比增长5.7%
  • 潮州官方回应女婴事件:尚未发现虐待,各种原因导致营养不良