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

如何通过SSH命令行禁用/启用uWSGI Web服务器(Emperor模式)

解决方案:uWSGI Emperor模式下临时启用/禁用Web GUI

问题分析

你执行/etc/init.d/uwsgi stop后Web GUI仍可访问,核心原因是procd的respawn配置:你的init.d脚本里设置了procd_set_param respawn,这意味着procd会在uWSGI Emperor进程退出后自动重启它;而Emperor本身会自动监控/etc/uwsgi/vassals/目录,拉起所有配置对应的vassal进程(也就是你的luci Web GUI)。

临时禁用Web GUI的方法

方法1:让Emperor忽略目标vassal配置(推荐)

Emperor默认会监控vassals目录下的配置文件,通过重命名配置文件可让Emperor停止管理对应vassal:

# 禁用Web GUI:重命名luci的vassal配置
mv /etc/uwsgi/vassals/luci-cgi_io.ini /etc/uwsgi/vassals/luci-cgi_io.ini.disabled

Emperor检测到文件移除后,会自动停止对应的vassal进程。

重新启用时恢复文件名即可:

# 启用Web GUI:恢复配置文件名
mv /etc/uwsgi/vassals/luci-cgi_io.ini.disabled /etc/uwsgi/vassals/luci-cgi_io.ini

方法2:停止vassal进程并阻止Emperor重启

  1. 查找luci vassal的进程ID:
ps | grep luci-cgi_io
  1. 终止该进程:
kill <vassal-pid>
  1. 临时修改vassal配置,添加die-on-term = true(让Emperor收到进程终止信号后不再重启它):
# 在luci-cgi_io.ini中新增配置项
die-on-term = true

注:该修改重启Emperor后会失效,仅适用于临时场景。

方法3:完全停止Emperor并阻止procd重启

如果需要彻底关闭uWSGI服务(包括Emperor),需先禁用procd的自动重启机制:

  1. 临时注释init.d脚本中的respawn参数:
sed -i 's/procd_set_param respawn/#procd_set_param respawn/' /etc/init.d/uwsgi
  1. 重新加载服务配置:
/etc/init.d/uwsgi reload
  1. 停止uWSGI服务:
/etc/init.d/uwsgi stop

恢复自动重启时,取消注释并重新加载配置:

sed -i 's/#procd_set_param respawn/procd_set_param respawn/' /etc/init.d/uwsgi
/etc/init.d/uwsgi reload

参考资料(基于uWSGI 2.0.18版本)

  • Emperor模式vassal管理机制:Emperor会实时监控vassals目录的文件变化,自动创建/销毁对应vassal进程
  • die-on-term配置项:控制vassal进程被终止后,Emperor是否触发重启
  • procd respawn参数:OpenWRT类系统中,procd通过该参数实现进程的自动拉起

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 20:22:45