【实战】在 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。

相关推荐
烂蜻蜓27 分钟前
Flask入门教程(十二):表单处理——从基础到Flask-WTF完整实践
后端·python·flask
库玛西29 分钟前
深入浅出传输层:UDP 与 TCP 协议全景指南
linux·服务器·网络·c++·笔记·tcp/ip·udp
jay神44 分钟前
【计算机毕业设计】基于Flask+Vue的电影数据可视化与智能推荐系统
前端·vue.js·python·信息可视化·flask·毕业设计·课程设计
满怀冰雪1 小时前
24-PaddleClas 模型评估、导出与推理部署入门
大数据·人工智能·python·深度学习·paddle
薛定谔的悦4 小时前
储能 EMS 的功率策略:从一块电表到一次逆流的 200 毫秒
大数据·linux·能源·储能·bms
DeepVisionary7 小时前
谷歌 Gemini Omni 1.1 Flash 正式发布:4K 视频、40 秒场景延伸,视频生成进入按 token 计费时代
python·自动化
新时代牛马7 小时前
Linux 内核入门地图:架构、源码目录与五大子系统
linux·运维·架构
阡之尘埃7 小时前
Python数据分析案例85——大模型微调全流程(SFT的LoRA微调)
人工智能·python·深度学习·语言模型·llm·微调·千问
海兰8 小时前
【应用】基于 Next.js 16 + Python mplfinance的金融K线图与技术指标可视化平台(三)
javascript·python·金融
Julien20048 小时前
控制 SELinux 文件上下文
linux·运维·服务器