前言
最近在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。直接从项目引用包以选择不同版本。
通过查看微软官方文档: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"
Nginx设置反代访问
现在我们还不能直接访问到我们新部署项目,需要使用Nginx设置反向代理,将特定的端口代理到http://localhost:5000
,这一步可以通过宝塔面板来完成,步骤如下:
浏览器正式可访问项目,此处可能需要重启一下。
使用 Supervisor 守护进程
问题
问题1
问题2
问题3
问题4
总结
其实就是一篇流水账,记录了发布的过程和遇到的问题及解决办法。之前服务器一直是使用的WinServer,因为熟悉。勇于尝试并去解决问题,慢慢进步~
大学里也学过Linux,受不了。但是真的去使用了,去探索了,嗯,真香~