牛马日记之门里灯亮着,门外墙封着
记录人:一个亲手写完项目的人
工资: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 上先跑起来的那个容器。
评论
还没有人说话。