ASP.NET Core : 九.从Windows发布到CentOS的跨平台部署(上)

简介: 本文聊一下如何在Windows上用VS开发并发布, 然后将其部署到CentOS上。对于我们一些常在Windows上逛的来说,CentOS用起来还真有些麻烦。MSDN官方有篇文章大概讲了一下(链接),按照MSDN上面的例子用vs创建个hellomvc项目,还是踩了好多坑,将整个过程和遇到的坑说一下,希望对有需要的朋友有所帮助。

本文主要内容:


 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)的选择功能


 示意图:

4.png

最近在阿里云上弄了个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    


目录
相关文章
|
1月前
|
开发框架 安全 .NET
Microsoft .NET Framework 3.5、4.5.2、4.8.1,适用于 Windows 版本的 .NET,Microsoft C Runtime等下载
.NET Framework是Windows平台的开发框架,包含CLR和FCL,支持多种语言开发桌面、Web应用。常用版本有3.5、4.5.2、4.8.1,系统可同时安装多个版本,确保软件兼容运行。
548 0
Microsoft .NET Framework 3.5、4.5.2、4.8.1,适用于 Windows 版本的 .NET,Microsoft C Runtime等下载
|
7月前
|
人工智能 IDE 开发工具
JetBrains Rider 2025.1 发布 - 快速且强大的跨平台 .NET IDE
JetBrains Rider 2025.1 (macOS, Linux, Windows) - 快速且强大的跨平台 .NET IDE
469 29
JetBrains Rider 2025.1 发布 - 快速且强大的跨平台 .NET IDE
|
8月前
|
JSON 数据格式
【Azure Fabric Service】演示使用PowerShell命令部署SF应用程序(.NET)
本文详细介绍了在中国区微软云Azure上使用Service Fabrics服务时,通过PowerShell命令发布.NET应用的全过程。由于Visual Studio 2022无法直接发布应用,需借助PowerShell脚本完成部署。文章分三步讲解:首先在Visual Studio 2022中打包应用部署包,其次连接SF集群并上传部署包,最后注册应用类型、创建实例并启动服务。过程中涉及关键参数如服务器证书指纹和服务端证书指纹的获取,并附带图文说明,便于操作。参考官方文档,帮助用户成功部署并运行服务。
287 73
|
6月前
|
Linux 应用服务中间件 nginx
在CentOS上部署Minikube教程
至此,您已成功在CentOS上部署并使用Minikube。您可以自由探索Kubernetes的世界,熟练配置和管理Kubernetes集群。
619 20
|
9月前
|
人工智能
D1net阅闻 | 奥特曼:把期望降低100倍,OpenAI下月不会部署AGI
D1net阅闻 | 奥特曼:把期望降低100倍,OpenAI下月不会部署AGI
|
10月前
|
C# Android开发 iOS开发
2025年全面的.NET跨平台应用框架推荐
2025年全面的.NET跨平台应用框架推荐
454 23
|
11月前
|
区块链 C# Windows
PasteEx:一款.NET开源的Windows快捷粘贴神器
PasteEx:一款.NET开源的Windows快捷粘贴神器
173 17
|
9月前
|
人工智能 自动驾驶 机器人
D1net阅闻|国务院国资委部署深化中央企业“AI+”专项行动
D1net阅闻|国务院国资委部署深化中央企业“AI+”专项行动
|
11月前
|
Web App开发 C# Windows
一款.NET开源的Windows资源管理器标签页工具
一款.NET开源的Windows资源管理器标签页工具
171 5
|
11月前
|
弹性计算 开发框架 安全
基于云效 Windows 构建环境和 Nuget 制品仓库进行 .Net 应用开发
本文将基于云效 Flow 流水线 Windows 构建环境和云效 Packages Nuget 制品仓库手把手教你如何开发并部署一个 .NET 应用,从环境搭建到实战应用发布的详细教程,帮助你掌握 .NET 开发的核心技能。

热门文章

最新文章

下一篇
oss云网关配置