Claw cloud 容器改造 VPS, 使用 supervisor 管理容器进程,实现应用开机自启、自动保活、cron 规则持久化

Vevc • 381 人浏览

本期摘要:Claw cloud | 容器vps | supervisor | 多进程保活 | cron

Claw cloud 注册地址:
https://console.run.claw.cloud/signin?link=TSWVWVN3G294

项目地址:
https://github.com/vevc/ubuntu

Supervisor 官网及项目地址:
https://supervisord.org
https://github.com/Supervisor/supervisor

进程管理工具选择

systemctl: 宿主机一般不会给特权模式

supervisor: 作为1号进程启动,管理其他进程,让容器拥有多进程自启、保活功能

改造前

1、启动测试进程

sudo /usr/sbin/cron

nohup python3 -m http.server 8080 1>/dev/null 2>&1 &

ps aux

2、添加一个定时任务

cat > /home/$USER/cron.sh << EOF
#!/usr/bin/env sh

date >> /home/$USER/cron.log
EOF

chmod +x /home/$USER/cron.sh

(crontab -l 2>/dev/null; echo "* * * * * /home/$USER/cron.sh") | crontab -

3、重启容器,cron 进程停止、http.server 服务进程停止、cron 定时任务规则丢失

改造

1、准备配置文件

mkdir ~/boot  # 家目录文件可持久化保存
cat > /home/$USER/boot/supervisord.conf << EOF
[supervisord]
nodaemon=true
logfile=/tmp/supervisord.log
logfile_maxbytes=5MB
logfile_backups=3
loglevel=info

[program:sshd]
command=/usr/sbin/sshd -D
autostart=true
autorestart=true

[program:cron]
command=/usr/sbin/cron -f
autostart=true
autorestart=true

[program:init]
command=/home/$USER/boot/init.sh
autostart=true
; init.sh 开机自启仅运行一次
autorestart=false
startretries=0
user=$USER

[program:http-server]
command=python3 -m http.server 8080
autostart=true
autorestart=true
user=$USER
EOF
cat > /home/$USER/boot/init.sh << EOF
#!/usr/bin/env sh

(crontab -l 2>/dev/null; echo "* * * * * /home/$USER/cron.sh") | crontab -
EOF

chmod +x /home/$USER/boot/init.sh

2、更新容器启动参数

  • Arguments: ["supervisord", "-c", "/home/vevc/boot/supervisord.conf"](注意路径中的用户名)

改造后

  • 重启容器测试
  • kill 进程保活测试

常见问题

  • supervisord.conf 配置文件不小心写错怎么恢复