您的位置:首页 > 运维架构 > Linux

ASP.NET Core 发布 centos7 配置守护进程

2018-03-24 15:22 856 查看

ASP.NET Core应用程序发布linux在putty中运行是正常的。可一但putty关闭网站也就关闭了,所以要配置守护进程, 用的是Supervisor,本文主要记录配置的过程和过程遇到的问题

安装 Supervisor 及配置 Supervisor

1.yum install python-setuptools
2.easy_install supervisor  #安装Supervisor
3.mkdir /etc/supervisor
4.echo_supervisord_conf > /etc/supervisor/supervisord.conf  #配置 Supervisor

4.配置

cd /etc/supervisor
ls

supervisord.conf文件

5. 文件的最后

;[include]
;files = relative/directory/*.ini

改成(【注意】去掉;且不能有空格)

[include]
files = conf.d/*.conf

6.进入目录 

/etc/supervisor/
 新建 
conf.d
文件夹,
conf.d
文件夹下新建 
netcore.conf
文件
内容(【注意】看 第二行 第三行的 注释,根据实际名字填入)

mkdir /etc/supervisor/conf.d    --创建conf.d文件夹
ls
cd conf.d
vi netcore.conf    --创建netcore文件并且向里面添加内容

[program:netcore]
command=dotnet mhqtalks.dll ; (注意)运行程序的命令
directory= /home/netcore/mhqtalks/ ; (注意 注意)对应的你的项目的存放目录,这个地方好多初学者搞错!!!
autorestart=true ; 程序意外退出是否自动重启
stderr_logfile=/var/log/netcore.err.log ; 错误日志文件
stdout_logfile=/var/log/netcore.out.log ; 输出日志文件
environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量
user=root ; 进程执行的用户身份
stopsignal=INT

运行supervisord并查看

7  supervisord -c /etc/supervisor/supervisord.conf
8  ps -ef | grep netcore  # 这行命令是查看有关netcore的所有进程 ,【注意】netcore是上面 program:netcore 的命名 ,如果你看到如下图 ,说明运行成功,如果没有成功可以看上面配置的那个错误日志文件

9 supervisorctl reload #最后重新载入配置

配置Supervisor开机启动

打开目录 

/usr/lib/systemd/system/
 新建文件 
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=42s

[Install]
WantedBy=multi-user.target

执行命令:

systemctl enable supervisord
systemctl is-enabled supervisord #来验证是否为开机启动

到此,完工。现在重新电脑什么都不用管,直接可以访问部署好的网站。

下面整理一些关于 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都不会自动重启

温馨提示:如果要结束某个守护进程,我们可以 ps -ef | grep supervisord 查出所有守护进程相关的进程,然后再用  kill -9 pid   结束进程

【ps -ef |grep 输出的具体含义】:

  (1)ps -ef |grep+服务名来对于查询服务是否正常运行

  ps:将某个进程显示出来

 -A  显示所有程序。 

 -e  此参数的效果和指定"A"参数相同。

 -f  显示UID,PPIP,C与STIME栏位。 

 grep命令是查找

 中间的|是管道命令 是指ps命令与grep同时执行

 (2)那每一项具体表示的含义呢?从左往右依次表示为:UID       PID   PPID     C STIME   TTY    TIME     CMD

各相关信息的意义:

UID 程序被该 UID 所拥有

PID 就是这个程序的 ID 

PPID 则是其上级父程序的ID

C CPU 使用的资源百分比

STIME 系统启动时间

TTY 登入者的终端机位置

TIME 使用掉的 CPU 时间。

 CMD 所下达的指令为何

 

想详细学习一下supervisor的可以看一下底下的推荐文章,包括设置web管理界面等等。

CentOS7下Supervisor安装与配置(Linux/Unix进程管理工具)

友情提示

作者: mhq_martin

博客园地址: http://www.cnblogs.com/mhq-martin/

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: