首页 > 系统相关 >Linux部署Python Web服务

Linux部署Python Web服务

时间:2025-01-22 10:27:24浏览次数:3  
标签:Web Gunicorn Python app sudo sock flask Linux your

以下展示了在 Linux 上部署 Flask 应用时,使用 Nginx 和 Gunicorn 配合的两种绑定方式:绑定端口 和 绑定 UNIX 套接字 (.sock) 的完整流程。


1. 准备工作

确保已经安装以下组件:

sudo apt update
sudo apt install python3 python3-pip python3-venv nginx

创建 Flask 项目,并进入其目录:

mkdir flask_app
cd flask_app
python3 -m venv venv
source venv/bin/activate
pip install flask gunicorn

创建 app.py 示例文件:

from flask import Flask

app = Flask(__name__)

@app.route("/")
def home():
    return "Hello, Flask with Nginx and Gunicorn!"

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

2. 使用 Gunicorn 绑定到端口

2.1 启动 Gunicorn 绑定端口

运行 Gunicorn,将应用绑定到指定端口(例如 5000):

gunicorn -w 4 -b 0.0.0.0:5000 app:app

2.2 配置 Nginx 代理到端口

编辑 Nginx 配置文件 /etc/nginx/sites-available/flask_app

server {
    listen 80;
    server_name your-server-ip-or-domain;

    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;
    }
}

启用配置并重启 Nginx:

sudo ln -s /etc/nginx/sites-available/flask_app /etc/nginx/sites-enabled/
sudo nginx -t  # 测试配置
sudo systemctl restart nginx

2.3 配置 Systemd 服务管理端口绑定的 Gunicorn

创建 systemd 服务文件 /etc/systemd/system/flask_app_port.service

[Unit]
Description=Gunicorn instance to serve Flask app (Port)
After=network.target

[Service]
User=your-username
Group=www-data
WorkingDirectory=/path/to/your/flask_app
Environment="PATH=/path/to/your/flask_app/venv/bin"
ExecStart=/path/to/your/flask_app/venv/bin/gunicorn -w 4 -b 0.0.0.0:5000 app:app

[Install]
WantedBy=multi-user.target

启动并启用服务:

sudo systemctl start flask_app_port
sudo systemctl enable flask_app_port

3. 使用 Gunicorn 绑定到 UNIX 套接字

3.1 启动 Gunicorn 绑定 UNIX 套接字

运行 Gunicorn,绑定到 .sock 文件:

gunicorn -w 4 -b unix:/path/to/your/flask_app/flask_app.sock app:app

设置 .sock 文件权限:

sudo chmod 766 /path/to/your/flask_app/flask_app.sock

3.2 配置 Nginx 代理到 .sock

编辑 Nginx 配置文件 /etc/nginx/sites-available/flask_app_sock

server {
    listen 80;
    server_name your-server-ip-or-domain;

    location / {
        proxy_pass http://unix:/path/to/your/flask_app/flask_app.sock;
        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;
    }
}

启用配置并重启 Nginx:

sudo ln -s /etc/nginx/sites-available/flask_app_sock /etc/nginx/sites-enabled/
sudo nginx -t  # 测试配置
sudo systemctl restart nginx

3.3 配置 Systemd 服务管理 .sock 绑定的 Gunicorn

创建 systemd 服务文件 /etc/systemd/system/flask_app_sock.service

[Unit]
Description=Gunicorn instance to serve Flask app (Socket)
After=network.target

[Service]
User=your-username
Group=www-data
WorkingDirectory=/path/to/your/flask_app
Environment="PATH=/path/to/your/flask_app/venv/bin"
ExecStart=/path/to/your/flask_app/venv/bin/gunicorn -w 4 -b unix:/path/to/your/flask_app/flask_app.sock app:app

[Install]
WantedBy=multi-user.target

启动并启用服务:

sudo systemctl start flask_app_sock
sudo systemctl enable flask_app_sock

4. 测试部署

端口绑定方式

访问 http://<your-server-ip>,Nginx 将代理到 Gunicorn 的 5000 端口。

UNIX 套接字方式

访问 http://<your-server-ip>,Nginx 将代理到 Gunicorn 的 .sock 文件。


5. 对比两种方式

方式优点缺点
绑定端口配置简单,容易调试。性能略低,适合小型应用。
绑定 UNIX 套接字更高性能(避免 TCP/IP 网络栈开销),适合高并发场景。配置稍复杂,需管理 .sock 文件权限。

注意:该内容由由AIGC提供。

标签:Web,Gunicorn,Python,app,sudo,sock,flask,Linux,your
From: https://blog.csdn.net/weixin_49784554/article/details/145253969

相关文章

  • Python可视化神器1-Pyecharts绘图详细教程-初识Pyecharts
    前言文档位于 pyecharts-APythonEchartsPlottingLibrarybuiltwithlove.示例位于 Documentecharts官网 https://www.echartsjs.com/zh/index.html1.简介1.1Pyecharts是什么Echarts是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众......
  • 使用python gitlab包来实现更新gitlab wiki page
    可以使用Python的python-gitlab包来实现对GitLab项目Wiki页面内容的更新。GitLab的Wiki页面支持通过API进行读取、创建和更新,而python-gitlab包提供了对这些API的封装。使用python-gitlab更新Wiki页面安装python-gitlab确保已安装python-gitlab......
  • Python运算符
    1、算术运算符加+ 减—  乘* 除/ 整除// 取余% 幂运算**优先级:第1级:**第2级:*,/,%,//第3级;+,-print("加",1+4)print("减",8-19)print("乘",8*3)print("除",8/3)print("整除",8//3)print("取余",8%3)print(......
  • Linux性能分析
    sudoyuminstall-yepel-releasesudoyumupdate-ysudoyumgroupinstall-y"Developmenttools"sudoyuminstall-yelfutils-libelf-develcmake3gitbisonflexncurses-develsudoyuminstall-yluajitluajit-devel#forLuasupportcurl-LOh......
  • 【Linux网络】深入理解linux内核网络性能优化
    一、网络请求优化1.1减少不必要的网络IO在系统设计与开发过程中,应尽量避免不必要的网络I/O操作,尤其是在可以通过本地进程或内存内完成的场景下,避免使用网络通信来实现。网络虽然是现代分布式系统中的核心组件,能够连接不同模块、简化开发流程,并支持大规模系统的构建,但滥用网络会......
  • ✅毕业设计:基于python商品销售数据分析可视化系统 ARIMA 时序预测模型 淘宝商品数据分
    博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久,选择我们就是选择放心、选择安心毕业✌>......
  • 大数据毕业设计:python商品销售数据实时分析可视化大屏 购物商品销售数据 营收数据分析
    博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久,选择我们就是选择放心、选择安心毕业✌>......
  • python装饰器底层原理
    什么是装饰器装饰器是Python中的一种特殊函数,主要用于修改或扩展其他函数或方法的功能,而无需修改函数本身的代码。它们通常通过在函数定义前加上@装饰器名称来使用。@decorator_functiondefmy_function():pass​  装饰器的基本结构一个基本的装饰器包含一个函......
  • 鸟哥linux私房菜笔记(一)
    鸟哥私房菜linux学习笔记(一)之所以学鸟哥linux私房菜这本书,是因为受到多人推荐,本书在业界也一直好评,买来一看,名副其实,从最基础的计算机构成开始讲起,适合爱好者和从业者学习或者深入研究。本书有若干章节,我挑选了部分来学习,重点学习文件管理和shell.第一章linux的起源unix作......
  • 08使用EFCore进行增删改查 - ASP.NET Core WebAPI
    文章目录一、如何在控制器中使用EFCore1.注册服务2.获取db对象3.使用db对象进行crud二、如何在筛选器中使用EFCore1.与控制器类中同样操作2.注意事项一、如何在控制器中使用EFCore1.注册服务在program.cs文件中添加以下代码。builder.Services.AddDbContext<App......