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

在 Linux 中让 ​​Gunicorn​​ 在后台运行(作为守护进程),有几种常用方法:

在 Linux 中让 Gunicorn 在后台运行(作为守护进程),有几种常用方法:

方法 1:使用 & 直接后台运行

gunicorn -w 4 -b 0.0.0.0:8000 "sentiment_api_py.app:app" &

优点:简单快捷。

缺点:终端关闭后进程会被终止(除非配合 nohup)。

方法 2:使用 nohup(终端退出仍运行)

nohup gunicorn -w 4 -b 0.0.0.0:8000 "sentiment_api_py.app:app" &

日志:输出会保存到 nohup.out。

停止服务:

pkill gunicorn  # 终止所有 Gunicorn 进程

方法 3:使用 tmux 或 screen(会话管理)

tmux new -s my_gunicorn  # 创建新会话
gunicorn -w 4 -b 0.0.0.0:8000 "sentiment_api_py.app:app"

按 Ctrl+B, 再按 D 退出会话(进程保持运行)

重新连接会话:

tmux attach -t my_gunicorn

方法 4:用 systemd(生产环境推荐)
创建服务文件:

  sudo nano /etc/systemd/system/gunicorn.service

写入以下配置(根据你的路径修改):

  [Unit]

Description=Gunicorn for Flask App
After=network.target

[Service]
User=tree # 替换为你的用户名
Group=www-data
WorkingDirectory=/home/tree/sentiment # 项目路径
ExecStart=/home/tree/sentiment/venv/bin/gunicorn -w 4 -b 0.0.0.0:8000 “sentiment_api_py.app:app”
Restart=always

[Install]
WantedBy=multi-user.target

启动并设为开机自启:

  sudo systemctl daemon-reload

sudo systemctl start gunicorn
sudo systemctl enable gunicorn

常用命令:

  sudo systemctl status gunicorn  # 查看状态

sudo systemctl stop gunicorn # 停止
sudo journalctl -u gunicorn -f # 查看日志

方法 5:使用 supervisor(进程管理工具)
安装 Supervisor:

  sudo apt-get install supervisor

创建配置文件:

  sudo nano /etc/supervisor/conf.d/gunicorn.conf

写入配置:

  [program:gunicorn]

command=/home/tree/sentiment/venv/bin/gunicorn -w 4 -b 0.0.0.0:8000 “sentiment_api_py.app:app”
directory=/home/tree/sentiment
user=tree
autostart=true
autorestart=true
stderr_logfile=/var/log/gunicorn.err.log
stdout_logfile=/var/log/gunicorn.out.log

启动服务:

  sudo supervisorctl reread

sudo supervisorctl update
sudo supervisorctl start gunicorn

如何选择?
临时测试:用 nohup 或 tmux。

生产环境:用 systemd 或 supervisor(推荐 systemd,更简单)。

验证是否运行
ps aux | grep gunicorn # 查看进程
curl http://127.0.0.1:8000 # 测试接口

http://www.xdnf.cn/news/9500.html

相关文章:

  • PHP中实现分布式架构的方法与工具全解析!
  • 【pg学习】-账号管理
  • 深入理解Nginx:详尽配置手册
  • Java复习Day21
  • 立体匹配视差图上色代码
  • OC—UI学习-1
  • GoldenDB管理节点zk部署
  • JavaScript- 4.2 DOM--定位元素
  • 《以撒的结合:四魂》桌游完全解析!
  • 说说线程有几种创建方式
  • 如何将通话记录从Android传输到Android
  • Tomcat- AJP协议文件读取/命令执行漏洞(幽灵猫复现)详细步骤
  • Linux的交换区
  • 《自动驾驶轨迹规划实战:Lattice Planner实现避障路径生成(附可运行Python代码)》—— 零基础实现基于离散优化的避障路径规划
  • 亚古数据:查询BVI(英属维尔京群岛)公司可以获取到什么信息和文件?
  • Ubuntu系统rsyslog日志突然占用磁盘空间超大怎么办?
  • 如何使用服务器搭建邮局系统?
  • MySQL 数据库备份与恢复利器:Percona XtraBackup 详解
  • MySQL强化关键_017_索引
  • 进程的控制和调度上
  • 2tensorf
  • ElectronBot复刻-电路测试篇
  • 数据分析与应用-----使用scikit-learn构建模型
  • 跑步机的控制面板英文的意思
  • 财政票据查验接口功能解析-接口实践-医疗票据管理
  • SSM 框架深度整合实战:从零构建企业级 Java 应用
  • 华为OD最新机试真题-反转每对括号间的子串-OD统一考试(B卷)
  • Vue 3 的 <script setup> 语法糖(持续更新)
  • 尚硅谷redis7 58-62 主从复制之一主二仆
  • 【前端】JS引擎 v.s. 正则表达式引擎