半夜站点突然打不开,页面一直转圈,急着排查问题,第一反应就是先确定nginx安装目录在哪里,手上敲命令的时候脑子还乱糟糟的,之前装过好几次,每次路径都不一样,压根记不住具体位置,只能凭着零碎的印象在服务器文件夹里来回翻,点开这个目录看一眼,又切到另一个,折腾半天连个相关的执行文件都没瞅见,越找心里越慌,毕竟线上服务卡着,多耽误一分钟都不行,周围静悄悄的,只有键盘敲击的声响不断响着,就怕故障持续太久影响到正常使用。
最开始想当然以为就是默认的/usr/local/nginx,毕竟早年手动编译安装基本都往这个路径放,敲完cd命令进去之后,翻遍里面的子文件夹,能看到日志、配置文件的影子,可执行程序启动文件却对不上,试着执行启动命令还直接报错,提示文件不存在,这下就懵了,明明记得上次编译的时候没改自定义路径,怎么会出现这种状况,然后又开始怀疑是不是后期别人在这台服务器上又新装了一套,两个版本混在一起才乱了目录结构,手指在键盘上飞快切换路径,来回比对各个文件夹里的文件名称,越核对越发现和记忆里的样子出入很大,原本以为熟门熟路的操作,到这一步彻底卡壳,一时间也想不出别的头绪,只能在已知的几个常用路径里反复试探。
这条路明显走不通。
然后想起服务器是用yum包管理器装的,不是手动编译,就是脑子一乱就只记得老的安装方式,压根没区分过安装方式带来的路径差异,之前踩过好几次类似的坑,每次忙起来就把不同安装方式的区别抛到脑后,总觉得路径都是大同小异,到头来还是白白浪费不少时间。
试着敲了which nginx这个查询命令,屏幕上立刻跳出了具体路径,顺着这个路径找过去,终于定位到了主程序所在位置,顺着主程序所在的上级目录逐层查看,配置文件、运行脚本、日志存储文件夹全都规整排列着,和手动编译的目录布局差别很大,yum安装的程序大多会分散在系统默认的bin、etc、var这些系统目录里,不会单独整合在一个独立文件夹下,当时盯着屏幕上的路径长舒一口气,总算不用再漫无目的的翻找了,紧接着就顺着找到的配置目录去检查参数,一步步排查站点无法访问的问题,紧绷的神经也慢慢放松下来,总算摸到了问题的关键所在。
也试过直接用find命令全盘搜索相关文件,不过服务器里的文件数量极其庞大,全盘检索的速度慢的离谱,在这种赶时间的紧急场景下根本不实用,反正真等搜索结果完整出来,估计手头的故障都能手动处理的差不多了,这个方法也就只适合闲下来的时候慢慢核对,应急场景里完全派不上用场。
身边不少同行都喜欢死记硬背各类软件的默认安装路径,可经手的服务器一多,加上每个人选用的安装方法各不相同,记路径根本记不过来,记错、记混都是常有的事,反倒不如记几个简单的查询命令,不管是什么安装方式,都能快速拿到准确位置。
后来又在几台不同系统的机器上挨个测试,apt安装的nginx版本,目录位置又会出现新变化,位置也没法统一,从头到尾都没有一个固定不变的标准路径,完完全全取决于当初部署时选用的安装手段,手动编译、yum、apt三种主流方式,对应的目录分布各有各的特点,硬记路径只会不断出错。
忙完所有排查工作,解决掉站点故障后,随手端起桌边的水杯喝了两口,视线停留在终端界面上,久久没有挪动。