在Linux环境下部署和运行.NET应用,主要依赖于.NET SDK或.NET Runtime的安装,并结合发布、配置和进程管理等步骤。以下是具体操作流程,适用于主流Linux发行版(如Ubuntu、CentOS等)。
安装.NET SDK或Runtime
若需开发或编译项目,安装.NET SDK;若仅运行已发布的应用,安装.NET Runtime即可。
以Ubuntu为例,添加微软包源: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
rm packages-microsoft-prod.deb
sudo apt update
sudo apt install -y apt-transport-https
sudo apt update
sudo apt install -y dotnet-sdk-8.0
CentOS/RHEL用户可参考微软官方文档使用dnf或yum安装。
发布.NET应用
在开发机或CI环境中将项目发布为自包含或框架依赖的应用。
进入项目目录,执行发布命令:dotnet publish -c Release -r linux-x64 --self-contained false
上述命令生成框架依赖的发布包。若希望不依赖目标环境安装Runtime,设
--self-contained true。
发布后的文件位于
bin/Release/net8.0/linux-x64/publish,将其复制到Linux服务器对应目录,例如
/var/www/myapp。
运行.NET应用
进入发布目录,直接运行程序。
cd /var/www/myapp
dotnet MyApp.dll
应用默认监听
http://localhost:5000。可通过环境变量修改:
export ASPNETCORE_URLS="http://0.0.0.0:80"
这样可在外部通过IP访问服务。
使用守护进程管理应用
推荐使用systemd确保应用后台运行并在异常退出时自动重启。
创建服务配置文件:sudo nano /etc/systemd/system/myapp.service
写入以下内容:
[Unit] Description=My .NET Web Application After=network.target [Service] WorkingDirectory=/var/www/myapp ExecStart=/usr/bin/dotnet MyApp.dll Restart=always RestartSec=10 Environment=ASPNETCORE_ENVIRONMENT=Production [Install] WantedBy=multi-user.target启用并启动服务:
sudo systemctl daemon-reexec
sudo systemctl enable myapp
sudo systemctl start myapp
查看运行状态:sudo systemctl status myapp
反向代理配置(可选)
若使用Nginx作为前端代理,安装并配置:
sudo apt install nginx
编辑站点配置
/etc/nginx/sites-available/default,添加:
location / {
proxy_pass http://127.0.0.1:5000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
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。
基本上就这些。只要环境装好,发布清晰,配合systemd和Nginx,.NET应用在Linux上运行稳定可靠。
