You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure App Service用启动命令启动后台tmux会话?

Azure App Service自动启动tmux会话的解决办法

为啥原来的命令不行?

  • 把tmux启动命令放在gunicorn后面:gunicorn是前台运行的阻塞程序,启动后会一直占用终端,后面的tmux命令根本没机会执行。
  • 把tmux相关命令放gunicorn前面:要么是apt-get安装tmux时遇到权限、网络或启动超时问题(Azure会直接终止超时的启动进程,还可能没留下有效日志),要么是tmux安装后gunicorn的启动环境出了问题,导致服务无法正常启动。

解决步骤

1. 编写统一启动脚本

创建start_app.sh文件,内容如下:

# 安装tmux(如果使用自定义Docker镜像,建议提前在镜像构建阶段安装,避免每次启动重复安装浪费时间)
apt-get update && apt-get -y install tmux

# 后台启动tmux会话并运行monitor脚本,给会话命名方便后续管理
tmux new-session -d -s monitor_session 'python manage.py monitor'

# 以前台方式启动gunicorn(Azure App Service要求必须有前台进程维持服务运行,否则会判定服务未启动)
gunicorn --bind=0.0.0.0 --workers=4 --timeout 600 app.wsgi

2. 配置Azure使用启动脚本

在Azure门户的App Service配置页面,将启动命令设置为:

bash start_app.sh

额外注意事项

  • 优先提前安装tmux:每次启动都通过apt-get安装会增加启动耗时,甚至触发Azure的启动超时限制。建议制作自定义Docker镜像,在镜像构建时就完成tmux的安装,启动脚本中可删除apt-get相关命令。
  • 日志排查:如果问题仍存在,通过Azure门户的「日志流」功能查看容器日志和应用日志,大概率能捕获到apt-get或tmux启动时的具体错误信息。

内容的提问来源于stack exchange,提问作者Wouter Vonk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 06:30:37