.Net Core WebApi在Linux服务器上部署
首先在阿里云上租好服务器,我的服务器是linux(CentOS)。
下载Xshell,用来连接服务器,下载xftp,用来在windows和linux之间传输文件。
在visual studio上发布项目到本地文件夹,再用xftp将文件拷贝到服务器上
跟着教程将 Microsoft 包签名密钥添加到受信任密钥列表,并添加 Microsoft 包存储库。
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
安装SDK:
sudo yum install -y dotnet-sdk-5.0
安装netcore运行时:
sudo yum install -y aspnetcore-runtime-5.0
此时输入运行指令
dotnet WebApplication2.dll
报错:
大概意思说我的程序是8.0版本,但我在服务器上下载的框架式5.0版本,不匹配。
于是我尝试下载8.0版本
sudo yum install dotnet-sdk-8.0
报错:
既然是直接下载出错,我就找其他方式下载,跟着官网试图用snap安装运行时和sdk,链接如下
在 Linux 上通过 Snap 安装 .NET 运行时 - .NET | Microsoft Learn
搞了一通还是不行,也不知道原因,觉得可能是已安装的5.0影响了8.0的安装,就用以下语句卸载了5.0版本。
yum remove dotnet-sdk-5.0
yum remove aspnetcore-runtime-5.0
然鹅此时再安装8.0还是不行。
然后我在官网上看见了这个:
就是说在CentOS上面只能安装.NET的6.0版本(但为什么我刚刚安装5.0也没有问题......)
于是我就重建了一个.NET 6.0的版本,发布、拷贝到服务器,在服务器安装6.0版本的sdk和运行时,终于成功了(大哭)
但是教程上说这样只是在服务器上跑,如果要外部主机能够访问需要修改命令为:
dotnet WebApplication3.dll --urls="http://*:5555"
试了几次发现信息没有变化,监听的地址还是localhost,在浏览器上也访问不了,后来终于有一次成功了(根据另一个教程加上了environment参数,不知道是不是这个原因)
参考教程:
https://www.cnblogs.com/LYF1997/p/11791591.html
https://www.cnblogs.com/huyong/p/14291812.html
.NetCore WebApi Swagger简单配置 + 部署到Linux系统(教程+坑总结)_linux中netcore显示swagger-CSDN博客
.Net Core WebApi在Windows服务器上部署
后来为了配置MySQL数据库,我对Linux系统不熟悉,就又把服务器操作系统换成了Windows。具体配置过程不太记得了,比较重要的是需要在后端代码中的appsettings.json加上一句:
"urls": "http://*:5555"
还要把program.cs中的这一句注释掉
app.UseHttpsRedirection();
在服务器上的控制台cd到项目dll所在位置
然后输入以下代码
dotnet WebApplication1.dll #WebAppllication1是刚刚箭头所指的文件名称
出现以下结果就算成功啦!
总结
配置服务器之路艰辛漫长,走了很多弯路,原理和细节我依然没搞懂,所以文章写的页比较乱,下次如果有需要再次配置,可能会重新编辑此篇文章。