ASP.NET Core应用程序发布linux在shell中运行是正常的。可一但shell关闭网站也就关闭了,所以要配置守护进程, 用的是Supervisor,本文主要记录配置的过程和过程遇到的问题
安装Supervisor
1 yum install python-setuptools
2 easy_install supervisor
配置Supervisor
3 mkdir /etc/supervisor
4 echo_supervisord_conf > /etc/supervisor/supervisord.conf
5 上面语句执行完后就能在/etc/supervisor 文件夹下找到文件 supervisord.conf 如图
下面我们要将文件的结尾部分替换掉以便后面能读取到我们的配置文件
在文件的结尾找到以下
;[include];files = relative/directory/*.ini
将代码替换为如下,注意前后不能带 ;和空格符号
[include]files = conf.d/*.conf
6 进入目录 /etc/supervisor/ 新建 conf.d文件夹,conf.d文件夹下新建 myproject.conf文件
具体内容如下,注意命令执行的目录要写你项目文件所在的目录,两个日志文件的名称最好也统一改一下
[program:myproject] command=dotnet myproject.dll ; 运行程序的命令 directory=/root/mypro/ ; 命令执行的目录 autorestart=true ; 程序意外退出是否自动重启 stderr_logfile=/var/log/myproject.err.log ; 错误日志文件 stdout_logfile=/var/log/myproject.out.log ; 输出日志文件 environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量 user=root ; 进程执行的用户身份 stopsignal=INT
运行supervisord并查看
7 supervisord -c /etc/supervisor/supervisord.conf
8 ps -ef | grep myproject # 这行命令是查看有关myproject的所有进程 ,【注意】myproject是上面 program:myproject 的命名 ,如果你看到如下图 ,说明运行成功,如果没有成功可以看上面配置的那个错误日志文件
9 supervisorctl reload #最后重新载入配置
下面整理一些关于 Supervisor 的命令 ,参考链接https://segmentfault.com
命令 | 说明 |
---|---|
supervisord | 初始启动Supervisord,启动、管理配置中设置的进程 |
supervisorctl stop myproject | 停止某一个进程(programxxx),programxxx为[program:chatdemon]里配置的值,这个示例就是chatdemon |
supervisorctl start myproject | 启动某个进程 |
supervisorctl restart myproject | 重启某个进程 |
supervisorctl stop groupworker | 重启所有属于名为groupworker这个分组的进程(start,restart同理) |
supervisorctl stop all | 停止全部进程,注:start、restart、stop都不会载入最新的配置文件 |
supervisorctl reload | 载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程 |
supervisorctl update | 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启。注意:显示用stop停止掉的进程,用reload或者update都不会自动重启 |
温馨提示:如果要结束当前应用程序的进程必须先结束守护进程,不然应用程序是kill不掉的,因为它已经会自动重启了,我们可以 先用命令
ps -ef | grep supervisord
查出所有守护进程相关的进程 ,然后找到对应的守护进程再用 命令
kill -9 pid # -9 为强制执行
结束进程,最后才能kill掉我的应用进程。
详细参考: http://www.cnblogs.com/zhaopei/p/netcore.html
本文永久更新地址:http://siyouku.cn/article/6861.html
asp.net core 开发框架:https://github.com/2014fighting/CodeFrame.Web.git