跳到主要内容

附录:购买服务器和域名

部署页面默认两样东西已经就位:一台一直开机、能从公网访问的云服务器,以及一个 指向这台服务器的域名。如果你两样都还没有,本附录按"每一步都让下一步顺理成章" 的顺序一次讲清:

  1. 租服务器。
  2. 确认它的地址是固定的,并且只开网页需要的门。
  3. 拿到服务器的公网 IP——域名要指向的那个号码。
  4. 买域名。
  5. 把解析交给一家服务商,并用这个 IP 添加记录。
  6. 确认域名真的指向了服务器。
  7. 部署系统,确认能用域名打开。
  8. 拿到小锁:让地址变成 https:// 的证书。

这里面所有操作都是在网页上点一点、再给你的 Agent 贴一句话——不需要安装任何 东西,也不用写代码。下文示例使用阿里云:服务器用轻量应用服务器,域名和解析 用云解析 DNS。

1. 租服务器​

云服务器其实就是另一台一直开着、有公网地址的电脑。整套系统都跑在容器里,所以 直接选一台已经装好容器软件(Docker)的服务器,后面什么都不用再配。

在阿里云轻量应用服务器上租:

  1. 打开产品页面并登录: aliyun.com/product/swas
  2. 进入轻量应用服务器控制台, 在左上角单击创建服务器。
  3. 地域选离使用这套系统的人最近的。
  4. 镜像类型选应用镜像(不是系统镜像),在列表里选 Docker CE。它开机就 已经装好了 Docker。
  5. 套餐选内存 2 GB 及以上的,确认购买数量和时长,单击立即购买并完成支付。
  6. 回到控制台,等状态变成运行中。

每一步的详细截图见官方文档: 创建轻量应用服务器, 可选的应用镜像见 应用镜像概述。

2. 公网地址是固定的​

轻量应用服务器分配的公网地址在服务器的整个生命周期内保持不变,正常关机再开机 不会变,只有退订或手动更换才会变。所以直接使用这个地址即可,不需要像 AWS 那样额外绑定静态 IP。

3. 只开网页需要的门​

在实例的防火墙页签下,可以看到允许到达服务器的流量。确保只开放这些:

防火墙里的名称端口为什么要开
HTTP80先用 IP 做第一次验证,之后配置小锁也要用
HTTPS443加小锁的时候再开

确保 3306、6379 和 8817 不要开放。它们分别属于数据仓库、缓存和后台干活的 服务——这些都通过网页那扇门访问,直接开放会把数据放到公网上。

4. 获取服务器的公网 IP​

第 6 步的记录需要的是公网 IP——整个互联网看到的那个。直接在轻量控制台的 实例详情页查看,公网地址就显示在服务器旁边。把它复制下来,后面要原样填。

只填控制台里的那个地址

服务器还有一个内部地址,通常以 172. 或 10. 开头,只有阿里云里面的机器 才能用。你在控制台页面看不到它,也不要用它——域名指向它,外面所有设备都会 失败。只复制控制台显示的公网 IP。

为了确认服务器已经准备好、地址也对,把地址和登录信息给 Agent,然后说:

提示词

我租了一台用 Docker 镜像创建的阿里云轻量应用服务器,它的公网地址是固定的。 它的公网地址和登录信息是:[填在这里]。登录上去确认服务器已经可以用于本 项目,并告诉我它对外显示的公网 IP 地址是多少。先不要改动任何东西。

你应该看到: Agent 确认服务器已经准备好,并报出一个和控制台一致的公网 IP。 如果两个对不上,或者它登录不进去,说:“你报的 IP 和我控制台里的不一样—— 检查一下公网地址和我的登录信息,告诉我哪个有问题。”

5. 买域名​

域名只是一个比 IP 好记的名字。“拥有域名”和“在哪里管理解析”是两件可以分开 选的事。

在阿里云(万网)买:

  1. 打开阿里云域名注册页面,搜索你想要的 名字,选择后缀(.com、.cn 等)。
  2. 加入订单并完成结算。
  3. 按提示完成域名实名认证(上传证件、等待审核,通常几个小时到一个工作日)。 未实名的域名是锁定状态,不能解析、也不能使用。

在阿里云买的域名会自动开通云解析 DNS,可以直接进行第 6 步。你也可以在其他 卖家处购买——只有第 6 步的前半部分会不同。

域名指向国内服务器需要先备案

服务器位于中国大陆时,域名必须先完成 ICP 备案,否则无法通过 80/443 端口提供网站服务。备案通常需要几个工作日到几周,可以在买好服务器和域名后尽早 通过阿里云提交;备案期间可以先用公网 IP。服务器选中国香港或海外地域则无需 备案。

6. 把域名指向 IP​

如果域名是在其他卖家处买的,先把它的解析交给阿里云:

  1. 在阿里云云解析 DNS 控制台添加该域名。
  2. 复制阿里云分配的 DNS 服务器地址。
  3. 回到原卖家处,把域名的 NS 修改为这组地址。生效时间从几分钟到几小时不等。

然后进入该域名的解析设置,添加把名字和服务器连起来的记录——人们输入的名字, 加上第 4 步拿到的公网 IP:

记录类型记录值
admin.example.comA第 4 步复制的公网 IP
api.example.com(可选)A同一个公网 IP(已有 /marsquakes-api/ 地址前缀,无需单独域名)

请把 admin.example.com 替换成你自己的名字。如果系统实际会放在阿里云负载均衡 或 CDN 后面,添加记录前先问一下 Agent——那种情况用的是另一种记录。

7. 确认域名指向了服务器​

记录通常在十分钟左右生效。让 Agent 帮你检查:

提示词

帮我看看我的新域名现在是不是已经解析到服务器的公网 IP 了。告诉我它目前指向 哪个地址。

你应该看到: Agent 告诉你域名指向的 IP 和控制台一致。如果过了一小时还是 没指向、或指向了错误的地址,说:“域名还是没指向服务器——检查一下记录和 NS 设置,告诉我哪里需要改。”

等之后系统部署完成,再亲自做一次真实测试:用手机开流量(不要连当前 Wi-Fi)打开 域名——证明域名、防火墙和服务器对真实访客都能用。

8. 拿到小锁(HTTPS 证书)​

证书是边缘服务器出示给每位访客的一个小文件,用来证明这个网站确实是你的; 浏览器据此显示小锁和 https:// 前缀。没有证书时,浏览器会标注"不安全",还可能 拒绝提交密码。

证书只能在这一步办——网站已经能用域名打开之后——因为到了这一步域名已经解析到这台 服务器、且在你的控制之下,这正是验证所有权所需要的。在阿里云,你在**数字证书管理 服务(CAS)**里办证书,免费和收费两种都可以下载到自己的边缘 nginx 上使用:

证书费用类型有效期用于本项目
个人测试证书(原免费证书)免费DV90 天,需手动重新申请选 Nginx 类型下载,得到 域名.pem + 域名.key
付费正式证书付费DV / OV / EV1 年同样选 Nginx 类型下载,得到 PEM 格式的证书和私钥

如果打算把 HTTPS 终结在阿里云的 SLB 或 CDN 上,则由它们自己处理证书,边缘 nginx 保持现状即可;本项目要的是证书落在自己的边缘 nginx 上,所以按下面的格式准备。

文件放在哪里​

证书文件放在宿主机上一个固定目录:

apps/web-admin/certs/

该目录已在 .gitignore 中忽略,私钥不会被提交。它会以只读方式挂载进边缘容器的 /etc/nginx/certs,edge-nginx.ssl.conf 在那里读取下面两个 PEM 文件——以 -----BEGIN ...----- 开头的纯 Base64 文本:

  • fullchain.pem——你的证书后面接上颁发方的中间证书(完整证书链),用于 ssl_certificate。
  • privkey.pem——未加密的私钥,用于 ssl_certificate_key。

在阿里云申请时选择 Nginx 服务器类型,下载包会给你一个 域名.pem(证书链)和一个 域名.key(私钥),本来就是 PEM,把它们分别改名放到 apps/web-admin/certs/fullchain.pem 和 apps/web-admin/certs/privkey.pem 即可, 无需转换。如果下载成了 PFX 或 JKS,那是密钥库、不是 PEM——要么重新下载 Nginx 版本,要么让 Agent 转换。不要把证书再传回任何控制台。

光有证书文件还不够:还要告诉边缘 nginx 证书在哪里、发布 443 端口,并把不带 https 的访问跳转到 https://。仓库里已经备好一份完整配置——和现在的路由完全一样,只 额外加了跳转和 ssl_certificate 两行——即项目仓库中的 apps/web-admin/edge-nginx.ssl.conf.example(复制为 edge-nginx.ssl.conf, 替换示例域名后挂载即可);443 端口在第 3 步已经开放。把域名告诉 Agent,然后说:

提示词

我的网站现在已经能用域名通过普通 HTTP 打开。请在阿里云数字证书管理服务里为这个 域名申请证书(个人测试证书即可),下载 Nginx 版本,把证书链放到 apps/web-admin/certs/fullchain.pem、私钥放到 apps/web-admin/certs/privkey.pem,让边缘服务器在 443 端口使用它们,并把不带 https 的地址跳转到 https;记住这个证书 90 天到期,在那之前帮我重新申请并替换。 不要改动页面和后端的工作方式。等新访客能看到小锁时告诉我。

如果你已经自己下载了证书​

另一种情况是你已经在数字证书管理服务里自己办好并下载了证书。不要把证书内容贴进 聊天框——私钥是机密,贴进去的内容可能被记进日志。把下载到的两个文件放到固定 目录,文件名按边缘配置的预期命名:

  • apps/web-admin/certs/fullchain.pem——证书链
  • apps/web-admin/certs/privkey.pem——私钥

该目录已经在版本控制之外。然后只把域名告诉 Agent,说:

提示词

我已经在阿里云为我的域名办好 HTTPS 证书——证书链放在 apps/web-admin/certs/fullchain.pem,私钥放在 apps/web-admin/certs/privkey.pem。请让边缘服务器在 443 端口使用它们,把不带 https 的地址跳转到 https,并在证书 90 天到期前提醒我重新申请替换。不要改动 页面和后端的工作方式,也不要把私钥放进版本控制。等新访客能看到小锁时告诉我。

你应该看到: 两种情况下,Agent 都会告诉你证书已装好,并且你自己打开域名时显示 https://、有闭合的小锁、没有警告。如果页面出现警告、或始终看不到小锁,说:“新访客 还是看不到小锁——检查一下证书是不是没申请下来、不在边缘服务器查找的位置、或者已经 过期,告诉我是哪一种。”

国内服务器的备案要先完成

服务器在中国大陆地域时,未完成 ICP 备案的域名无法通过 80/443 提供服务,证书 即使申请成功访客也打不开。第 5 步的备案通过后再做本步;中国香港或海外服务器不受 此限制。