波斯码BOSSMA Information Technology

在CentOS7中部署ASP.NET Core Web应用

发布时间:2018年2月25日 / 分类:ASP.NET, DOTNET / 次浏览 / 评论

.NET Core发展速度很快,特别是2.0发布后,越来越多的项目开始使用。网上关于ASP.NET Core的文章也已经很多了,但是因为版本升级较快,有些已经过时。这篇文章将基于当前最新的.NET Core 2.0.5运行时,说明在CentOS中部署的详细过程。

要部署的是一个Web应用,提供生成Guid的服务,只有一个页面,每次访问都生成一个新的Guid。

Web服务器使用默认的Kestrel ,同时使用Nginx做反向代理(Nginx比Kestrel功能更加丰富更加专业)。

这里使用了阿里云虚拟机,因为.NET Core 2x不支持CentOS 6,所以操作系统选择了64位 CentOS7.4,关于.NET Core 2x支持的linux发行版见:https://docs.microsoft.com/zh-cn/dotnet/core/linux-prerequisites?tabs=netcore2x

1、创建ASP.NET Core Web应用

首先在Visual Studio 2017中创建一个ASP.NET Core Web应用程序,采用Razor页面技术(本质还是MVC技术)。

去掉没用的代码,只保留必要的Index.cshtml和_ViewImports.cshtml。

编写Index.cshtml代码:

编写Index.cshtml.cs代码:

然后发布项目到某个本地目录,备用。

2、安装Nginx

为了省事,这里直接使用了一键安装包:lnmp,它提供的脚本会把nginx、mysql、php都安装好,虽然这个项目暂时用不上mysql和php。

具体安装流程见:https://lnmp.org/install.html

由于安装lnmp需要进行编译生成,如果机器性能不好可能需要较长时间。

安装成功后通过相关命令创建一个Web站点,比如这里是 guid.fireflysoft.net,此站点根目录在/home/wwwroot/guid.fireflysoft.net。

3、安装.NET Core SDK

因为默认的项目发布方式是便携发布,用于依赖框架的部署,并不会携带.NET Core的基础运行环境,需要在Linux系统中安装运行时。

首先将.NET产品包源添加到系统安装来源中:

然后安装.NET SDK

请注意查看安装结果,安装成功后执行 dotnet –info 应该可以显示.NET Core的相关信息:

4、启动ASP.NET Core应用程序

将步骤1中生成的应用发布文件上传到Nginx新建的站点guid.fireflysoft.net目录下。

通过命令启动它:

这时候将为此应用分配一个默认的5000端口,如果防火墙开放了此端口,通过IP:5000应该可以访问此站点了。

5、监控应用状态

使用步骤4中的命令已经启动了应用,但是如果退出shell,则应用进程会自动关闭。这显然不是我们想要的,也不能应用于生产环境。

systemd可以创建服务用来启动和监视应用的状态,并自动启动被关闭的程序。

这里在目录/etc/systemd/system/下创建一个名为kestrel-guid-fireflysoft-net.service的服务,服务内容:

相关配置请自行研究。

然后启用和启动该服务,并查看服务状态:

如果出现如下字样,则表明服务启动成功:

6、配置反向代理

修改Nginx下站点guid.fireflysoft.net的配置文件:

最后的location / { … } 是反向代理的相关配置,将对此站点的访问转发到本地5000端口。

7、演示站点

现在通过 http://guid.fireflysoft.net 就可以访问ASP.NET Core应用了。页面上只有一个Guid值,十分清爽:

以后需要生成一个Guid时,记得直接访问此站点哦,还可以程序调用,简直太方便了。

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自波斯码,原文地址《在CentOS7中部署ASP.NET Core Web应用

关键字:

建议订阅本站,及时阅读最新文章!
【上一篇】 【下一篇】

发表评论