当前位置: 欣欣网 > 码农

服务器为什么大多用 Linux 而不是 Windows ?

2024-05-22码农

戳下方名片 ,关注并 星标

回复「 1024 」获取 2TB 学习资源!

👉 体系化学习:

特色专栏

/ /

/ /

/ /

/ /

/ /

大家好,我是民工哥!

前几天在知乎看到一个话题很有意思,且很有讨论意义。

服务器为什么大多用 Linux 」,除了 开源 好用 等原因,回答也代表了各种不同人需求和看法,摘取一些分享给大家,也欢迎留言讨论。

来自知乎好友「熊大你又骗俺」的回答

首先在20年前,windows server+iis+asp+access 的方案,还是流行过一段时间的。

简单易用,非常适合一些内容发布频率不高的小企业网站。

国内有个热门的论坛就是用asp+access做的,叫「动网论坛」,安装简便。

我记得好像连ODBC都不用配,直接就能访问了。

后续好像还是这个叫「动网先锋」的公司,又搞出了使用 asp.net 的文章系统,叫」动网新闻」和将源代码封装成 DLL 防止剽窃的「动易」。

当年许多国内虚拟主机会在配置里单独强调」支持动易组件」。而 ASP.NET 的应用成本较高,不如 PHP 受欢迎,PHPWIND 因使用 zend 而快速崛起。

于是乎,那几年出现了一个非常有意思的局面就是:

买 Windows 主机要带」动易组件「的,买 Linux 主机要带 zend 的。

而有段时间,出现了一个非常好笑的现象。

由于当时都是买虚拟主机,根本不能修改服务器的配置参数。尤其是windows server的虚拟主机。

当时可没有什么web.config来给你修改。

而许多主机商,非常不负责。许多就是不知道在哪个IDC那里租了台服务器,也不弄其他的配额啥的,就把硬盘划分成N份,接着开卖。

最多在合同里强调一句:」不允许跑【江湖】游戏之类过于占用资源的程序「。

碰上这种主机商,MIME类型啥是不管的。

而且,这类虚拟主机,就提供一层根目录。web和FTP使用的是同一个根目录。用户想改,还改不了。

再加上当时使用ASP的,新手居多,经验较少。

就会出现:web目录里放着index.asp,index.asp的旁边,放着data.mdb。

结果就一目了然了,客户端访问「http://xxxx.xxx/data.mdb」,就能把数据库下载下来了。

接着打开data.mdb,转到user表

哎嗨,密码是明文的呦!

后来,新手使用asp第一课:如果虚拟主机没有上一级目录的权限,那就把data.mdb改扩展名,变成data.asp!!!!

而过了一两年之后,国外的linux虚拟主机,基本上都更新换代支持ZEND了。

而WINDOWS主机? 给人的印象就是 :ASP效率低下,不安全。MDB容易炸(我真炸过,修复之后近期数据都丢了)。

来自知乎好友「Sental Cristar」的回答

这个事, IIS (微软的Web Server)至少要负一大半责任。

首先,大家不要去按照现在 Linux 情况跟 Windows比。

很多东西在发展过程中就是一种生态强弱的比较。在那个关键的时间点,你的生态强,大家都用你,那么你就统治了行业。

然后回头再看,当时很重要的那个业务或者特性,后面已经不存在了。但统治地位建立了,就很难逆转了。

在大概2000年的时候,Windows的WebServer其实还是有一定优势的。

自带FTP功能。

ASP动态网页不需要额外部署软件。(当时ASP还是挺好用的一种开发语言)有图形界面来做配置,适合小白管理员。

但很快, Windows 太封闭的问题 ,就开始有很大影响了。

IIS 在 Apache+Nginx+Lighttpd 面前,被打得毫无还手之力。首先是对php、ruby等越来越多的开发语言,支持太差。

IIS过度绑定 asp.net,其他开发语言在上边部署经常出现各种各样的幺蛾子。2005年前后那会,正是各种开发语言井喷的时间,大家对 Apache 的兼容性,都要好于对IIS的兼容性。IIS搞那一大堆权限、运行生命周期啥的,让很多语言的runtime难以适从。

其次是, IIS的性能被nginx和lighttpd吊打了

这两个基于poll和epoll的项目,因为项目特别轻量,所以性能上往往能够拿出IIS几倍的并发能力来。

加上IIS把自己的配置搞得太复杂、太难以调试了,导致很多用户根本不会做性能优化。

这两个原因,让Web Server业务基本就被 Linux 抢走了。

来自知乎好友「Kero」的回答

前一阵开帕鲁服,教程都是 winserver 的,遂在租的云服务器装win server,结果帕鲁的服务端比较难绷,还需要vc runtime和dx runtime,网上找半天安装包都没合适的

最后觉得好麻烦,换成了Ubuntu,apt install装好steamcmd和服务端,再运行server.sh就行了。。。

说到jdk忘记一个重要原因,能跑win server是因为为了解决帕鲁服内存泄露选了4C8G的配置。

而之前开用来4-5个人玩的MC服普遍都是2C2G/2C4G,2G跑Win属于几乎不可能,而之前开用来4-5个人玩的MC服普遍都是2C2G/2C4G,2G跑Win属于几乎不可能,4G就算能跑但要被ram系统吃掉一大部分未免太亏了,这种轻量场景更适用Linux。

来自知乎好友「hyu jj」的回答

Windows 按 CPU 核心 收费 ,一台服务器正版授权要10万元左右,Linux 免费

来自知乎好友「Sven」的回答

回答的时候选择换一个方向:为什么不用 Linux?

作为一个专业的基础设施开发人员和半专业的运维,我看到的是 Linux 相比于 Windows 的一系列优势:

生态 。这个不用说了,生态是决定技术栈发展的核心:大家都用,自然就受欢迎。微软在服务器端生态上起步晚了,当.net core出现的时候java golang node已经差不多在服务器端三分天下了。

轻量 。这里说的轻量不是一般爱好者眼中ubuntu或者centos那种的轻量,而是指诸如alpine这样的轻量级Linux,这意味着可以用极小的空间来完成容器化的工作,使得运维部署变得更加灵活高效。

容器 。上面提到了容器,实际上容器本身也是 Linux 的一个巨大优势,windows和osx因为诸多限制使得容器化始终无法从最底层直接起步,而当下的服务器端架构/运维上,容器化是一个无法规避的需求,因此能够完美支持容器化的 Linux 就成了更好的选择。

来自知乎好友「水雷」的回答

补充一个当时微软企业自身的问题: 微软和开源的对立

早期的时候,比尔盖茨就有一封特别有名的信:致爱好者的公开信 。信里面他表达了业余爱好者使用盗版的憎恨。同时有一句

有谁会在没有任何报酬的情况下来做这些专业的工作?什么样的爱好者可以为他的产品投入三人年(man-year)的开发时间,并且发现所有的错误、编写文档以及无偿发布这个产品?

微软主要营收靠的 Windows 和 Office。这部分业务主要就是开发操作系统/软件卖给用户,收取授权和维护费用。在99年达到了第一次巅峰。当时世界上市值最高的公司。

上面提到的业余爱好者,很大一部分是高校和学术界。这部分人接触计算机很早,同时也有使用计算机工作的需求。在开源的历史上,你可以看到很多高校的名字。

在第一阶段较量的时候,微软无疑是胜利者,聚集了一大批有实力的的程序员,高效的开发(毕竟就他一家)了个人桌面电脑所需要的基本操作系统、软件。并且卖到了全世界。

但是到了 Linux,其实已经是第二阶段了。这里由于微软自己上一个阶段的成功经验,整个微软都会认为给软件付费是天经地义的。你用了我的代码,就要掏钱。

但是开源发展壮大了。这种最初只是分享一下自己的程序,借助互联网快速传播,形成了新的生态乃至产业。

面对新的开源模式,当时微软和社区都是互相敌视的。毕竟这是根本理念的不同。

后来的事情我们都清楚了,微软现在也拥抱了开源。

来自知乎好友「没有人」的回答

感觉太多人犯了一个错误,即为结果找原因。

如果你盯着张学良的高寿去学他吸烟喝酒玩女人,犯的就是这种错误。

系统发展的过程中,马太效应是存在的,所以这个问题严格来说应该被界定清楚,是"现在的服务器为什么用Linux"还是"为什么现在的服务器用Linux(为什么历史选择了Linux)。

前者的答案很明显,也很多人说了,方案成熟,工具多,维护方便,等等等等。

后者的答案其实很多人也没说错, 就是为了省钱 ,但对手不是windows,而是unix。linux 91年才被写出来,还只是个内核,但是它上面跑的软件等全与unix兼容,操作命令也是一样的,可谓无缝转换,又不收费,用的人就多。

windows在服务器领域当年面对的困难与今天 Linux 在桌面类似。可以作为服务器的nt 93年才出来,比较流行的版本已经是2000了,这个时候大家关注重点在免费的Linux上,生态已经有了。打个比方,你学了rh,毕业就能做运维,你学windows,学完了上哪找win服务器给你维护?

链接:zhihu.com/question/419913304/answer/3344495019

公众号读者专属技术群

构建高质量的技术交流社群,欢迎从事后端开发、运维技术进群( 备注岗位,已在技术交流群的请勿重复添加微信好友 )。主要以技术交流、内推、行业探讨为主,请文明发言。 广告人士勿入,切勿轻信私聊,防止被骗。

扫码加我好友,拉你进群

PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下 在看 ,加个 星标 ,这样每次新文章推送才会第一时间出现在你的订阅列表里。 在看 支持我们吧!