安装Supervisor
yum install python-setuptools
easy_install supervisor
配置Supervisor
mkdir /etc/supervisor
mkdir /etc/supervisor
初始化一个配置文件
echo_supervisord_conf > /etc/supervisor/supervisord.conf
修改配置
vi /etc/supervisor/supervisord.conf
最下边找到如下文本片段
;[include]
;files = relative/directory/*.ini
修改为,注意前面的分号(;)一定要去年
[include]
files = /etc/supervisor/conf.d/*.ini
mkdir /etc/supervisor/conf.d
cd /etc/supervisor/conf.d/
vi blog.ini
添加如下内容:
# 程序名称,在 supervisorctl 中通过这个值来对程序进行一系列的操作
[program:qqc_one]
# 启动命令,与手动在命令行启动的命令是一样的
command=dotnet Solution.WebApi.Blog.dll --urls="http://*:3001"
# 程序的启动目录
directory=/home/blog
# 可以通过 environment 来添加需要的环境变量,一种常见的用法是使用指定的 virtualenv 环境
environment=ASPNETCORE_ENVIRONMENT=Production
# 指定用户名
user=root
# 日志目录 需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
stdout_logfile=/var/log/blog.out.log
stderr_logfile=/var/log/blog.log
# 日志备份数量
stdout_logfile_backups = 20
# 指定日志文件大小
stdout_logfile_maxbytes = 20MB
# 把 stderr 重定向到 stdout,默认 false,错误日志也会写进stdout_logfile中
redirect_stderr=True
# 在 supervisord 启动的时候也自动启动
autostart=True
# 程序异常退出后自动重启
autorestart=True
启动 Supervisor 服务
supervisord -c /etc/supervisor/supervisord.conf
配置Supervisor开机启动,进入/usr/lib/systemd/system/目录,并创建supervisord.service文件
vi /usr/lib/systemd/system/supervisord.service
内容如下:
[Unit]
Description=Supervisor daemon
[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
设置开机启动
systemctl enable supervisord.service
systemctl daemon-reload
验证一下是否为开机启动
[root@iZwz99fef2zmvqjuajcfh2Z conf.d]# systemctl is-enabled supervisord
enabled
常用命令
查看supervisor启动日志
tail -f /var/log/messages
查看进程是否生效
ps -ef | grep qqc_one
启动/停止/重启/状态
service supervisord start/stop/restart/status
重启supervisord
service supervisord restart
设置环境变量
vi /etc/profile
export ASPNETCORE_ENVIRONMENT=Production
使环境变量生效
source /etc/profile
重启服务器
shutdown -r now
查看进程号
ps -aux|grep supervisord
kill 进程号
supervisorctl 操作:
输入命令 supervisorctl 进入 supervisorctl 的 shell 交互界面:
help # 查看帮助
status # 查看程序状态
stop program_name # 关闭 指定的程序
start program_name # 启动 指定的程序
restart program_name # 重启 指定的程序
tail -f program_name # 查看 该程序的日志
update # 重启配置文件修改过的程序(修改了配置,通过这个命令加载新的配置)