前言

最近在V站上看到一个外卖推广的小程序,意思大概是类似淘宝联盟那种,别人走自己的链接后,自己可以抽取大概4%-6%的提成。觉得还蛮有意思的,一开始开源的是静态页面写死的,所以我这边用.Net Core写了个简单的后台。

左边是无后台的,右边红色框是后台配置的。当然功能是很简单的,主要是记录发布到Ubuntu18.4的时候遇到的问题与解决办法。

安装宝塔

这里节省时间直接使用宝塔面板了,这个真的是太方便了,哈哈。安装也非常简单。

因为我使用的是Ubuntu,安装脚本

wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh

其他版本请参考官方文档:https://www.bt.cn/download/linux.html

安装完成后会显示登录地址、用户名、密码信息。登录后浏览器将弹出推荐安装套件,为方便直接一键安装LNMP。

安装.NetCore SDK 3.1

因为我使用的18.04,所以找到对应文档。

使用 APT 进行安装可通过几个命令来完成。 安装 .NET 之前,请运行以下命令,将 Microsoft 包签名密钥添加到受信任密钥列表,并添加包存储库。

打开终端并运行以下命令:

wget https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb

安装 SDK

.NET SDK 使你可以通过 .NET 开发应用。 如果安装 .NET SDK,则无需安装相应的运行时。 若要安装 .NET SDK,请运行以下命令:

sudo apt-get update; \
  sudo apt-get install -y apt-transport-https && \
  sudo apt-get update && \
  sudo apt-get install -y dotnet-sdk-3.1

安装运行时

sudo apt-get update; \
  sudo apt-get install -y apt-transport-https && \
  sudo apt-get update && \
  sudo apt-get install -y aspnetcore-runtime-3.1

作为 ASP.NET Core 运行时的一种替代方法,你可以安装不包含 ASP.NET Core 支持的 .NET 运行时:将上一命令中的 aspnetcore-runtime-5.0 替换为 dotnet-runtime-5.0

sudo apt-get install -y dotnet-runtime-5.0

其实上述就是照搬微软的官方文档,官方文档还是写的很清楚的。

发布.NetCore项目

我一开始目标运行时选择的Linux-64,但是出现了这样的错误`错误 NU1605: 检测到包降级: XXXXXXXXXXXXX 从 4.3.0 降级到 XXXXXXXXXXXXX。直接从项目引用包以选择不同版本。

Linux(宝塔)部署.Net Core完整记录-LMLPHP

通过查看微软官方文档:https://docs.microsoft.com/zh-cn/nuget/reference/errors-and-warnings/nu1605

问题当在 .NET Core 3.0 或更高版本的项目中同时引用时,与 .NET Core 1.0 和1.1 随附的某些包组合不兼容。 问题包通常以或开头 System. Microsoft. ,并具有4.0.0 和4.3.1 之间的版本号。 在这种情况下,降级消息将具有从运行时开始的包。 依赖关系链。

解决方案若要解决此问题,请添加以下 PackageReference:

<PackageReference Include="Microsoft.NETCore.Targets" Version="3.0.0" PrivateAssets="all" />

就是添加引用,但实际上你要保证所有项目的包引用版本是一致的。

另一种方法

宝塔面板发布.Net Core项目,并启动项目

在文件 wwwroot新建项目文件夹,将本地发布文件打包拷贝至服务器解压。

在服务器上终端命令进入部署文件所在目录,然后使用dotnet命令启动服务:

dotnet XXXXXX.Admin.dll --urls "http://localhost:5000"

Linux(宝塔)部署.Net Core完整记录-LMLPHP

Nginx设置反代访问

现在我们还不能直接访问到我们新部署项目,需要使用Nginx设置反向代理,将特定的端口代理到http://localhost:5000,这一步可以通过宝塔面板来完成,步骤如下:

Linux(宝塔)部署.Net Core完整记录-LMLPHP

Linux(宝塔)部署.Net Core完整记录-LMLPHP

浏览器正式可访问项目,此处可能需要重启一下。

使用 Supervisor 守护进程

Linux(宝塔)部署.Net Core完整记录-LMLPHP

问题

问题1

问题2

问题3

问题4

总结

其实就是一篇流水账,记录了发布的过程和遇到的问题及解决办法。之前服务器一直是使用的WinServer,因为熟悉。勇于尝试并去解决问题,慢慢进步~

大学里也学过Linux,受不了。但是真的去使用了,去探索了,嗯,真香~

12-07 21:47