在 Linux 环境下运行 .NET 8.0 项目,.NET 已支持跨平台运行,以下是完整的步骤:
1. 安装 .NET 8.0 SDK 或运行时
首先需要在 Linux 系统中安装 .NET 8.0 SDK 或运行时。
1.1 添加 Microsoft 包管理源
运行以下命令添加 Microsoft 包管理源并安装必要的依赖项:
bash
sudo aptget update && sudo aptget install y wget apttransporthttps softwarepropertiescommon
wget https://packages.microsoft.com/config/ubuntu/$(lsb_release rs)/packagesmicrosoftprod.deb O packagesmicrosoftprod.deb
sudo dpkg i packagesmicrosoftprod.deb
sudo aptget update
> 注:根据你的 Linux 发行版,修改上述命令,例如 CentOS、Fedora 等需要其他配置源。
1.2 安装 .NET SDK 或运行时
安装完整的 SDK(适合开发):
bash
sudo aptget install y dotnetsdk8.0
如果只需要运行应用程序,可以安装运行时:
bash
sudo aptget install y dotnetruntime8.0
2. 验证安装
确保 .NET 安装正确:
bash
dotnet version
输出类似以下内容即表示安装成功:
8.0.100
3. 部署 .NET 8.0 项目到 Linux
3.1 在 Windows/开发环境构建项目
1. 确保项目的 csproj 文件的 TargetFramework 已设置为 .NET 8.0:
xml
<TargetFramework>net8.0</TargetFramework>
2. 使用以下命令在 Windows 或开发环境中发布项目:
bash
dotnet publish c Release r linuxx64 selfcontained=false o ./publish
c Release:使用 Release 配置。
r linuxx64:指定目标平台为 Linux x64。
selfcontained=false:依赖 Linux 上的 .NET 运行时(推荐)。
o ./publish:将输出文件存储在 publish 目录中。
> 如果你希望应用程序在目标环境上无需额外安装 .NET 运行时,可以设置 selfcontained=true。
3.2 将文件复制到 Linux
使用 scp 或其他工具将发布目录复制到 Linux:
bash
scp r ./publish username@linuxserver:/path/to/project
4. 在 Linux 上运行项目
1. 使用 SSH 登录到目标 Linux 服务器。
2. 导航到项目的 publish 目录:
bash
cd /path/to/project
3. 运行项目:
bash
dotnet YourApp.dll
5. 使用服务托管应用程序(可选)
如果你的应用需要长时间运行,可以通过 systemd 服务来管理:
5.1 创建服务文件
创建一个服务文件,例如 /etc/systemd/system/yourapp.service:
ini
[Unit]
Description=YourApp Service
After=network.target
[Service]
WorkingDirectory=/path/to/project
ExecStart=/usr/bin/dotnet /path/to/project/YourApp.dll
Restart=always
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=yourapp
User=yourusername
Environment=ASPNETCORE_ENVIRONMENT=Production
[Install]
WantedBy=multiuser.target
5.2 启动服务
1. 重新加载 systemd 配置:
bash
sudo systemctl daemonreload
2. 启动服务:
bash
sudo systemctl start yourapp
3. 设置开机启动:
bash
sudo systemctl enable yourapp
6. 使用 Docker 部署(可选)
如果更习惯容器化运行应用,可以使用 Docker:
6.1 创建 Dockerfile
在项目根目录创建 Dockerfile:
dockerfile
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime
WORKDIR /app
COPY ./publish .
ENTRYPOINT ["dotnet", "YourApp.dll"]
6.2 构建和运行容器
1. 构建镜像:
bash
docker build t yourapp:latest .
2. 运行容器:
bash
docker run d p 5000:80 yourapp:latest