RT,线上环境如何编写app.js or index.js入口文件。 支持pm2启动。
@cycgit egg已经内置进程管理器,再使用PM2就显得重复
@huangyanxiong01 嗯。 好像部署的章节 还在编写当中吧。 目前是怎么把egg部署到线上的。 看文档好像没有说明的。
部署文档还在编写中,配置的启动工具也在开发中。现在可以手动编写一个启动文件,来启动,可以参考 https://github.com/eggjs/benchmark/blob/master/simple/dispatch.js
const egg = require('egg');
const workers = Number(process.argv[2] || require('os').cpus().length);
egg.startCluster({
workers,
baseDir: __dirname,
});
这样部署启动只需要执行 $ node dispatch.js 即可。
我觉得pm2已经非常成熟的进程及启动管理软件,为什么不直接基于pm2呢?包括日志、web等。
@shaoshuai0102 cluster 文档那里补充下 pm2 的相关内容吧?
为什么没有选型 pm2:
进程模型非常重要,会影响到开发模式,运行期间的深度优化等,我们认为可能由框架来控制比较合适。
pm2 这么受欢迎很大一部分原因其实是好看
一般这种强大的进程监控与管理工具,都需要包上好几层进程,有点像高阶函数的赶脚,进程树比较庞大,增加了复杂性。
@shaoshuai0102 补充到 cluster 文档吧, 这个算是比较常见的 FAQ 了
恩恩 我单独加个 faq 篇章
@shaoshuai0102 把这个开启了 https://github.com/eggjs/egg/blob/master/docs/source/_data/guide_toc.yml#L39
内容还是写到 cluster 里面吧, FAQ 那边简单说明下, 链接过去
@cycgit 参见 进程管理为什么没有选型-pm2
@atian25 ok
那需要如何部署服务
苏千上面写了,最简单的就是写个入口就好了,用 egg 的环境变量启动
我的意思是现阶段egg js 部署是通过damon forever 还是什么来进行管理部署到正式环境
直接运行 nohup node server.js 2>&1 来启动
@ckken 我们是直接类似运行 @ngot 的方式来运行到生产环境的,你可以选择你愿意用的任意方案(pm,forever 等),但是没有太多意义,因为 egg 启动自后自己会进行进程挂掉重启等进程管理的工作。
Got it,thanks,这几天把文档看完,上一个数据可视化平台和web socket 小牛试刀
@ckken egg启动的时候是通过EGG_SERVER_ENV指定环境变量。pm2启动的时候记得指定环境变量。 而且pm2貌似不支持 npm script。 就弄个pm2启动配置文件就好了。 运行环境
// pm2.json
{
"name": "egg",
"script": "./index.js",
"env": { "EGG_SERVER_ENV": "prod" }
}
感觉直接用docker会好很多,docker直接自己用https://github.com/eggjs/egg-cluster
启动就好了。很简洁省事。
@popomore 可以分享下你们结合 docker 的用法
pm2 能做到開機自動啟動服務(pm2 startup),egg有辦法嘛?
initd 了解一下
@shaoshuai0102 所说的那些点,其实如果真是中小型应用的话,绝大多数情况是不会在乎这些的。
PS:pm2真的是好看啊,如果没有其他痛点或者体会不到那些痛点,好看就是王道。
如果通过 pm2 启动,想查看本机的 worker,agent 的个数,及各自 cpu 和 mem 使用情况,可以使用插件 egg-plugin-monitor

Most helpful comment
pm2 这么受欢迎很大一部分原因其实是好看