时间:2022-10-06 11:58:00 | 栏目:.NET代码 | 点击:次
Supervisor是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。
wget https://mirrors.tuna.tsinghua.edu.cn/epel/epel-release-latest-7.noarch.rpm rpm -ivh epel-release-latest-7.noarch.rpm yum install supervisor -y
文件名可以自定义 ,因为我要部署webUI和webAPI两个应用程序,所以新建了两个配置文件
cd /etc/supervisord.d vi WebApplication.WebUI.ini vi WebApplication.WebAPI.ini
WebApplication.WebUI.ini配置文件
# 冒号后面为应用名称 [program:WebApplication.WebUI] # 应用启动命令,需要dotnet的完整路径 command=dotnet WebApplication.WebUI.dll --urls http://0.0.0.0:8888 # 进程名称 process_name=%(program_name)s # 应用启动的目录,否则应用会报找不到文件的错误 directory=/data/apps/WebApplication.WebUI/ # .net core 应用环境变量,表明是哪个环境 environment=ASPNETCORE_ENVIRONMENT=Development # 执行用户 user=root stopsignal=INT # 掉线是否自动重启 autostart=true autorestart=true startsecs=3 priority=1 # 日志输出路径,该路径自定义(路径不存在需要手动创建文件目录) stderr_logfile=/data/logs/supervisor/log/%(program_name)s_error.log stderr_logfile_maxbytes=50MB stderr_logfile_backups=10 # 日志输出路径,该路径自定义(路径不存在需要手动创建文件目录) stdout_logfile=/data/logs/supervisor/log/%(program_name)s_error.log stdout_logfile_maxbytes=50MB stdout_logfile_backups=10
WebApplication.WebAPI.ini配置文件
# 冒号后面为应用名称 [program:WebApplication.WebAPI] # 应用启动命令,需要dotnet的完整路径 command=dotnet WebApplication.WebAPI.dll --urls http://0.0.0.0:7777 # 进程名称 process_name=%(program_name)s # 应用启动的目录,否则应用会报找不到文件的错误 directory=/data/apps/WebApplication.WebAPI/ # .net core 应用环境变量,表明是哪个环境 environment=ASPNETCORE_ENVIRONMENT=Development # 执行用户 user=root stopsignal=INT # 掉线是否自动重启 autostart=true autorestart=true startsecs=3 priority=1 # 日志输出路径,该路径自定义(路径不存在需要手动创建文件目录) stderr_logfile=/data/logs/supervisor/log/%(program_name)s_error.log stderr_logfile_maxbytes=50MB stderr_logfile_backups=10 # 日志输出路径,该路径自定义(路径不存在需要手动创建文件目录) stdout_logfile=/data/logs/supervisor/log/%(program_name)s_error.log stdout_logfile_maxbytes=50MB stdout_logfile_backups=10
注意:WebApplication.WebUI和WebApplication.WebAPI 应用程序需要放在对应目录下/data/apps
# 启动Supervisor supervisord -c /etc/supervisord.conf #查看状态 supervisorctl status # 防火墙开放端口(作者两个应用端口号分别是7777、8888) firewall-cmd --add-port=8888/tcp --permanent firewall-cmd --add-port=7777/tcp --permanent
vi /etc/supervisord.conf
取消截图部分注释
访问supervsior 后台管理页面,http://192.168.140.129:9001/
#启动Supervisor supervisord -c /etc/supervisor/supervisord.conf # 查看状态 supervisorctl status # 停止某个服务 supervisorctl stop WebApplication1 # 停止所有服务 supervisorctl stop all # 开始某个服务 supervisorctl start WebApplication1 # 开始所有服务 supervisorctl start all # 重启某个服务 supervisorctl restart WebApplication1 # 重启所有服务 supervisorctl restart all # 重启Supervisor supervisorctl reload # 修改Supervisor supervisorctl update
vi /usr/lib/systemd/system/supervisord.service # 内容 [Unit] Description=Supervisor [Service] Type=forking PIDFile=/var/run/supervisord.pid ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf ExecStop=/usr/bin/supervisorctl shutdown ExecReload=/usr/bin/supervisorctl reload KillMode=process Restart=on-failure RestartSec=42s [Install] WantedBy=multi-user.target
# 启动服务 systemctl enable supervisord # 验证是否为开机自启动 systemctl is-enabled supervisord
# 停止 systemctl stop supervisord # 启动 systemctl start supervisord # 状态 systemctl status supervisord # 重载 systemctl reload supervisord # 重启 systemctl restart supervisord
参考链接: