*.使用Supervisor部署基于.Net core3.1服务的守护进程。
1.vs中发布项目
2.将发布好的项目,打包压缩上传至Centos7系统目录,我这里是在/var/www目录下。
3.安装dotnetcore环境
# 添加微软官方源
rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
# 安装SDK
yum -y install dotnet-sdk-3.1
# 或者安装运行时
sudo yum install aspnetcore-runtime-3.1
# 验证安装是否成功
dotnet --version
dotnet --info
4.我这里使用的是5000端口,防火墙需要开放5000端口,防火墙关闭的则跳过
# 查看端口开放情况
firewall-cmd --zone=public --list-ports
# 开放5000端口
firewall-cmd --zone=public --add-port=5000/tcp --permanent
# 重启防火墙
firewall-cmd --reload
5.使用命令,验证项目是否能正常启动,切换到项目目录,运行该命令,并在浏览器中访问
dotnet Fr.Mes.Web.App.dll --urls="http://*:5000"
6.安装supervisor
yum -y install supervisor
7.启动supervisor服务
supervisord -c /etc/supervisord.conf
8.进入/etc//supervisord.d文件夹下,创建xxx.ini文件
# program:项目名称
[program:Fr.Mes.Web.App]
# 执行文件
command=dotnet Fr.Mes.Web.App.dll --urls="http://*:5000"
# Fr.Mes.Web.App.dll所在目录
directory=/var/www/Fr.Mes.Web.App
# 是否自启动
autostart=true
# 意外退出是否重启
autorestart=true
# 启动失败后重启次数
startretries=5
# 启动间隔时间(秒)
startsecs=5
# 进程执行的用户身份
user=admin
priority=999
# 输出日志
stderr_logfile=/var/log/Fr.Mes.Web.App.err.log
# 输出日志
stdout_logfile=/var/log/Fr.Mes.Web.App.out.log
# 进程环境变量
environment=ASPNETCORE_ENVIRONMENT=Production
# 进程停止信号,可以为TERM, HUP, INT, QUIT, KILL, USR1, or USR2等信号默认为TERM 。当用设定的信号去干掉进程,退出码会被认为是expected,非必须设置
stopsignal=INT
9.刷新配置
supervisorctl reload
执行命令,出现如下错误
error: <class 'socket.error'>, [Errno 2] No such file or directory: file: /usr/lib64/python2.7/socket.py line: 224
解决方法如下:
# 执行如下命令
/usr/bin/python2 /usr/bin/supervisord -c /etc/supervisord.conf
查看supervisorctl守护项目状态:
supervisorctl
检查是否是开机启动
systemctl is-enabled supervisord
设置开机启动
systemctl enable supervisord