在Linux上运行ASP.NET(特指跨平台的ASP.NET Core)已成为现代开发的主流选择,以下是详细操作指南,基于官方文档和行业最佳实践:
核心原理
ASP.NET Core是微软开源的跨平台框架,通过内置的Kestrel Web服务器运行,Linux部署通常采用 Kestrel + 反向代理(如Nginx)架构:
- Kestrel:处理.NET应用请求(轻量级,但需代理保护)
- Nginx:提供静态文件、SSL卸载和攻击防护
环境准备(以Ubuntu 22.04为例)
安装.NET SDK
sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb # 安装SDK sudo apt update sudo apt install -y dotnet-sdk-8.0 # 根据版本调整
验证安装
dotnet --version # 输出版本号即成功
创建并运行ASP.NET Core应用
新建项目
dotnet new webapp -n MyLinuxApp cd MyLinuxApp
本地测试运行
dotnet run # 访问 http://localhost:5000
生产环境部署
发布应用
dotnet publish -c Release -o ./publish
安装Nginx
sudo apt install nginx
配置反向代理
编辑Nginx配置:
sudo nano /etc/nginx/sites-available/myapp ```替换端口和域名): ```nginx server { listen 80; server_name your-domain.com; location / { proxy_pass http://localhost: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; } }
启用配置:
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl restart nginx
启动应用
cd /path/to/publish dotnet MyLinuxApp.dll # 应用将在后台运行
使用systemd守护进程(推荐)
创建服务文件
sudo nano /etc/systemd/system/myapp.service ```示例: ```ini [Unit] Description=ASP.NET Core Web App [Service] WorkingDirectory=/var/www/myapp ExecStart=/usr/bin/dotnet /var/www/myapp/MyLinuxApp.dll Restart=always RestartSec=10 SyslogIdentifier=dotnet-myapp User=www-data Environment=ASPNETCORE_ENVIRONMENT=Production [Install] WantedBy=multi-user.target
启动服务
sudo systemctl enable myapp.service sudo systemctl start myapp.service sudo systemctl status myapp.service # 检查状态
常见问题解决
-
端口占用
修改Program.cs
中的监听端口:app.Urls.Add("http://localhost:6000");
-
文件权限错误
确保应用目录权限正确:sudo chown -R www-data:www-data /var/www/myapp
-
防火墙拦截
开放Nginx端口:sudo ufw allow 'Nginx Full'
安全强化建议
- 使用Let’s Encrypt配置HTTPS
- 定期更新.NET运行时:
sudo apt upgrade dotnet-runtime-8.0
- 禁用不必要的中间件(如开发模式中间件)
- 通过
dotnet watch
监控文件变化(仅开发环境)
引用说明基于微软官方文档和Linux部署实践:
- 微软官方.NET Linux安装指南
- ASP.NET Core生产环境部署文档
- Nginx反向代理配置规范
- systemd服务管理手册
重要提示:本文适用于ASP.NET Core 3.1及以上版本,传统ASP.NET(非Core)无法在Linux原生运行,需通过Mono兼容层(已不推荐)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/10123.html