node.js 下 forever 利用别名启动 node 服务
出自:node.js 下 forever 利用别名启动 node 服务
这一篇博文又和大家分享 forever 这个开源包.
今天说到的 forever 别名启动node.js 服务,和上一篇博文密切相关,涉及到 linux下创建硬链接 软链接的问题 ,还没有看的现在就去看看,不收费的,随便看!
我们平时如何用 forever 来启动 node 服务:
forever start app.js
利用 linux 软链接 (别名) forever 如何启动 node 服务:
forever start app_link
上面的 app_link 就是 app.js 文件在 linux 系统下的一个软链接
然并卵,这看上去好像一模一样.
当然存在的就是合理的,它一定有它的适用范围:
什么适用用别名去启动一个node.js 服务:
当你所在的测试环境部署了好几个应用,前面用 nginx 做反向代理.
而我们的 node.js 服务器启动文件 喜欢用 app.js 或者 index.js 对不对?
ok,那么问题就快要出现了.
[zhangzhi@portal ~]# forever list info: Forever processes running data: uid command script forever pid logfile uptime data: [0] 0D4G /usr/local/bin/node app.js 537 3099 /root/.forever/a.log 3:21:28:21.634 data: [1] FT5X /usr/local/bin/node app.js 1898 1902 /root/.forever/b.log 90:15:23:19.11 data: [2] Cr8D /usr/local/bin/node app.js 2288 4915 /root/.forever/c.log 2:10:2:58.797 data: [3] itbilu /usr/local/bin/node app.js 6893 6895 /root/.forever/d.log 61:21:5:36.54
上面这么壮观的场面也许是一种巧合, 4 个node.js 的应用 启动文件全部是 app.js .
但是平时遇到2个重名的几率还是很多了.
这时如果让你去停掉其中一个 node 服务.你该怎么办?
forever stop app.js
上面这样会死无全尸.当然,你如果能立即发现你把 4个服务全部关掉后,能迅速去启动另外3个node 服务也算一种补偿,最多会被 鞭尸而已.
那就算上面3个安然无恙的存在着,有一天一个小伙伴又想去停掉其中一个 服务,上面的悲剧一定会重演.
这时我们最好的办法就是 forever 别名启动 node.js 服务.
什么是别名,其实就算 linux 下的一个软链接, 给 启动文件设置一个 软链接.
我下面的软链接会按数字顺序排列,你在具体的业务相关的 node.js 服务,最好起名和业务相关,能一眼识别!
进入node服务1目录
ln -s ./app.js node_noe
这时在目录下回多出来一个 软链接 node_noe ,然后用 forever 启动它
forever start node_noe
依次进入 node 服务2目录 .....设置完后启动,最后你的 forever list 是这样的:
[zhangzhi@portal ~]# forever list info: Forever processes running data: uid command script forever pid logfile uptime data: [0] 0D4G /usr/local/bin/node node_one 537 3099 /root/.forever/a.log 3:21:28:21.634 data: [1] FT5X /usr/local/bin/node node_two 1898 1902 /root/.forever/b.log 90:15:23:19.11 data: [2] Cr8D /usr/local/bin/node node_three 2288 4915 /root/.forever/c.log 2:10:2:58.797 data: [3] itbilu /usr/local/bin/node node_four 6895 /root/.forever/d.log 61:21:5:36.54
这时你的Leader 再让你去停止某个业务的node 服务时,你就不必手慌脚乱了.
通过 别名一眼识别针对的是那个服务.然后
forever stop node_one
这样绝对不会污染其他的node 服务,何乐而不为呢.