1.安装 .Net SDK 不需要按照 .net core runtime,sdk 依赖于运行时会自动安装
第一步 添加dotnet源
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
第二步 安装 .Net Core
可能由于网络原因,下载要耐心等待一段时间,下载完成后执行下面命令。
sudo yum update
sudo yum install dotnet-sdk-2.1
(注意:centos6下gcc版本会提示过低,安装失败。解决方案:1.安装centos7(简单方便,帮瓦工之类的推荐);2.更新编译gcc(请自行搜索解决))
第三步 创建 Hello World测试程序
1 dotnet new console -o demo 2 cd demo
3 dotnet run
2.写一个ASP.NET Core应用(官网链接)
## 创建 razor web应用
1 cd /home 2 ///在当前目录下创建一个Web应用 3 dotnet new razor -o aspnetcoreapp 4 /// 运行应用程序 5 cd aspnetcoreapp 6 dotnet run
(ps:可能会Warn:“Unable to bind to http://localhost:5000 on the IPv6 loopback interface: 'Error -99 EADDRNOTAVAIL address not available'”, 具体参考 https://github.com/aspnet/KestrelHttpServer/issues/2117。验证完后,退出当前应用,继续下面的内容。)
我们的Web应用程序默认运行在5000端口,通常我们对外提供的Web都在80,443端口。Windows上我会使用IIS来宿主ASP.NET Core,在Linux下可以用Nginx,Apache,Jexus 等,[微软的文档都有详细说明]
## 安装 Jexus
上面我们已经完成.NET Core环境的安装,通常我们在Linux部署ASP.NET Core应用,按照微软的官方文档,我们通常需要Nginx 搭配 Systemd, Nginx并没有接管Kestrel 进程,我们需要维护2个进程,增加了复杂度。如果你把asp.net core部署于windows上,我们可以用IIS来接管Kestrel进程,我们在Linux上也可以用Jexus来达到IIS一样的体验。
直接安装独立版的Jexus,独立版的Jexus自带Mono,使用的是Mono的稳定版本4.8。安装 Jexus 直接使用一下命令即可(需要在root身份下执行):
安装独立版Jexus
curl https://jexus.org/release/x64/install.sh|sh
安装成功后会提示:OK, Jexus has been installed in /usr/jexus.
## 配置Jexus运行asp.net core
把asp.net core 应用部署到Jexus
mkdir -p /var/www/aspnetcore cd /var/dotnet/aspnetcoreapp/ dotnet publish -o /var/www/aspnetcore
然后使用下面的命令测试发布过后的程序是否运行正常
dotnet /var/www/aspnetcore/aspnetcoreapp.dl
## 配置jexus 网站:
/// 1、切换到Jexus配置文件目录 cd /usr/jexus/siteconf /// 2、复制默认的配置文件为aspnetcore cp default aspnetcore vi aspnetcore
###################### # Web Site: aspnetcore ######################################## port=80 root=/ /var/www/aspnetcore hosts= * #OR your.com,*.your.com AppHost={CmdLine=dotnet /var/www/aspnetcore/aspnetcoreapp.dll;AppRoot=/var/www/aspnetcore/;Port=0}
配置的重点就在于AppHost中,需要注意的是在AppHost中的port(端口号)不代表Jexus对外服务的port(端口号),而是指要转发的 Asp.Net Core应用程序的端口号,如果在程序中使用了UsrUrls自定义端口则使用UsrUrls中填写的端口(不建议使用UsrUrls自定义端口),在没有使用UsrUrls自定义端口的情况下端口号设置为 0,Jexus会在运行时与Asp.Net Core进行"协商"具体使用的端口号,避免多个应用分配,端口的麻烦和冲突的风险。 简单来说就是会将外部的请求转发到这个端口,由这个端口对应的Asp.Net Core应用程序对请求进行处理。
/// 由于我们的实验机子上上面的站点没有设置主机头,我们要把默认的default删除了 rm -rf /usr/jexus/siteconf/default /// 如果已启动 Jexus: sh /usr/jexus/jws restart /// 如果未启动 Jexus: sh /usr/jexus/jws start