跳到正文

牛马日记 ·

Day3()

牛马日记之门里灯亮着,门外墙封着

记录人:一个亲手写完项目的人
工资:3000/月,交完房租剩得不多,刚好够给服务器续一天电费
信念:端口开了,安全组没开;项目能跑,外网看不见
简历特长:精通"本地全绿,线上失联"

九月九日 · 星期三 · 服务器上

昨天我说,部署清单第一行是"先腾地方"。

今天发现,腾地方只是第一步。真正卡住我的,是一堵看不见的墙。

上午,我把项目的前前后后都接上了:镜像、容器编排、系统服务、Nginx 反代、健康检查脚本。整套部署材料从昨天的"没有"变成今天的一排:两个镜像文件、两套编排、两份 Nginx 配置、两个系统服务单元。

考虑到服务器上已经有 PostgreSQL 和 Redis,我给服务器定制了一套"懂事版"编排:数据库和缓存放手让原有的活着,我自己只补检索和对象存储,接口交给系统服务接管。省内存、不抢端口、不打扰邻居——我甚至有点为自己感动。

然后我一条条把服务拉起来。容器健康检查是绿的,系统服务显示运行中,Nginx 也在反代,API 在本机自测一路绿灯。

服务器本地看:一切正常。

可当我跑到外网,用公网地址去访问那一刻,什么都没有。

没有页面,没有接口,没有 401,连个 timeout 都像在说"这里从来没有人住过"。

我查端口:8000 在听、8080 在听、反代在听、健康检查也在听。它们都在门里开着灯。

再查安全组:放行名单里只有几个老熟人——SSH、Web 那几个常规位。

我这一串 8000、8080,还有检索、存储的端口,一个都没被列进名单。

原来端口不是开了就行,还得让门口那块安全组同意你见人。端口像门里面的灯,安全组是门外的墙。灯再亮,墙不拆,外面的人一辈子只看见一片黑。


九月九日 · 星期三 · 退回 Mac

服务器这条路暂时堵死了。堵得还挺彻底:不是服务没起来,是服务起来了但没人能按门铃。

于是我把目光转向自己的电脑。

项目里其实已经有一套本机全家桶编排:数据库、缓存、检索、存储、API、前端,六个服务一起住。我把它们拉起来,构建镜像,等它慢慢编译——Mac已经能加热中午吃剩下的拼好饭了。

第一次完整访问自己的项目,居然是在本地地址上。

8000 上是接口文档,8080 上是对话页面。我点开的那一刻,脑子空了一秒:

我写了两天的项目,第一次真正活起来,是在我自己的 Mac 上。

服务器上的那份也没死。它还活着,健康检查绿着,系统服务骄傲地运行着。只是它活在墙里,谁也不知道。

同一套容器,在 Mac 上跑得风生水起;在服务器上,它本身没有任何错——错的是门外那块安全组,规则里少了我一行。


尾声

今天一共做了两件事:先在服务器上把项目部署到"能跑",再在 Mac 上把同一套项目部署到"能看"。

服务器告诉我:部署流程没问题,材料齐全,服务正常,缺的全部在流程之外。

Mac 告诉我:项目真的能跑,全家桶真的能一起住,接口文档真的会开门。

原来的那句话要改一下了:服务器万事俱备,只欠安全组的一行规则。

那一行规则,我明天就去申请。今天就算了——今天我已经学会了一件事:

牛马的一生,就是在"端口开了"和"安全组没开"之间反复横跳。门里的灯很亮,门外的墙很硬,只有我挂在中间,负责确认哪边出了问题。

——选自《牛马日记》第一卷,"安全组"篇。
作者按:本文所述部署状态均为真实:本地全绿,外网断开。
编辑部按:作者在安全组页面刷新了十次,确认不是因为自己眼花;随后默默感谢了 Mac 上先跑起来的那个容器。

评论

还没有人说话。

说点什么

邮箱只用于显示头像,不会公开。 取消回复