蔚蓝触点 Azuretouch

Azuretouch
Touch your future

在CentOS7上部署.Net Core应用

虽然对Linux也不是很熟悉,但是纠结了很久很久,终于下定决心要抛弃windows了。
但自己这么多.Net应用,又没有勇气去改写。于是乎.Net Core是我唯一的选择了。
.Net Core发布至今也已经好几年了,.Net Core2.0出来也有年份了。。相信这个跨平台的框架,会让.Net的程序员们有所更多施展抱负的空间。
话不多说,今天要在CentOS7上直接部署.Net Core SDK,并将测试应用跑起来。

安装Core SDK

微软的东西,自然要去微软的网站上找资料。这里详细就不多说了,将安装SDK的步骤记录下来

  1. 增加SDK的源
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo sh -c 'echo -e "[packages-microsoft-com-prod]\nname=packages-microsoft-com-prod \nbaseurl= https://packages.microsoft.com/yumrepos/microsoft-rhel7.3-prod\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/dotnetdev.repo'
  1. 安装SDK
sudo yum update
sudo yum install libunwind libicu
sudo yum install dotnet-sdk-2.1.4

至此,.Net Core应该安装完成,我们可以键入dotnet --verion来查看.Net Core的版本

    [root@CentOS ~]# dotnet --version
    2.1.4
    [root@CentOS ~]#

测试程序

这里我就不演示如何新建.Net Core的web应用。
直接用VS新建一个web应用,然后编译后,发布到服务器对应的目录中。

[root@CentOS test]# ls
[root@CentOS test]# dotnet WebApplication6.dll
Hosting environment: Production
Content root path: /www/wwwroot/test
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.

现在,你可以打开你的浏览器,访问你的CentOS地址+端口5000,是不是网页打开了呢?

守护进程

.Net Core的应用是运行在Shell之中,假如Shell异常退出,或者服务器重启之后,Core应用需要人工干预来重新运行。这时候,我们就需要设置进程的守护程序来监控保护.Net Core的应用。
网上推荐的守护程序有supervisor和pm2,因为我使用的是宝塔面板,面板自带pm2的应用,所以我介绍一下如何使用pm2来设置.Net Core应用。

  1. 首先,我去面板管理界面中的软件管理菜单,在运行环境的分类下面,安装PM2管理器 2.6.1
  2. 安装结束后,我们要给.Net Core应用设置一个启动命令,来到应用目录下面,新建一个run.sh文件,其中的内容为
dotnet WebApplication6.dll

这个dll的名字根据你的实际情况来修改。

  1. 接下来我要在pm2里添加这个应用,继续来到刚刚的软件管理页面,打开pm2的设置,在项目列表中我要添加刚刚的应用。项目所在根目录选择应用所在目录,启动文件名称键入run.sh,项目名称你自己选一个,然后添加。详见下图
    pm.png

这时候,可以看到下面的应用状态是已经运行,继续在浏览器中打入之前的地址,看看能不能访问呢?

  1. 到现在,我们已经在pm2中添加了.Net Core应用,但是还有一个问题,重启服务器以后,pm2中的应用将会自动消失,那我们如何要保证服务器重启后,pm2自动加载已经设置好的应用呢?
    很简单,我们只要在控制台下键入这个命令
pm2 startup centos

这个命令将会把pm2加入系统服务中去。在系统重启后,自动启动pm2并加载已经设置好的应用。
如果启动的时候碰到下面错误。需要先将pm2进程结束pm2 kill以后再运行

[root@centos ~]# systemctl start pm2-root.service
Job for pm2-root.service failed because a configured resource limit was exceeded. See "systemctl status pm2-root.service" and "journalctl -xe" for details.

至此我们已经顺利的在CentOS里部署了.Net Core的环境,并运行了测试应用。剩下的,就是慢慢把原来的应用,改写成Core平台了。

参考资料
微软官方的如何安装.Net Core
将ASP.NET Core应用程序部署至生产环境中(CentOS7)
另一篇如何使用PM2 启动ASP.NET Core应用程序

未经允许不得转载:蔚蓝触点 Azuretouch » 在CentOS7上部署.Net Core应用

评论 2

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. 我也是用.net core
    之前都是用系统服务作为守护进程, 没试过pm2

    Meeleem (2018-04-03) 回复
    • 用pm2是因为装了宝塔面板,方便使用。也可以使用supervisor。

      mjsz (2018-06-11) 回复