很多老板和刚入行的开发者一听到要在Linux上跑.NET,心里就打鼓,怕配置麻烦,怕兼容出错。这篇东西不整虚的,直接告诉你怎么在Linux环境下把.NET网站跑稳、跑快,避开那些坑。读完你不仅知道怎么部署,还能明白背后的逻辑,以后遇到同类问题自己就能解决。

我干建站这行十五年了,见过太多人因为“Linux不支持.NET”这种过时谣言被劝退。其实早在.NET Core时代,微软就把跨平台这事儿做得相当彻底。现在用Linux做.NET网站,不仅免费开源,性能还往往比Windows好。关键是你得懂点底层逻辑,别只会点鼠标。

先说环境。别一上来就装最新版的.NET 8,虽然它功能多,但稳定性未必最好。对于生产环境,我推荐用.NET 6 LTS或者.NET 8 LTS。版本选对了,后面少踩一半的坑。服务器推荐Ubuntu 22.04或者Debian 12,社区支持好,文档多。装好系统后,先更新一下包管理器,apt update && apt upgrade,这一步别省,能解决很多依赖冲突。

接下来是安装.NET SDK和Runtime。很多新手喜欢用apt直接装,但这往往不是最新版。我更喜欢用微软官方提供的脚本,一行命令搞定。这样能确保你装的是官方维护的版本,而不是发行版仓库里那个可能有点旧的包。装完后,用dotnet --version检查一下,确认没装错。

部署方式上,Nginx反向代理是标配。别直接用Kestrel暴露端口给公网,那是给黑客留后门。Nginx负责处理静态资源、SSL证书、负载均衡,然后把动态请求转发给Kestrel。这个架构在linux用.net做网站中非常经典,既安全又高效。配置Nginx的时候,注意proxy_pass指向localhost的端口,别写错了IP。

数据库连接也是个痛点。很多开发者习惯用SQL Server,觉得在Linux上配置麻烦。其实PostgreSQL或者MySQL在Linux上表现更好,尤其是配合EF Core使用。如果你的项目必须用SQL Server,那得装mssql-tools,配置起来稍微繁琐点,但也不是不能搞定。关键是网络通畅,权限设置正确。

说到性能,别忽视日志。很多网站崩了,是因为日志文件把磁盘写满了。配置logrotate,定期轮转日志,别让它无限增长。另外,开启gzip压缩,Nginx里加几行配置就行,能显著减少传输数据量,提升用户体验。

我有个客户,之前用Windows Server加IIS,每年服务器费用加上维护成本,差不多两万多。后来迁移到Linux加Nginx,费用降到了五千不到,性能还提升了一倍。他们之前遇到的问题是高并发下内存泄漏,后来发现是代码里没释放数据库连接,在Linux环境下更容易排查,因为日志更清晰。

还有个小细节,时区问题。Linux服务器默认可能是UTC时间,而国内用户习惯北京时间。在Docker容器或者系统环境变量里设置好TZ=Asia/Shanghai,不然日志里的时间对不上,排查问题能把你逼疯。

最后,监控不能少。别等用户投诉了才知道网站挂了。装个Prometheus加Grafana,或者简单的用Netdata,看看CPU、内存、网络流量。linux用.net做网站,监控做好了,心里才有底。

总之,在Linux上用.NET做网站,技术门槛早就不是问题了。难的是运维习惯的转变。别怕命令行,多查官方文档,多试错。只要路子对,你会发现Linux服务器真香。别听那些老黄历,自己上手试试,你会发现新世界。