Digital Garden
目录

    服务器

    云服务器就是一台在云端不会关机的电脑。

    传统的服务器,无异于你自己想开一家 24 小时营业的餐馆。你需要从零开始研究菜单,也就是配置;采购厨具和食材,也就是硬件;装修、后厨,也即是组装的过程。最后还得找一间地段好、不停电、不断水的店面,也就是机房,并且雇运维 24 小时值守,处理各种突发问题。但这成本高昂,过程繁琐。

    而云计算的出现,彻底改变了这个模式。它就像一家已经建好并管理完善的超级酒店式服务公寓:大楼的建造、装修,电力保障、网络布线,安保和保洁,全部由云计算平台负责。你作为用户,无需关心这些,租用其中的一个房间即可。

    更神奇的是,这个房间的大小和格局,还可以随时灵活调整。今天你一个人住,就租个温馨单间;明天来了十个朋友聚会,平台可以立刻给你升级成宽敞的总统套房;后天朋友们走了,你再换回小房间。并且完全支持按量计费:住几天付几天,用多大的空间付多少钱。

    这种技术就是虚拟化,它把功能完善的数据中心大楼,分隔成一个个独立且功能完善的智能房间。

    云计算最显著的作用,就是极大地降低了使用服务器的门槛。对于个人用户,每月只需几十元,就能租用一台云服务器:在这台服务器上运行一个程序,让用户通过浏览器访问,这就是一个网站;平时需要内网穿透才能联机的游戏服务端放上去,它就成了一台 24 小时在线的游戏服务器。

    云计算并非遥不可及的高深技术,而是我们每个人都触手可及的工具。

    很多人有过这样的疑惑:明明买的是 100 M 带宽,为什么下载文件时只有十兆每秒左右?这通常不是网速缩水,而是兆比特每秒(Mbps) 和 兆字节每秒(MB/s) 两种单位不同导致的。

    我们在运营商办理宽带、云服务商购买服务器时,单位通常是兆比特每秒;而传输文件时显示的,是兆字节每秒。在单位换算上,1 字节等于 8 比特,所以 100 兆比特每秒的带宽,换算后约为 12.5 兆字节每秒。再除去传输协议等开销,我们实际看到的速度就只有十兆每秒左右。

    不明白这个点时,很多人第一反应就是:我买的带宽缩水了。

    同理,厂商标的 1 TB 通常是 1 万亿字节,而很多操作系统在显示容量时,会按 1024 进位来换算,也就是用二进制 GB 的方式计算。所以 1 TB 的硬盘,在系统里通常会显示为约 931 GB,部分人会误以为硬盘少了容量。在 Linux 下,部分命令查询出的硬盘大小会和实际相同,也是因为进制不同造成的。

    讲完了网速和磁盘,让我们再来讲解一些网络概念。

    很多人可能分不清公网 IP和内网 IP。公网 IP 可以理解为互联网世界里的公开地址,它可以被公网路由访问。公网 IP 就像你家小区的门牌号,别人通过这个地址才能找到你。

    在查看网卡配置信息时,你可能会看到类似 192.168.x.x 或 10.x.x.x 的地址,这些都是内网地址。它像一个小区里的楼号,只在这个网络范围内有效。部分服务商也提供弹性公网 IP 这个选项,如果你买了服务器没有找到自己的公网 IP,不妨先看看端口映射是否配置好了。

    上面提到了端口映射,那端口又是什么呢?如果说 IP 地址是一栋楼的门牌号,那端口号就是这栋楼里的房间号,能让你访问到正确的服务。部分服务也有默认端口,如 Windows 远程桌面 RDP 是 3389、SSH 是 22,这使得一台服务器上可以同时跑着网站、数据库等多个服务。

    子网掩码的作用是告诉设备,哪部分是网络标识,哪部分是主机标识。最常见的子网掩码便是 255.255.255.0,转换为二进制是 24 个 1+8 个 0,意味着前 24 位代表网络,后八位代表这个网络里的具体设备。当你在设置静态 IP 时,时常会用到斜杠加数字的写法,比如 / 24,它和 255.255.255.0 是同一个作用。

    那网关呢?网关可以理解为局域网通向外界的大门。你家里连上路由器的设备,默认网关就是路由器的内网 IP。所有访问外网的请求,都是先交给默认网关,再由它转发出去。所以如果默认网关配错了,你就会发现能访问局域网里的其他设备,但就是上不了外网。

    最后讲讲 ISP和DNS。

    DNS 的作用,是把人类容易记的域名,转换成机器能懂的 IP 地址。比如你的域名是 xxx.sample.com,在向 DNS 服务器请求对应的 A 记录、CNAME 记录、MX 记录等。在注册域名时,服务商默认会分配 DNS 地址,当然你也可以换成第三方的。常见的 DNS 记录有:A 记录指向一个 IPv 4 地址,CNAME 记录指向另一个域名。

    ISP 就是互联网服务提供商,在国内主要是三大运营商。搭建的服务,访问的用户来自不同运营商,数据会从一个运营商传输到另一个运营商。现在因为跨省跨网结算,导致运营商的成本变高,所以跨网或跨省时遇到延迟或丢包是常有的事。

    优化方案是 BGP 线路,BGP 拥有三网路由,且路由优先级更高,延迟和丢包会相对少一些,对应的带宽和防御价格也更贵。当然,延迟、丢包最终也受使用端的网络环境所影响。

    上期视频,我们了解了云服务器相关的网络基础。今天我们来聊聊市面上名称各异的服务器,它们分别有什么用途,以及我们该如何选购适配自身业务的服务器。

    首先来说虚拟主机,这是很多人接触云计算的入门产品。你能用极低的成本搭建个人网站,比如 MC 网页站。它的实现原理,相当于服务商给你开通一个宝塔面板子账号,仅开放有限操作权限,你只能管理网站文件、网页运行环境等内容。

    同时虚拟主机是多人共享一台服务器的 CPU、内存、带宽与存储空间,一旦其他用户大量占用资源,你的网站访问速度、稳定性都会受到牵连。

    适用场景:仅适合访问流量较小的个人博客、静态展示类官网。

    VPS

    VPS 依托虚拟化技术搭建,常见底层虚拟化方案有 KVM、Hyper-V、VMware。承载它的宿主机,可以是裸金属物理机,也可以是开启嵌套虚拟化的服务器。

    相比虚拟主机,VPS 给到用户完整操作权限,能够自主部署各类项目运行环境,自定义程度更高,还可以绑定独立公网 IP,拥有专属访问地址。

    但 VPS 依旧依靠虚拟化隔离、调度宿主机硬件资源,如果虚拟化参数配置不合理,容易出现服务卡顿、掉线;且宿主机本身存在算力上限,要是服务商过度超售,整台机器上所有 VPS 的性能、稳定性都会大幅下滑。

    讲完 VPS,还有更轻量化的部署方案 —— 容器化部署。

    容器化部署

    这是当下主流的新型部署方式,不少云厂商都推出基于 Kubernetes(K8s)搭建的高可用容器服务。容器技术大幅简化前期环境配置流程,同时支持弹性动态扩缩容。

    主流容器工具包括 LXC、Docker、Podman,它们有一个核心共性:和宿主机共用 Linux 内核,仅占用几百 MB 资源就能启动一套完整 Linux 运行环境。

    但共享内核也带来了使用限制,用户通常没有权限执行修改、操作内核相关指令。市面上各类云应用平台基本都是基于 K8s 开发,为降低使用门槛,平台内置大量预装环境模板,同时支持按量计费。

    容器还有一个典型应用场景:游戏面板服。借助 Docker 轻量化分配算力,每位用户拥有独立运行环境,可自主搭建游戏服务器,例如 MC 我的世界服务器。Docker 镜像内置各版本 Java 环境,只需按需编写启动脚本就能直接运行。

    裸金属物理服务器

    如果普通云服务器算力达不到业务需求,且预算充足,裸金属物理机会是优质选择。整台物理硬件完全由你独享,你可以自行安装虚拟化系统,把一台物理机虚拟出多台不同配置的 VPS,用来部署各类业务服务。

    使用物理机不会出现同宿主机其他用户抢占资源、拖慢自身业务的问题,硬件配置自定义空间也更大。预算充足的用户,也可以自行组装服务器,邮寄到机房做整机托管。

    GPU 服务器

    GPU 服务器分三种形态:

    1. 在虚拟化实例中直通专业计算显卡;
    2. 通过英伟达 vGPU 技术,单块显卡拆分出多份不同显存资源,分配给多台虚拟机;
    3. 整机满载多块独立显卡的物理服务器。

    这类服务器早期多用于视频渲染、视频编码工作;近几年 AI 行业兴起,GPU 服务器成为深度学习、本地大模型部署、AI 模型训练的核心设备。

    以上就是市面上各类服务器的定位、区别与适用场景。感兴趣的小伙伴记得点赞关注,我们下期再见!

    选购云服务器必看核心问题全梳理
    上期视频,我们讲解了不同类型云服务器该如何选择,这期接着把购买服务器前必须弄明白的关键问题一次性讲清楚。

    一、国内主机与海外主机怎么选

    两者各有优劣,实际使用体验受物理距离、线路质量、政策规则等多重因素影响。
    对大部分国内用户来说,国内服务器物理距离更近,网络延迟更低,国内用户访问流畅稳定;海外服务器普遍延迟偏高,网络波动受线路影响极大。
    但二者有一个核心区别:国内服务器建站必须完成 ICP 备案,无备案原则上不能搭建对外网站;海外服务器无需备案,缺点是国内访问更容易卡顿。
    适合国内主机:业务面向国内用户、有建站需求、可以完成备案;
    适合海外主机:本地开发测试、对访问流畅度要求低、业务主要面向海外客户;
    兼顾海内外:可分别购买一台国内服务器 + 一台海外服务器分流业务。

    二、IP 类型:IPv4、NAT 共享 IP、IPv6
    IPv4
    就是四段数字格式的地址,例如 114.114.114.114,全球总储量有限,资源日渐枯竭,独立 IPv4 成本偏高。

    NAT 共享 IPv4
    机房多用户共用同一个公网 IPv4,依靠端口区分不同服务器。相比独立 IPv4 价格低廉很多,很多云厂商部分地区服务器默认采用该方案。

    IPv6
    新一代网络地址,地址总量近乎无限,多数云平台免费附赠。短板在于不少家庭宽带未开通 IPv6 网络,会出现无法访问的情况。
    因此市面上主流服务器大多提供独立 IPv4,或是 IPv4+IPv6 双栈模式。

    三、BGP 多线 vs 单线

    BGP 多线可以简单理解为同时接入电信、联通、移动三大运营商线路。三大运营商用户访问服务器时,都会匹配最优传输路径,不会远距离绕行。

    单线服务器仅接入单一运营商线路,比如仅电信线路。移动、联通用户访问时,数据需要跨运营商中转绕行,网络延迟、卡顿问题会更明显。

    海外服务器线路差距会更加突出:

    例如美国精品线路 CMI、9929,晚高峰延迟能稳定在 140ms 左右;部分廉价普通线路、大小包分流线路,晚高峰拥堵时延迟飙升至 300ms 以上,还会出现大规模丢包,基本无法正常使用。
    选购海外服务器优先选择优质专线,线路质量和价格基本成正比,溢价换来稳定速度。

    四、网络排查常用工具

    ping:基础工具,快速查看本地到服务器的延迟、是否存在丢包;
    traceroute:追踪数据包完整转发节点,定位网络卡顿、延迟升高的节点位置;
    MTR:整合 ping 与路由追踪功能,实时刷新每一跳节点的丢包率,排查网络故障首选工具。

    五、三种流量 / 带宽计费模式

    很多人只关注服务器基础月租,选错计费方式,后期产生高额额外费用。

    1. 按流量计费
      用多少流量扣多少费用,闲置无流量不产生开销。
      适合流量波动大、日常低负载的场景,例如偶尔跑脚本、测试项目。
      缺点:突发大流量会造成账单暴增;优势:多数云服务商支持设置上下行带宽上限、每日流量封顶,流量超限后自动限速,不会直接停机。

    2. 固定带宽包月
      按月收取选定带宽上限的固定费用,无论日常跑满带宽还是闲置,每月资费不变。
      适合流量稳定、业务 7×24 小时持续运行的场景,开销可控,无隐形扣费。

    3. 95 计费
      服务商按月统计带宽,每半小时取一次带宽平均值,将全月数据从高到低排序,剔除最高 5% 的峰值数据,剩余数值里的最大值作为当月结算带宽。

    举例:日常稳定占用 100M 带宽,偶尔短时冲到 500M,若 500M 峰值时长不足全月 5%,仅按 100M 计费。

    适合带宽波动大、存在瞬时流量峰值的弹性业务,无需提前购置超大带宽应对临时高峰。
    本期视频内容就到这里,我们下期再见!

    上期视频我们聊了服务器的线路、计费和地区选择,这期先来解决大家买完服务器后遇到的第一个难题:该选择什么操作系统,再分别讲解对应系统的远程连接方法和文件传输方式。
    一、操作系统怎么选
    主要分为 Linux 和 Windows 两大体系,我们分开对比。
    Linux
    默认无图形桌面,依靠命令行或 TUI 界面操作,上手学习成本偏高;但配套 Web 管理面板种类多,能通过网页可视化配置各类服务,系统资源占用极低,轻量版 Linux 仅需几十 MB 内存就能正常运行。
    主流发行版:Ubuntu、Debian、CentOS、Rocky Linux
    Ubuntu:应用范围最广,网上绝大多数部署教程、文档都以它为示例;
    Debian:系统比 Ubuntu 更精简,内存占用更小;
    CentOS:曾经主流企业服务器系统,现已停止官方维护,绝大多数用户迁移至 Rocky Linux,两套系统操作指令、使用逻辑基本一致。
    Windows
    自带可视化桌面,日常电脑都在用,新手零门槛;但系统硬件资源开销大,不建议配置低于 2 核 2G 的服务器安装 Windows。
    服务器版本推荐:
    Windows Server 2012:老旧版本,容易出现软件兼容、程序适配问题,部署需要一定技术基础;
    Windows Server 2022:最优选择,软件兼容性强,系统资源占用远低于 2025 版本。
    二、服务器远程连接方式
    Linux 服务器:SSH 远程管理
    SSH 有两种身份验证登录方式:
    账号密码登录
    如果密码复杂度低,服务器很容易遭到暴力破解,查看登录日志能看到大量外来爆破尝试,安全性较差。
    密钥登录
    生成一对公私密钥,公钥上传至服务器,私钥保存在本地设备,连接时自动校验,无需手动输入密码,安全等级大幅提升。
    只要公网服务无漏洞、本地私钥不被木马窃取,他人几乎无法通过 SSH 入侵服务器。
    Windows 服务器:远程桌面 RDP 管理
    在系统设置内开启远程桌面服务,使用系统自带远程桌面工具,输入服务器 IP、账号、密码即可连接,操作简单易上手。
    注意:RDP 默认端口 3389 是高危端口,建议通过注册表修改为高位端口,同时开启 Windows 预登录功能,提升服务器安全防护。
    三、服务器文件传输常用协议

    1. SFTP
      最常用的传输方式,底层基于 SSH 协议,直接复用 SSH 账号密码就能连接。
      Windows 端可安装 WinSCP、FileZilla、MobaXterm 等图形化工具,放行防火墙对应端口后即可传输文件;Linux、Windows 系统也自带 sftp 命令,支持终端直连。
    2. S3
      亚马逊推出的对象存储通用接口,目前各大云厂商对象存储、自建 MinIO 服务均兼容该协议,需搭配专用客户端或命令行工具操作。
      和 SFTP 不同,对象存储不能像本地文件夹一样直接浏览,但支持生成临时访问 URL,配套完善开发生态,各类开源库可快速对接程序,实现文件可控分发。
    3. SMB
      Windows 原生文件共享协议,在 Windows 服务器配置共享文件夹后,其他设备通过「SMB + 服务器 IP」访问,输入账号密码,操作体验和本地文件夹基本一致。
      风险提示:SMB 默认 445 端口属于高危端口,建议设置高强度密码,或修改默认端口增强安全。

    上期视频我们讲了服务器操作系统该怎么选,这期我们接着聊服务器程序运行环境,以及当下普及的容器化部署工具 Docker。

    很多人第一次把项目部署到服务器都会碰到同一个难题:本地电脑运行一切正常,上传到服务器就报错。最常见的根源,就是本地与服务器两端运行环境不统一。

    所谓运行环境,简单来说就是程序正常运行所依赖的底层基础组件。

    比如 Python 项目需要 Python 解释器,Node.js 项目需要 Node 运行时,PHP 项目则要配套 PHP 执行环境。缺少对应组件,程序根本无法启动。

    更棘手的是版本不兼容问题:

    举个例子,项目开发依赖 Python3.10,可服务器仅安装了 Python3.6,就极易出现语法报错、依赖库失效;

    又或是同一台服务器,一个项目需要 Node 16,另一个项目要求 Node 20,只安装单一版本很难同时兼顾两个业务。

    针对这类版本冲突,常规解决方案是用 Pyenv 管理多 Python 版本、NVM 管理多 Node.js 版本。

    但有没有一种方式,能把应用和它全套依赖环境打包迁移,从根源减少环境差异故障?这正是 Docker 的核心优势。

    Docker 和完整虚拟机有本质区别:它不会搭建一整套独立系统,而是将程序运行所需文件、依赖库、配置统一打包为镜像,再基于镜像启动容器。

    你可以把镜像比作标准化集装箱,内部预装好了程序运行全部依赖;容器就是集装箱在宿主机上拆分出的隔离工作区。

    本质上容器只是一组受隔离的进程,并非完整独立操作系统,多个容器会共用宿主机 Linux 内核。

    当然 Docker 并非万能,它能大幅缓解 “本地能跑、服务器报错” 的问题,但无法做到全平台完全通用。镜像必须适配目标平台,操作系统类型、CPU 架构都要匹配,x 86_64 与 arm 64 架构不互通,会导致镜像无法直接运行。

    Mac 端的 Docker Desktop 会依托轻量 Linux 虚拟机运行;Windows 系统则依靠 WSL 2、Hyper-V 提供 Linux 内核环境。

    使用 Docker 启动程序最基础命令为 docker run。

    以 Nginx 服务举例,执行命令:docker run -d -p 80:80 nginx

    • -d 代表后台静默运行;

    • -p 80:80 是端口映射,把宿主机 80 端口绑定容器内部 80 端口;

      外部访问服务器 80 端口时,流量会转发至容器内的 Nginx 服务。

    实际业务项目很少只靠单个容器,一套 Web 项目通常同时包含应用程序、MySQL 数据库、Redis 缓存。

    如果逐个手动执行 docker run,参数繁杂极易出错,容器网络、持久化存储、启动先后顺序也难以统一管控,这时就需要 Docker Compose。

    Docker Compose 相当于一份容器编排清单,通过 YAML 文件统一描述多个服务、专属网络与数据存储卷。

    官方现在推荐配置文件名为 compose.yaml,老旧项目也常使用 docker-compose.yml。

    配置文件编写完成后,执行 docker compose up -d,工具会自动按配置批量启动所有服务,同步创建配套网络、数据卷;

    执行 docker compose down 即可停止并删除容器、网络;若需要一并清空存储数据卷,追加参数 -v。

    同时 Compose 会为同一项目自动创建专属内网,容器之间可直接通过服务名互相通信。

    比如后端程序连接数据库时,直接填写服务名 mysql 就能连通,无需手动查询数据库容器 IP。

    本期我们讲解了程序运行环境、版本冲突问题,以及 Docker 容器化如何解决跨环境部署异常。

    我们下一期再见!

    • 雨云:每日签到、完成任务获取积分,积分兑换云服务器并积分续期,可长期免费;
    • 京东云 / 腾讯云 / 华为云:提供多款云产品免费体验,云服务器免费时长均为 1 个月;
    • 阿里云、天翼云:云服务器免费试用时长最长 3 个月;
    • 恒创科技:云服务器免费 3 天、物理服务器仅免费 1 天;
    • 三丰云:标注永久免费,初始仅可用 24 小时,需主动申请延期;
    • 亚马逊云:多款核心服务免费,云服务器可免费使用 12 个月;
    • 甲骨文:赠送 300 美元免费额度,云服务器免费试用 1 个月。
    • 萌哒云
    Digital Garden
    原创 服务器

    本文采用CC BY-NC-SA 4.0 许可协议,转载请注明出处。