Skip to content

.Core 发布 Linux

约 608 字大约 2 分钟

core

2019-11-14

包安装

  • 1.导入rpm源 sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
  • 2.更新包 yum -y update
  • 3.安装与查看版本 yum -y install dotnet-sdk-3.0dotnet --version

手动下载安装

可能包安装的方式会找不到安装包之类的问题。。 还可以才用下载包自己解压安装 [https://dotnet.microsoft.com/download/thank-you/dotnet-sdk-3.0.100-rc1-linux-x64-binaries]
- 1.下载
	`wget https://download.visualstudio.microsoft.com/download/pr/b81a2bd3-a8a4-4c7e-bd69-030f412ff7b4/3fc5f2c0481313daf2e18c348362ff3f/dotnet-sdk-3.0.100-rc1-014190-linux-x64.tar.gz`
- 2.创建文件夹,解压
	`mkdir -p /usr/dotnet/dotnet-3.0`  
	`sudo tar zxf dotnet-sdk-3.0.100-rc1-014190-linux-x64.tar.gz -C /usr/dotnet/dotnet-3.0`
- 3.加入环境变量
	`sudo ln -s /usr/dotnet/dotnet-2.1/dotnet /usr/local/bin`
- 4. 查看是否安装成功 看下dotnet版本
	`dotnet --version`
	如果-bash: /usr/bin/dotnet: cannot execute binary file 说明架构不对 你系统架构无法运行这个版本的比如32位装了64位什么的

Ubuntu安装sdk

# 1.添加microsoft软件源
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo rm packages-microsoft-prod.deb

# 2.安装
apt isntall -y dotnet-sdk-8.0

编译

dotnet restore *.sln
dotnet build
dotnet run
dotnet publish -c Release -o ./output

发布

  • 发布命令

net8.0 发布到指定文件夹,并删除现有文件,部署模式为框架依赖,目标框架8.0 目标运行时linux-x64

```bash
dotnet publish -c Release -r linux-x64 --self-contained false -o /path/to/destination/folder
  • -c Release:指定发布配置为Release。

  • -r linux-x64:指定目标运行时为linux-x64

  • --self-contained false:指定为框架依赖模式(FDD)。

  • -o /path/to/destination/folder:指定输出目录。

  • 发布文件

    • bin\Release\netcoreapp2.2\publish发布路径,拷贝发布文件到到服务器 可以使用Xftp上传到Linux服务器
    • 运行
  dotnet 你的项目dll
Hosting environment: Production
Content root path: /home/CoreRelease/PCloud
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.
//提示这个就说明发布成功了
  • 程序服务化(不会一直在前台跑着命令,服务持久化)
  vi /etc/systemd/system/shadowsocks.service
[Unit]
Description=PCloud service
[Service]
WorkingDirectory=/home/CoreRelease/PCloud #不加会找不到wwwroot的静态资源
ExecStart=/usr/bin/dotnet -c /home/CoreRelease/PCloud/PCloud.Web.dll
[Install]
WantedBy=default.target
  • 启动服务
  systemctl daemon-reload  #重新加载该服务 用于修改配置文件后
  systemctl start PCloud  #启动服务
  systemctl status PCloud  #查看状态 active就是正常的

异常

wwwroot文件无法访问404

经排查 原因是因为项目被服务化,通过服务的方式启动就会找不到wwwroot的路径

需要在服务文件的service中加入WorkingDirectory=‘项目目录’