最近在知乎看到个问题,“服务器为什么大多用 Linux”,除了开源、好用等原因,回答也代表了各种不同人需求和看法,摘取一些分享给大家,也欢迎留言讨论。
1、来自知乎好友“熊大你又骗俺”的回答:
首先在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容易炸(我真炸过,修复之后近期数据都丢了)。
……
2、来自知乎好友“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 抢走了。
……
3、来自知乎好友“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。
4、来自知乎好友“hyu jj”的回答:
Windows 按 CPU 核心收费,一台服务器正版授权要10万元左右,Linux 免费。
5、来自知乎好友“Sven”的回答:
回答的时候选择换一个方向:为什么不用 Linux?
作为一个专业的基础设施开发人员和半专业的运维,我看到的是 Linux 相比于 Windows 的一系列优势:
生态。这个不用说了,生态是决定技术栈发展的核心:大家都用,自然就受欢迎。微软在服务器端生态上起步晚了,当.net core出现的时候java golang node已经差不多在服务器端三分天下了。
轻量。这里说的轻量不是一般爱好者眼中ubuntu或者centos那种的轻量,而是指诸如alpine这样的轻量级Linux,这意味着可以用极小的空间来完成容器化的工作,使得运维部署变得更加灵活高效。
容器。上面提到了容器,实际上容器本身也是 Linux 的一个巨大优势,windows和osx因为诸多限制使得容器化始终无法从最底层直接起步,而当下的服务器端架构/运维上,容器化是一个无法规避的需求,因此能够完美支持容器化的 Linux 就成了更好的选择。
6、来自知乎好友“水雷”的回答:
补充一个当时微软企业自身的问题:微软和开源的对立。
早期的时候,比尔盖茨就有一封特别有名的信:致爱好者的公开信 。信里面他表达了业余爱好者使用盗版的憎恨。同时有一句
有谁会在没有任何报酬的情况下来做这些专业的工作?什么样的爱好者可以为他的产品投入三人年(man-year)的开发时间,并且发现所有的错误、编写文档以及无偿发布这个产品?
微软主要营收靠的 Windows 和 Office。这部分业务主要就是开发操作系统/软件卖给用户,收取授权和维护费用。在99年达到了第一次巅峰。当时世界上市值最高的公司。
上面提到的业余爱好者,很大一部分是高校和学术界。这部分人接触计算机很早,同时也有使用计算机工作的需求。在开源的历史上,你可以看到很多高校的名字。
在第一阶段较量的时候,微软无疑是胜利者,聚集了一大批有实力的的程序员,高效的开发(毕竟就他一家)了个人桌面电脑所需要的基本操作系统、软件。并且卖到了全世界。
但是到了 Linux,其实已经是第二阶段了。这里由于微软自己上一个阶段的成功经验,整个微软都会认为给软件付费是天经地义的。你用了我的代码,就要掏钱。
但是开源发展壮大了。这种最初只是分享一下自己的程序,借助互联网快速传播,形成了新的生态乃至产业。
面对新的开源模式,当时微软和社区都是互相敌视的。毕竟这是根本理念的不同。
后来的事情我们都清楚了。微软现在也拥抱了开源。
7、来自知乎好友“没有人”的回答:
感觉太多人犯了一个错误,即为结果找原因。
如果你盯着张学良的高寿去学他吸烟喝酒玩女人,犯的就是这种错误。
系统发展的过程中,马太效应是存在的,所以这个问题严格来说应该被界定清楚,是"现在的服务器为什么用Linux"还是"为什么现在的服务器用Linux(为什么历史选择了Linux)。
前者的答案很明显,也很多人说了,方案成熟,工具多,维护方便,等等等等。
后者的答案其实很多人也没说错,就是为了省钱,但对手不是windows,而是unix。linux 91年才被写出来,还只是个内核,但是它上面跑的软件等全与unix兼容,操作命令也是一样的,可谓无缝转换,又不收费,用的人就多。
windows在服务器领域当年面对的困难与今天 Linux 在桌面类似。可以作为服务器的nt 93年才出来,比较流行的版本已经是2000了,这个时候大家关注重点在免费的Linux上,生态已经有了。打个比方,你学了rh,毕业就能做运维,你学windows,学完了上哪找win服务器给你维护?
链接:https://www.zhihu.com/question/419913304/answer/3344495019
链接:https://www.zhihu.com/question/419913304/answer/3346851210
链接:https://www.zhihu.com/question/419913304/answer/1510862492