关于ASP.NET8.0的环境部署,常见的有三种方式:
1、容器化部署,自带运行时
2、在线安装运行时环境
3、离线安装运行时环境
容器化目前对大型微服务项目,或者是敏捷开发等模式,有十分重要的,且具有不可替代的作用。但是平时我们遇到的大多数项目体量达不到,容器化就显得性价比不那么高,无论是学习曲线还是运维上,都需要一个技能比较高的团队来控制。
所以,这两年对单体部署的呼声,也就越来越高,无论是.NET还是JAVA,直接发布部署,快速上线,最多再配上一个轻量级的网关和服务注册中心,已经完全足够。
今天主要讨论的就是关于单体部署的另一种方式——离线部署,就是在不联网的情况下,在Linux系统中安装运行时,运行项目,本文以CentOS举例。
PS:不过CentOS已经于2024年6月30日停止全面停服了,大家可以慢慢的选择其他的Linux系统了,国产的一些,或者Debian都是不错的选择。
打开官网地址,下载Linux的二进制文件。
https://dotnet.microsoft.com/en-us/download/dotnet/8.0
1、拷贝安装包到指定文件夹
2、解压tar zxvf aspnetcore-runtime-8.0.8-linux-x64.tar.gz
3、切换到指定目录,执行dotnet
这个时候,发现报错了,我用的是CentOS7.6的腾讯云的服务器:
./dotnet: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by ./dotnet)
这个意思是.net8.0运行时的安装,需要20和21版本的libstdc++版本,巧的是CentOS官方已经不更新了。
微软官方是这么说的
https://github.com/dotnet/sdk/issues/31893
这个东西是一个很重要的文件,在Linux系统中,发挥着很大的作用,是很多软件的底层依赖:
libstdc++.so 是 C++ 程序运行所必需的标准库文件,提供了核心的 C++ 标准功能。它是由 GCC 提供的,所有依赖 GNU C++ 标准库的程序在运行时都需要这个库文件。
1、先看看系统中,版本最高到了多少了,执行命令:
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
可以看到目前最多是到了3.4.19
2、这个文件基本都是在/usr/lib64文件夹中
3、那既然版本不高,就需要升级版本,升级有很多种,有编译源代码的,有从网上下载别人文件的,覆盖就行,当然,覆盖前,一定要做好备份!!!
我这里有一个可以用的,直接下载吧,也是从网上找的:
https://pan.baidu.com/s/1XKkoh3npIE-UMmM3YTfqxA?pwd=8r74
提取码: 8r74
当然还是尽量从官网下载,如果公司有要求的话,一些靠谱的网站有
http://www.rpmfind.net/
https://pkgs.org/
也可以直接搜索服务器里的其他地方,比如docker挂载的镜像容器依赖里是有的。
4、直接覆盖原文件,然后执行上边的命令,就可以看到变化了
5、运行dotnet命令,嘎嘎好使了