统计了三种方法:
一、使用nohup命令即可 【最简单】
nohup dotnet xxxx.dll 【xxxx为应用名称】
一般会报:nohup: ignoring input and appending output to ‘nohup.out’
解决方法命令:nohup dotnet Zhong.Famers.WebApi.dll –urls=”http://*:8080″ /dev/null 2>&1 &
二、将程序配置为服务
1、vim /etc/systemd/system/su.service
[Unit]
Description=su ##服务名称
[Service]
WorkingDirectory=/home/yjcz/api ##应用存放目录
ExecStart=/usr/bin/dotnet /home/yjcz/api/SU.WebApi.dll ##应用启动命令
程序崩溃后自动启动
Restart=always
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=su.service
用户角色
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
The default value is 90 seconds for most distributions.
TimeoutStopSec=90
[Install]
WantedBy=multi-user.target
2、通过systemctl命令管理
启用服务进程
systemctl enable appname.service
启动服务进程
systemctl start appname.service
查看进程状态
systemctl status appname.service
重启进程
systemctl restart appname.service
停止进程
systemctl stop appname.service
查看日志,实时显示程序console信息
journalctl -fu appname.service
3、关于.netcore应用程序更新
可以直接覆盖旧的应用程序文件,然后使用systemctl restart 命令重启进程,不需要先关闭进程后覆盖文件再启动。
三、使用Supervisor守护ASP.NET Core应用程序 【比较繁琐但有web界面,微软推荐】
1、安装Python包管理工具
使用下面的命令安装Python包管理工具:
1、yum install python -setuptools
如下图所示:
2、安装Supervisor
使用下面的命令安装Supervisor:
- easy_install supervisor
如下图所示:
3、配置Supervisor应用守护
通过运行echo_supervisord_conf程序生成supervisor的初始化配置文件,命令如下:
- mkdir /etc /supervisor
- echo_supervisord_conf >/etc/supervisor /supervisord .conf
如下图所示:
然后我们编辑supervisord.conf文件,在文件的尾部添加如下配置:
- ;conf .d 为配置表目录的文件夹,需要手动创建
- [include ]
- files =/etc/supervisor /conf .d /*.conf
如下图所示:
然后我们手动创建一个conf.d文件夹:
- mkdir /etc /supervisor /conf .d
如下图所示:
创建完成后的目录结构如下图:
supervisord.conf是主配置文件,应用程序配置文件放在conf.d文件夹下面。然后为应用程序创建一个名为AspNetCoreDeployDemo.conf的文件,并放到目录”/etc/supervisor/conf.d/”下,文件内容:
- [program :AspNetCoreDeployDemo ];程序名称,终端控制时需要的标识
- command =dotnet AspNetCoreDeployDemo .dll ;运行程序的命令
- directory =/root/NetCore /FDD /;命令执行的目录
- autorestart =true ;程序意外退出是否自动重启
- stderr_logfile =/var/log /AspNetCoreDeployDemo .err .log ;错误日志文件
- stdout_logfile =/var/log /AspNetCoreDeployDemo .out .log ;输出日志文件
- environment =ASPNETCORE_ENVIRONMENT =Production ;进程环境变量
- user =root ;进程执行的用户身份
- stopsignal =INT
- startsecs =10 ;自动重启时间间隔
执行下面的命令运行supervisord,查看是否生效:
- supervisord -c /etc /supervisor /supervisord .conf
- ps -ef |grep AspNetCoreDeployDemo
成功后的效果:
这时我们在浏览器里面访问:
这样就可以访问了。可以看到,这时我们就不需要在启动命令行了。而且关闭shell窗口也可以获取数据。
如果服务已经启动,修改配置文件可用”supervisorctl reload”命令来使其生效。
4、配置Supervisor开机启动
我们新建一个”supervisord.service”文件,文件内容如下:
-
dservice for systemd (CentOS 7.0+)
-
by ET-CS (https://github.com/ET-CS)
- [Unit ]
- Description =Supervisor daemon
- [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 =15s
- [Install ]
- WantedBy =multi -user .target
将文件上传至”/usr/lib/systemd/system/”目录下,然后执行下面的命令:
- systemctl enable supervisord
如下图所示:
执行下面的命令来验证是否为开机启动:
- systemctl is -enabled supervisord
如下图所示:
到此为止,配置就完成了。我们可以重启虚拟机来验证一下是否开机就会启动应用程序。这里已经测试过了,重启虚拟机,然后用root用户登录就可以直接访问应用程序。
我们还可以使用Web管理界面来管理supervisor,在web管理界面,可以进行进程的重启,日志查看等操作。
web界面操作需要在supervisor的配置文件里添加[inet_http_server]选项组,我们使用记事本文件打开supervisord.conf文件,去掉[inet_http_server]选项组前面的”;”:
修改之后重新加载服务:
- supervisorctl reload
如下图所示:
由于使用了9001端口,所以我们需要把9001端口添加到防火墙中:
- firewall -cmd –zone =public –add -port =9001 /tcp –permanent
如下图所示
修改完防火墙之后需要重启防火墙配置:
- firewall -cmd –reload
然后在浏览器里面访问url:http://192.168.254.128:9001/,如果配置正常,则会要去输入用户名和密码,输入配置文件里面的用户名和密码即可登录,登录成功以后界面如下所示:
在这里就可以看到正在运行的进程,而且还可以重启、停止等操作。
5、总结
Supervisor常用的相关命令如下:
- supervisorctl restart
;重启指定应用 - supervisorctl stop
;停止指定应用 - supervisorctl start
;启动指定应用 - supervisorctl restart all ;重启所有应用
- supervisorctl stop all ;停止所有应用
- supervisorctl start all ;启动所有应用
如果在执行命令的过程中,报下面的错误:
Error: .ini file does not include supervisorctl section
For help, use /usr/local/bin/supervisorctl -h
如截图这样:
需要切换到/etc/supervisor目录在执行上面的命令。
undefined
Original: https://www.cnblogs.com/yaodun55/p/16309270.html
Author: 少年Dev
Title: 解决关闭shell会话窗口则会发现ASP.NET Core应用也会被关闭问题
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/585534/
转载文章受原作者版权保护。转载请注明原作者出处!