-
部署前准备
-
1.VisualStudio2017+.netcore2.0SDK
-
2.Centos7.2
-
3.SecureCRT,Xftp(根据自己喜好)
-
-
创建WebApi项目
-
修改Program.cs中的BuildWebHost方法为(不改也可,core默认使用Kestrel作为Server)
-
尝试使用IIS Express启动应用程序,启动项配置在
-
一切正常,然后我们发布程序,右键项目-发布-发布到文件夹,发布完成后的应用程序位置在\bin\Release\CoreTest.WebApi\
-
Xftp注意两处连接选项,使用Xftp将发布好的程序上传到服务器,位置在/home/wwwroot/
-
-
安装CentOS7下.NET Core SDK
-
(参考https://www.microsoft.com/net/core#linuxcentos)
-
输入命令dotnet --info查看sdk的安装信息,如下图
-
输入命令dotnet /home/wwwroot/CoreTest.WebApi/CoreTest.WebApi.dll 出现下图信息表明运行成功,我们的程序正在监听localhost:5000,此时还不能通过外网访问,我们使用Nginx将外部请求转发到应用程序上
-
安装Centos7下Nginx
-
启动: systemctl start nginx
-
设置开机启动:systemctl enable nginx
-
此时通过IP访问,出现Nginx的默认访问页面,表明安装成功
-
修改Nginx的配置文件,转发外部请求到应用程序
-
vi /etc/nginx/conf.d/default.conf
-
键入I 进入输入模式
-
将文件内容替换为
-
然后按Esc退出输入模式,进入命令模式,输入:wq回车,保存并退出
-
保存成功后
-
-
重新加载service nginx reload
-
输入命令dotnet /home/wwwroot/CoreTest.WebApi/CoreTest.WebApi.dll启动应用程序
-
此时再访问接口/api/values(创建项目的时候自带的) Nginx监听80端口接收外部请求并将请求转发给应用程序
-
-
配置守护服务(Supervisor)
-
目前存在三个问题
-
问题1:ASP.NET Core应用程序运行在shell之中,如果关闭shell则会发现ASP.NET Core应用被关闭,从而导致应用无法访问,这种情况当然是我们不想遇到的,而且生产环境对这种情况是零容忍的。
-
问题2:如果ASP.NET Core进程意外终止那么需要人为连进shell进行再次启动,往往这种操作都不够及时。
-
问题3:如果服务器宕机或需要重启我们则还是需要连入shell进行启动。
-
为了解决这个问题,我们需要有一个程序来监听ASP.NET Core 应用程序的状况。在应用程序停止运行的时候立即重新启动。这边我们用到了Supervisor这个工具,Supervisor使用Python开发的。
-
安装Supervisor
-
vi /etc/supervisor/supervisord.conf
-
修改supervisord.conf文件,将文件尾部的配置
-
修改成(注意前面的两个分号去掉)
-
Esc后:wq回车,保存退出ps:如果服务已启动,修改配置文件后可用supervisorctl reload命令来使其生效
-
监听应用程序配置
-
创建conf.d文件夹:mkdir /etc/supervisor/conf.d
-
创建并编辑CoreTest.conf配置文件:vi /etc/supervisor/conf.d/CoreTest.conf
-
运行supervisord,查看是否生效
-
出现下图所示,则表示配置成功
-
此时不用手动dotnet CoreTest.WebApi.dll启动应用程序也能访问(由Supervisor进程在后台监听)
-
配置Supervisor开机启动
-
新建一个“supervisord.service”文件 vi /usr/lib/systemd/system/supervisord.service
-
设置开机启动:systemctl enable supervisord
-
验证开机启动是否成功:systemctl is-enabled supervisord
-
重启服务器:reboot 此时不能访问
-
-
重启完成后,所有服务自动开启,正常访问
-
-
-