Supervisor 是什么?
Supervisor 是一个用 Python 写的进程管理工具,可以很方便的用来启动、重启、关闭进程(不仅仅是 Python 进程)。除了对单个进程的控制,还可以同时启动、关闭多个进程,比如很不幸的服务器出问题导致所有应用程序都被杀死,此时可以用 supervisor 同时启动所有应用程序而不是一个一个地敲命令启动。
Supervisor 能干什么?
Supervisor 帮助我们解决在开发过程中遇到的以下问题:
- ASP.NET Core 应用程序运行在 shell 之中,如果关闭 shell 则会发现 ASP.NET Core 应用被关闭,从而导致应用无法访问,这种情况当然是我们不想遇到的,而且生产环境对这种情况是零容忍的。
- 如果 ASP.NET Core 进程意外终止那么需要人为连进 shell 进行再次启动,往往这种操作都不够及时。
- 如果服务器宕机或需要重启我们则还是需要连入shell进行启动。
安装 Supervisor
首先安装 Python 包管理工具(Supervisor 使用 Python 开发的),然后再安装 supervisor。
1 | yum install python-setuptools |
supervisor 安装完成后会生成三个执行程序:
- *supervisortd *:supervisor 的守护进程服务(用于接收进程管理命令)
- *supervisorctl *:客户端(用于和守护进程通信,发送管理进程的指令)
- *echo_supervisord_conf *:生成初始配置文件程序。
配置 Supervisor
添加 supervisor 文件夹以及 conf.d
配置文件夹
1 | mkdir /etc/supervisor |
修改supervisord.conf
文件,在文件尾部:
1 | [include] |
启动 Supervisor 服务
1 | supervisord -c /etc/supervisor/supervisord.conf |
program 的配置
在 supervisor 的 conf.d
文件夹下新建一个程序配置文件,NetCoreWebDemo.conf
:
1 | 配置程序名称 |
重载 Supervisor 的配置文件
1 | supervisorctl reload #重新加载配置文件 |
客户端相关命令
1 | supervisorctl status #查看程序配置的状态 |
查看配置程序是否启动:
1 | ps -ef | grep NetCoreWebDemo #programdllname |
如果出现 dotnet NetCoreWebDemo.dll
这一行进程,则说明配置成功
设置 Supervisor 开机启动
在 /usr/lib/systemd/system
文件夹下新建 supervisor.service
配置文件,内容如下:
1 | [Unit] |
将服务设置为开机启动:
1 | systemctl enable supervisor.service |
其它命令:
1 | systemctl is-enabled supervisord #来验证是否为开机启动 |
配置 Supervisor 图形化管理
打开 supervisor 的配置文件
1 | vim /etc/supervisor/supervisord.conf |
找到配置:
1 | ;[inet_http_server] ; inet (TCP) server disabled by default |
修改成:
1 | [inet_http_server] ; inet (TCP) 服务,默认是关闭的 |
保存好修改后,重启 supervisor。
1 | supervisorctl reload |
防火墙查看 9001
端口是否开启
1 | firewall-cmd --list-ports #查看已开放的端口 |
开启端口:
1 | firewall-cmd --zone=public --add-port=9001/tcp --permanent |
命令含义
1
2
3 --zone #作用域
--add-port=9001/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效
打开浏览器输入:<192.168.8.8:9001>即可成功访问。