Appearance
概述
对于未使用宝塔面板的纯 Linux 服务器环境,可通过命令行直接安装配置 Supervisor 进程管理器,实现对 php think swoole 服务的持久化守护与故障自动拉起。
步骤一:安装专属核心扩展 (ebaozu_loader) 与基础软件
在纯 Linux 命令行环境下,确保已安装 PHP 8.0(NTS 版本)及基础扩展(swoole, redis, pdo_mysql 等):
- 安装核心加载器扩展:bash
EXT_DIR=$(php-config --extension-dir) cp loader/ebaozu_loader.so "${EXT_DIR}/" chmod 755 "${EXT_DIR}/ebaozu_loader.so" - 配置
php.ini:iniextension=ebaozu_loader.so - 核验扩展:bash
php --ri ebaozu_loader - 商业授权文件加固:bash
chmod 600 config/ebaozu/license.key chown www:www config/ebaozu/license.key
步骤二:安装 Supervisor
在 CentOS / Rocky Linux 环境下:
bash
yum install -y epel-release
yum install -y supervisor在 Ubuntu / Debian 环境下:
bash
apt-get update
apt-get install -y supervisor步骤三:配置子进程守护
在 /etc/supervisor.d/ 或 /etc/supervisor/conf.d/ 目录下创建 ebaozu.ini:
ini
[program:ebaozu]
command=php think swoole
directory=/www/wwwroot/ebaozu_v4
# 自动重启配置
autostart=true
autorestart=true
startsecs=3
startretries=5
# 运行用户
user=www
# 日志输出
stdout_logfile=/www/wwwroot/ebaozu_v4/runtime/supervisor.out.log
stderr_logfile=/www/wwwroot/ebaozu_v4/runtime/supervisor.err.log
stdout_logfile_maxbytes=10MB
stderr_logfile_maxbytes=10MB
priority=999
numprocs=1
process_name=%(program_name)s_%(process_num)02d步骤四:启动与日常管理命令
bash
# 启动 supervisord 主服务并加入开机自启
systemctl start supervisord
systemctl enable supervisord
# 重新加载配置文件并启动
supervisorctl update
supervisorctl start ebaozu
# 重启项目进程
supervisorctl restart ebaozu
# 查看运行状态
supervisorctl status
# 商业授权续期平滑重载(零业务停机中断)
kill -USR1 $(cat /www/wwwroot/ebaozu_v4/runtime/swoole.pid)常见问题排查
unix:///tmp/supervisor.sock no such file:主服务尚未启动,执行supervisord -c /etc/supervisord.conf或systemctl start supervisord。ebaozu_loader extension is required:PHP CLI 未加载核心 Loader 扩展,检查php --ini所加载的php.ini末尾是否添加extension=ebaozu_loader.so。license file not found or unreadable:授权文件缺失或权限不足,确保config/ebaozu/license.key存在且权限为600、属主为www。- 进程不断自动重启:检查项目根目录下
runtime/supervisor.err.log日志,排查禁用函数proc_open是否未解禁或端口冲突。