服务器电脑到底长什么样?
刚开始学开发的时候,我对“服务器(Server)”一直有一种模糊的幻想。我想象中的服务器像电影 黑客帝国 里那样,绿色文字像雨一样落下,到处缠着无数电线,还有伴随着厚重机械声闪着蓝光的巨大超级计算机。
但我在工作中第一次见到的服务器机房(IDC),和我的想象完全不同。那些插在机架里的扁平机器,拆开一看,说到底也不过是有 CPU、有 RAM、有 SSD 的“普通电脑”,和我的笔记本其实没什么本质区别。
那么,究竟是什么让我的笔记本被称作“个人 PC”,却让那台外形粗犷的机器被称作“服务器”呢?

提供的一方(Server) vs 索取的一方(Client)
服务器(Server)的定义其实非常简单。它就是那个“提供(Serve)”的一方。相反,客户端(Client)则是那个“请求(Request)”的一方。
换句话说,就算是我那台老旧笔记本,只要 24 小时开机并允许外部连接,它也马上就成了“服务器”。可既然如此,我们为什么不用自己的笔记本当服务器,反而要花钱去租 AWS EC2 这样的云服务器,还在上面安装看起来更难用的 Linux 呢?
为什么偏偏是 Linux?(Windows 不行吗?)
Windows 真的很方便。用鼠标点一点就行,也很直观。可为什么服务器开发者偏偏要坚持使用只有黑色界面的 Linux 呢?
1. GUI 是奢侈品(成本与效率)
Windows 启动后,会出现桌面、图标和鼠标指针。为了维持这套华丽的图形界面(GUI),电脑会不断消耗 CPU 和内存。但服务器不需要显示器。它完全可以扔在地球另一端,只负责“处理数据”。Linux 服务器(CLI)把图形部分全部剥掉,只保留文字。如果 Windows 在 100 份算力里要拿出 30 来绘制界面,那么 Linux 可以把整整 100 都投入到服务本身上。
2. 更新自由(稳定性)
只要用 Windows 用得够久,总会遇到“正在为更新重启”的情况。个人电脑倒还好,去趟洗手间回来就行。可如果一台必须 24 小时运行的服务器自己突然关机呢?那就是灾难。Linux 往往除了内核更新这种大事之外,可以多年不重启地持续运行。
3. 授权成本(钱)
Windows Server 很贵,甚至有时会按照 CPU 核心数收费。相比之下,Linux,比如 Ubuntu、CentOS 等,大多是免费的开源系统。对于要运行成千上万台服务器的企业来说,答案几乎是不言自明的。

那能不能在 Windows 上再装 Linux?(虚拟化的前奏)
这时,初学者开发者,也就是过去的我,会冒出一个看似聪明的想法:“既然 Windows 更方便,那我装个 Windows Server,然后在里面用‘虚拟机(Virtual Machine)’跑 Linux 不就行了?”
当然可以。但这就像“在房子里再搭一顶帐篷住进去”一样。
房东(Windows)要吃饭,租客(Linux)也要吃饭,资源浪费非常严重。所以开发者们继续思考:“能不能不装一整个沉重的操作系统,只隔离并运行我们真正需要的那一点‘环境’?”
在这种思考之下诞生的,就是“Docker”,也就是“容器(Container)”技术。
下一节:没有鼠标的世界
现在我们已经明白,为什么服务器放弃了 Windows,转而选择 Linux。但脑子里理解和亲手操作是两回事。第一次连上 Linux 服务器时,迎接我们的不是 Windows 那个友好的“开始”按钮,而只是“闪烁的光标和黑色屏幕”。
下一次,我们就来看看在这个陌生的 Linux 终端(CLI)环境里,如何在没有鼠标的情况下处理文件权限、控制服务器,以及那些真正能活下来的基本技能。