Rocky Linux 9.6 作为 RHEL 9 的兼容发行版,.NET 10 已经直接包含在系统默认的 AppStream 仓库中,无需额外添加 Microsoft 源,一条 dnf 命令即可安装。
一、安装 .NET 10
场景 A:服务器仅运行已编译的 ASP.NET Core MVC 10 项目
安装 ASP.NET Core Runtime 即可(包含 .NET Runtime + ASP.NET Core Runtime,体积最小):
sudo dnf update -y
sudo dnf install -y aspnetcore-runtime-10.0
场景 B:服务器上需要编译/发布项目
安装完整 SDK:
sudo dnf update -y
sudo dnf install -y dotnet-sdk-10.0
SDK 已包含 Runtime,无需重复安装。
二、验证安装
dotnet --version # 查看 SDK 版本
dotnet --list-runtimes # 查看已安装 Runtime
dotnet --info # 查看完整信息
正常应输出类似:
10.0.105 [/usr/lib64/dotnet/sdk]
Microsoft.AspNetCore.App 10.0.5 [/usr/lib64/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 10.0.5 [/usr/lib64/dotnet/shared/Microsoft.NETCore.App]
三、部署 ASP.NET Core MVC 10 项目
1. 发布项目(在开发机或本机)
dotnet publish -c Release -o /var/www/myapp
2. 上传到 Rocky Linux 9.6
将 /var/www/myapp 目录(或你指定的发布目录)上传到服务器,例如 /opt/myapp。
3. 运行测试
cd /opt/myapp
dotnet MyApp.dll --urls "http://0.0.0.0:5000"
四、生产环境配置(systemd + 防火墙)
1. 创建专用用户
sudo useradd -r -s /sbin/nologin dotnet
sudo chown -R dotnet:dotnet /opt/myapp
2. 创建 systemd 服务
sudo vi /etc/systemd/system/myapp.service
写入:
[Unit]
Description=ASP.NET Core MVC 10 App
After=network.target
[Service]
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/dotnet /opt/myapp/MyApp.dll --urls "http://0.0.0.0:5000"
Restart=always
RestartSec=10
User=dotnet
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
3. 启动并启用开机自启
sudo systemctl daemon-reload
sudo systemctl enable --now myapp
sudo systemctl status myapp
4. 开放防火墙端口
sudo firewall-cmd --add-port=5000/tcp --permanent
sudo firewall-cmd --reload
五、Nginx 反向代理(推荐)
如果需要用域名/HTTPS 访问,前面加一层 Nginx:
sudo dnf install -y nginx
sudo systemctl enable --now nginx
编辑配置 /etc/nginx/conf.d/myapp.conf:
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://127.0.0.1:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
sudo nginx -t
sudo systemctl reload nginx
六、常见问题
| 问题 | 解决 |
|---|---|
dotnet: command not found |
检查/usr/bin/dotnet 软链接是否存在:sudo ln -s /usr/lib64/dotnet/dotnet /usr/bin/dotnet |
| 缺少 ICU 库报错 | sudo dnf install -y libicu |
| 不需要全球化支持 | 设置环境变量export DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1 |
| 多版本共存 | sudo dnf install dotnet-sdk-9.0 可并行安装,用 global.json 锁定版本 |
如果你已经在 Windows 上编译好了项目,只需要在 Rocky Linux 9.6 上执行 步骤一(装 Runtime)+ 步骤三(上传发布文件)+ 步骤四(配 systemd) 即可跑起来。