模块 2.4:准备好云服务器

模块 2.4:准备好云服务器

Table of Contents

上一节讲的那些概念——服务器、IP、端口——这一节全部亲手体验一遍。


服务器和我们自己用的电脑,有什么不同

上一节说过,服务器本质上就是一台联网的电脑。

但它和我们桌上的电脑,还是有几处关键的不同:

不同 1:服务器有真正的公网 IP

我们用自己的电脑连上 WiFi,此时我们的电脑拿到的是路由器分配的一个内网地址,比如 192.168.1.5。就好像一个电话的内网号码,互联网上的其他人是找不到这个地址的。

这里可能会有一个疑问:既然别人找不到我的内网地址,如果我电脑上登录了微信,微信消息是怎么送到我电脑上的?

关键在于,谁先发起了连接。

你感觉自己“只是开着电脑连着网”,但微信 App 已经默默做了一件事:它一启动,就主动连接了微信的服务器,并且一直保持着这条连接不断开。

所以当朋友发消息给你,消息先到了微信的服务器,然后微信服务器顺着那条已经建好的连接把消息推过来,最终传给了你的电脑。

你体验到的是“消息自动弹出来了”,但背后的结构是:你的微信 APP 主动连出去在先,服务器沿着这条通道推消息在后

但如果换一个场景:有人想直接“找到你的电脑”,在没有任何已有连接的情况下主动向你发起请求,这就行不通了。因为外面的人最多只知道你路由器的公网 IP,不知道你家里有几台设备,更不知道该把请求转给哪一台。

这就是内网 IP 和公网 IP 最关键的区别:

内网 IP 只能“主动出去”,不能“被陌生人主动找到”。公网 IP 两个方向都通。

网站需要的恰恰是后者,任何人在任何时候都能主动找到它。所以服务器必须有公网 IP。

不同 2:服务器可能不会配置屏幕、鼠标或键盘

我们自己用的电脑,有屏幕、有鼠标、有图形界面,而且还会带有喇叭、摄像头、麦克风等影音配置。

服务器作为电脑,当然也可以外接屏幕或鼠标、键盘、麦克风,但人们通常不会给服务器配置这些。

因为服务器在绝大多数时间内只需要保持开机联网,并稳定向请求者持续提供服务。人们对它的要求是稳定、方便摆放在机架上。

没有显示器,也没有键盘鼠标,我们如何操控服务器呢?

我们自然可以走进机房,给它插上显示器、键盘来操作它,但更多时候我们操控服务器的方式,是通过网络远程登录进去,用终端和命令来操作。

不同 3:它需要一直开着

你自己用的电脑,用完可以关机。

服务器不行。网站需要随时能被访问,所以正常情况服务器必须一直运行,24 小时不间断。

不同 4:绝大部分服务器操作系统是 Linux,没有图形界面

个人电脑的操作系统,绝大多数跑的是 Windows 或者 macOS,有桌面和窗口。但在服务器领域,Linux 系统是绝对的主流。

服务器上运行的 Linux 没有图形界面,只有终端。这也是这门课在前面花时间讲终端和命令行的原因。


在云平台上,去租一台云服务器

对于上述四项不同点,后三项还可以忍,但没有 公网 IP 就没办法把我们的作品分享出去。

后面我们的课程会带领大家真正制作并发布一款产品,所以我们的方案是真正地租一台云服务器,来获得公网 IP。

有许多云厂商提供了云服务器租赁服务,但它们往往都不是免费的。

“云服务器”的意思是:一些厂商已经组建好了网络、服务器,并分成不同的配置租给用户使用。云厂商帮你管理硬件,你按时间或配置付费,拿到一台可以远程登录并操作的 Linux 机器。

这里不对云厂商做推荐,腾讯云、阿里云、火山引擎、华为云、天翼云等等都可以,建议你选择购买流程最顺畅、价格最优惠的那一家。

我目前在用的一台阿里云服务器价格是 99 元/年,是 双 11 时租的,配置是 2 核 2G,也支持每年按这个价格续费,这个价格供你参考。

购买时,抓住这几个点就够了:

  • 买的是服务器(可以是云服务器或轻量应用服务器),不是对象存储、数据库、CDN 之类的其他产品
  • 操作系统选 Ubuntu(原因见下一条)
  • 配置从最低档开始,最便宜的那种就够用
  • 确认机器有公网 IP

为什么选 Ubuntu

Linux 有很多发行版。这门课选 Ubuntu,原因只有一个:

它在初学者环境里最常见,资料最多,后面的命令和安装过程最容易对齐。

在你还没有足够 Linux 直觉之前,用 Ubuntu 最省事。

有一个需要注意的是,当选择 Ubuntu 的时候还需要你选择具体版本号,例如 24.04 LTS、22.04 LTS 等,2026 年之后可能还会出现 26.04 LTS,你选择哪一项都行。这里建议选择的是 24.04 LTS,它不会太新,也绝对不旧。

买完以后,你会拿到什么

购买成功后,你就具备了一台云服务器的控制权。云厂商通常会给你几样信息:

  • 公网 IP 地址
  • 登录用户名(通常是 ubunturoot
  • 登录密码

一般情况下,第一次使用,你需要设置一个密码。

也可以点击重置密码的按钮来设置密码(可能设置之后需要重启才能生效),设置时请记住用户名和密码。

如果你已经有了 公网 IP 地址用户名密码 这三个关键信息,那么你已经走完了非常关键的步骤。

最后我们还需要关注一下防火墙(有些云厂商把它叫做“网络与安全组”)。

点击防火墙,进入防火墙页面查看目前开放的端口有哪些。我们目前至少需要确保 22 端口是开放的(一般情况下,22 端口会是开放的)。

至于为什么是 22 端口,我们马上就会讲。


用 SSH 连上这台服务器

我们要介绍一个新的终端命令了,那就是 SSH,它是登录远程 Linux 服务器的标准方式。

具体用法是在你自己电脑的终端里,输入:

ssh 用户名@服务器公网IP

比如:

ssh ubuntu@123.45.67.89

此前我们讲端口的时候,说过不同的服务会使用不同的端口,SSH 作为一个远程登录服务,它默认监听的就是 22 端口,所以我们需要确保 22 端口开放。

第一次连接时,终端会问你要不要信任这台机器,输入 yes 然后按回车。

接着输入密码(输入时屏幕上不会显示任何字符,这是正常的),按回车。

此处需注意,虽然常规流程是 ssh 命令之后直接输入密码,但有些云厂商(比如腾讯云)可能会通过终端发送一个二维码要你扫码确认。遇到这种情况就根据提示来操作即可。

如果登录成功,你会看到终端的提示符变了,变成类似这样的样子:

ubuntu@your-server:~$

这一刻一定要停下来感受一下:

你现在操控的,已经不是你眼前这台电脑,而是网络另一端的一台 Linux 服务器。


先在服务器上执行几条熟悉的命令

登录进去之后,先执行几条你已经熟悉的命令,确认一下自己真的在另一台机器上:

pwd

你会看到当前目录,通常是 /home/ubuntu 或者 /root(这取决于你用什么用户名登录)。

ls

第一次登录一台新的服务器时,用 ls 命令查看家目录下的文件,会发现家目录中什么都没有。

可以试试进入根目录:

cd /
ls

进入根目录后,你会看到一个标准的 Linux 目录结构:

bin  boot  dev  etc  home  lib  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

这和你本地的 macOS 或 Windows 目录结构差别很大。

这很正常,因为这本来就是另一台机器,跑着另一套操作系统。

到这里,“服务器就是另一台电脑”这件事,已经不再是概念了。


用 apt 在服务器上安装 Nginx

如果想要让服务器提供网页服务,我们还需要安装一个软件,这个软件的职责将会是:

  • 持续监听 80 端口
  • 如果有用户请求 80 端口,那么就返回相应的内容

有许多软件可以做这类事情,而今天我们介绍的是 Nginx,它非常擅长处理这类工作。

Nginx 能够做到的事情绝不止有监听端口并返回内容,它可以做许多事情。比如它可以记录每一次用户请求日志、给用户请求分类并分别处理、限制危险请求等。你了解即可,我们不做展开。

接下来,进入安装环节。

先更新软件包列表,再安装 Nginx:

sudo apt update
sudo apt install nginx -y

sudo 开头的命令在执行的时候,会要求你提供密码,这个密码就是你登录的时候用的密码。

这里两个新命令:

  • sudo:以更高权限执行命令(类似 Windows 上的“以管理员身份运行”)
  • apt:Ubuntu 上的软件安装工具,类似 macOS 上的 Homebrew

安装完成后,确认 Nginx 已经在运行:

systemctl status nginx

如果看到输出里有这一行:

Active: active (running)

说明 Nginx 已经启动,正持续监听用户请求。


确认 80 端口开放,用 IP 地址访问默认页面

Nginx 启动后,它默认监听的是 80 端口,也就是普通 HTTP 请求的标准端口。

所以在我们从浏览器访问它之前,还需要确认一件事:

云服务器的防火墙(或安全组)有没有放行 80 端口的入站流量。

这个设置不在服务器里,而在云平台的控制台里。

还记得前面学习 SSH 的时候,我们在哪里去查看 22 端口是否开放吗?

在云平台找到你的服务器实例,进入安全组或防火墙配置,确认 TCP 80 端口是对外开放的。

做好之后,打开你自己电脑上的浏览器,访问下面这个地址,应该就可以看到 Nginx 的默认欢迎页:

http://你的服务器公网IP

如果看到 Nginx 的默认欢迎页面,说明:

  • Nginx 正在运行
  • 80 端口已经开放
  • 你的浏览器正在通过公网 IP 访问另一台电脑上提供的网页内容

上一节讲的整条链路,在这里第一次真实地发生了:

浏览器 → IP 地址 → 服务器 → 80 端口 → Nginx → 返回页面内容 → 浏览器显示


通过配置文件找到 Nginx 的默认页面

上一步我们访问到的浏览器里那个 Nginx 默认页面,背后也是对应着服务器上的一个 HTML 文件。

但这个文件放在哪里?

不用猜,去看 Nginx 的配置文件:

cat /etc/nginx/sites-available/default

终端会打印出一大段配置。不需要全看懂,只需要找到这一行:

root /var/www/html;

这行配置的意思就是:

Nginx 会去 /var/www/html 这个目录里找网页文件来提供给浏览器。

顺着这个路径,进去看看:

cd /var/www/html
ls

你会看到一个文件,通常叫:

index.nginx-debian.html

这就是刚才浏览器里默认页面对应的源文件。

cat 看一眼它的内容:

cat index.nginx-debian.html

终端会打印出一大段 HTML。你不需要看懂它,只需要确认一件事:

浏览器里的那个网页,背后真的对应着服务器上的一个 HTML 文件。

文件在哪里、内容是什么,全都可以找到、可以查看,服务器不是黑盒。


用 Vim 修改这个文件,刷新浏览器看变化

既然这个网页就是一个真实存在的 HTML 文件,那么我们稍微改一改,起步就是改了这个网页吗?

没错,现在我们尝试亲手改一次这个文件,在浏览器里验证结果。

上一节学过生存级 Vim,现在就用上了:

sudo vim /var/www/html/index.nginx-debian.html

进去之后:

  1. i 进入编辑模式
  2. 找到页面里最显眼的一行英文,改成任意一句你自己写的话
  3. Esc 退出编辑模式
  4. 输入 :wq 保存并退出
  5. 按回车

改完后,回到浏览器,刷新页面。

如果你看到了自己刚才写的那句话,这一节就真正完成了。

你刚刚走完的,是这样一条完整的链路:

  1. SSH 登录远程服务器
  2. 找到 Nginx 配置,顺着 root 路径找到页面源文件
  3. 用 Vim 修改文件内容
  4. Nginx 继续对外提供这个文件
  5. 浏览器刷新,公网页面内容发生了变化

这一节最常见的卡点

SSH 连不上

优先检查:用户名是否正确(不一定是 ubuntu,以云平台给的为准);密码是否输入正确;服务器是否已经启动完成;云平台控制台里,安全组或防火墙是否放行了 22 端口。

浏览器打不开 IP 地址

优先检查:云平台控制台里,安全组或防火墙是否放行了 TCP 80 端口的入站流量。这一步很多人会漏掉。

Nginx 状态不是 active (running)

重新执行 sudo apt install nginx -y,或者执行 sudo systemctl start nginx

Vim 改了文件,浏览器刷新没有变化

先确认 Vim 真的保存成功了:是否按了 Esc,是否输入了 :wq,是否按了回车。如果不确定,重新进去改一次。


这一节结束时,你应该做到什么

  • 知道服务器和个人电脑的几处关键不同
  • 自己购买了一台云服务器,拿到了公网 IP
  • 能用 ssh 登录服务器
  • 能在服务器上执行 pwdlscd 等熟悉的命令
  • 能安装 Nginx,并确认它处于 active (running) 状态
  • 能通过公网 IP 在浏览器里访问到 Nginx 默认页面
  • 能通过 Nginx 配置找到默认页面对应的源文件
  • 能用 Vim 修改这个文件,并在浏览器里看到变化

← 上一节:模块 2.3 互联网是怎么工作的 | 下一节:模块 3 前端基础 →