ASP.NET Core : 九.从Windows发布到CentOS的跨平台部署(上)
本文主要内容:
1.东西预备
2.CentOS 上装置.NET Core环境
3.Windows上用VS发布项目
4.项目运行测试
5.装置并配置Apache
6.创立service管理应用
7.其他注意事项
8.独立布置(SCD)
9.2018.5.8文章更新:Visual Studio 2017 15.7版别的项目发布提供了布置模式(结构依赖和独立布置)和方针运行时(win、osx、linux)的选择功能
示意图:
最近在阿里云上弄了个ECS玩,已然.NET Core跨渠道了,也就选了个CentOS的体系,然后踩坑开端。
一、东西预备
Putty:阿里云提供了一个网页方法长途操作CentOS的指令行东西,没找到怎么粘贴,挺不好用的。这个是一个指令行的小软件,也省去了每次都要登录阿里云控制台的过程。链接
FileZila:sftp东西,用于将windows上生成的发布包弄到CentOS上去。链接
二、CentOS 上装置.NET Core环境
装置.NET Core的环境有两种方法,SDK和Runtime,差异类似java的JDK和JRE。
官方提供的下载页面用Build Apps 和Run Apps描述这两个, 我们不需要在CentOS上编码, 所以装置Runtime就够了。
在页面的all downloads中找到CentOS对应的Runtime版别页面(链接)进行装置,这里要注意一下:
坑一:版别问题,看了一下自己的VS中项目的Microsoft.AspNetCore.All版别是2.0.6, 也就去找了Runtime的2.0.6版别, 否则容易呈现某些组件在VS上的引证版别和CentOS上的环境中的版别不一致的错误。
通过Putty链接到CentOS服务器,依照该页面上的过程履行如下指令:
1 sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc 2 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' 3 4 sudo yum update 5 sudo yum install libunwind libicu
最终还有下面关键一步我履行后布置仍会有提示某包找不到的问题,
sudo yum install dotnet-runtime-2.0.6
在github上看到这样一段话:
Linux On supported Linux systems, register the Microsoft Product feed as described above and install dotnet-hosting-2.0.6 using your package manager. This will also install the .NET Core Runtime and other required packages.
后来测试了一下不装置dotnet-runtime-2.0.6而是装置dotnet-hosting-2.0.6成功。
sudo yum install dotnet-hosting-2.0.6
三、Windows上用VS发布项目
右键项目选择发布,默许情况下是FDD(依赖结构布置),发布生成的内容不包含依赖的结构内容,将依赖上文装置的runtime。
在CentOS上创立个文件夹, 通过FileZila将发布的文件上传到该文件夹。
参考创立目录指令: mkdir -p /var/aspnetcore/hellomvc
我有话说: