照例,先亮底html
centos:7.2
cpu:1核 2G内存 1M带宽python
辅助工具:xshell xftplinux
.net core 的运行环境我单独写了一篇,请看个人这篇文章[linux(centos)搭建.net core 运行环境]git
我这里新建一个空的.net core web程序用以演示,实际部署时是你的项目github
建立web项目(我本身使用vs2017 ,如使用vscode的须要本身安装windows的SDK和使用dotnet命令)web
首先确保你的项目能在windows上运行docker
ok,接下来发布shell
我发布到默认的 bin\Release\netcoreapp2.1\publish 下面,大家能够自定义目录vim
发布完成后可看到以下文件结构windows
ok,web程序已经准备好。
我这里使用xftp工具上传,上传目录是 /home/website/WebApplication3
去程序所在目录
cd /home/website/WebApplication3
启动站点
dotnet WebApplication3.dll
显示上示信息表明启动成功。如今打开 http://你的服务器ip:5000
看到运行正常的web页面(5000端口打不开请检查你的服务器防火墙,网络配置等);
从上面的运行结果来看,.net core 程序是以服务的方式前台运行(相似windows控制台),那么若是:
一、服务器忽然死机重启了;
二、异常致使站点服务挂掉了;
三、运行的shell被运维人员或什么人不知道,关掉了;
等等缘由,无论什么缘由,服务异常关闭在生产环境都是不可接受的,那么我能不能有什么办法保证,个人服务时刻要处于运行状态,一旦挂掉,我马上重启它呢?
有,这就是Supervisor干的事;
(其实还有其余的进程守护工具的,有机会咱们再单独聊聊)
一、安装Supervisor
yum install python-setuptools easy_install supervisor
二、配置Supervisor
mkdir /etc/supervisor echo_supervisord_conf > /etc/supervisor/supervisord.conf
将supervisord.conf文件的最底下的,改为这样
[include] files = conf.d/*.conf
若是须要启用UI管理的话也是修改这个文件
改这几句
;[inet_http_server] ; inet (TCP) server disabled by default ;port=127.0.0.1:9001 ; (ip_address:port specifier, *:port for all iface) #监听 ;username=user ; (default is no username (open server)) #用户名 ;password=123 #密码
*ps:若是服务已启动,修改配置文件可用“supervisorctl reload”命令来使其生效*
三、添加对WebApplication3.dll的守护
建立一个 WebApplication3.conf文件,内容以下:
;后面的中文是注释,为避免乱码等问题致使supervisor启动失败,能够先删掉注释再放到服务器
[program:WebApplication3] command=dotnet WebApplication3.dll ; 运行程序的命令 directory=/home/wwwroot/WebApplication3/ ; 命令执行的目录 autorestart=true ; 程序意外退出是否自动重启 stderr_logfile=/var/log/WebApplication3.err.log ; 错误日志文件 stdout_logfile=/var/log/WebApplication3.out.log ; 输出日志文件 environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量 user=root ; 进程执行的用户身份 stopsignal=INT
将文件拷贝至:“/etc/supervisor/conf.d/WebApplication3.conf”下
运行supervisord,查看是否生效
supervisord -c /etc/supervisor/supervisord.conf ps -ef | grep WebApplication3
能够看到,WebApplication3正在运行,那么对WebApplication3站点的进程守护配置完成,下面测试一下;
四、Supervisor配置开机启动
不言而喻,这个很重要了,守护进程是须要开机启动的;
cd /usr/lib/systemd/system/ vim 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对.net core 站点的守护
使用:reboot
命令重启后便可,再次访问站点,你会惊喜的发现站点依旧在运行
http://www.cnblogs.com/ants/p/5732337.html
至此,.net core 程序普通部署方式完毕,若使用docker方式部署,请看个人 Asp.Net Core 程序部署到Linux(centos)生产环境(二):docker部署(已发布)