环境:
Centos 7
已安装.Net core 2.0.0 .Net core 1.1.2
1、Supervisor安装
- yum 安装
yum install supervisor
(阿里云验证通过)
- easy_install 安装
如果yum安装无法找到资源,可以通过easy_install
wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
安装supervisor
easy_install supervisor
2、配置supervisor
- 在etc下创建目录,并赋权限
mkdir -m 700 -p /etc/supervisor
- 在目录“ /etc/supervisor”下创建配置文件
echo_supervisord_conf > /etc/supervisor/supervisord.conf
- 修改配置文件
vim /etc/supervisor/supervisord.conf
在文件末尾添加,注意首尾需无空格,需顶格
[include]
files=/etc/supervisor/conf.d/*.conf
- 在目录“/etc/supervisor”下创建dotnet core 进程配置文件存放目录“conf.d”
mkdir -m 700 /etc/supervisor/conf.d
3、创建进程配置文件
vim /etc/supervisor/conf.d/MyDotNetName.conf
"MyDotNetName"可以为dotnet core 入口dll文件名字 ,插入内容,注意首尾需无空格,需顶格:
[program:MyDotNetName]
command=/bin/bash -c "dotnet MyDotNetName.dll"
directory=/usr/PublishOutput/
stderr_logfile=/var/log/MyDotNetName.error.log
stdout_logfile=/var/log/MyDotNetName.stdout.log
environment=ASPNETCORE_ENVIRONMENT=Production
user=root
stopsignal=INT
autostart=true
autorestart=true
startsecs=3
[program:MyDotNetName] ;显示名称
command=/bin/bash -c "dotnet MyDotNetName.dll" ;运行命令,启动dotnet进程
directory=/usr/PublishOutput/ ;MyDotNetName目录
stderr_logfile=/var/log/MyDotNetName.error.log ;错误日志文件
stdout_logfile=/var/log/MyDotNetName.stdout.log ;日志文件
environment=ASPNETCORE_ENVIRONMENT=Production ;进程环境变量
user=root ;进程执行用户
autostart=true ;自动启动 autorestart=true ;是否自动重启
startsecs=3 ;自动重启间隔时间
4、创建supervisor 自启动服务
vim /etc/systemd/system/supervisor.service
编辑内容:
[Unit]
Description=supervisor [Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/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 daemon-reload
设置服务开机启动,即设置enable
systemctl enable supervisor.service
启动服务
systemctl start supervisor.service
5、验证dotnet进程是否启动
使用命令“ps -ef | grep dotnet”查看dotnet 是否运行
[root@machine ~]# ps -ef | grep dotnet
root : ? :: dotnet MyDotNetName.dll
root : pts/ :: grep --color=auto dotnet
6、supervisor远程管理
使用命令“vim /etc/supervisor/supervisord.conf”修改配置文件,如下设置
;[inet_http_server] ; inet (TCP) server disabled by default
;port=127.0.0.1: ; (ip_address:port specifier, *:port for all iface)
;username=user ; (default is no username (open server))
;password= ; (default is no password (open server))
;以下内容开启http服务
[inet_http_server]
port=192.168.1.71:9001 ;ip 加端口
username=admin ;登陆账号,可以不设
password=123456 ;登陆账户,可以不设
重启服务,就可以访问了
注意防火墙是否对端口9001例外
可能遇到的问题:
supervisor 启动dotnet.core 报“ too many start retries too quickly”