egg编写入口文件,pm2启动。

Created on 9 Feb 2017  ·  29Comments  ·  Source: eggjs/egg

RT,线上环境如何编写app.js or index.js入口文件。 支持pm2启动。

question

Most helpful comment

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

All 29 comments

@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等。

  1. egg 依然可以通过 pm2 启动
  2. 日志、监控和报警有更专业的工具解决,例如 http://sentry.io/
  3. egg 有自己的多进程模型

@shaoshuai0102 cluster 文档那里补充下 pm2 的相关内容吧?

为什么没有选型 pm2:

  1. pm2 模块本身复杂度很高,出了问题很难排查。我们认为框架使用的工具复杂度不应该过高,而 pm2 自身的复杂度超越了大部分小型应用。
  2. 没法做非常深的优化
  3. 切实的需求问题,一个进程里跑 leader 其他进程代理到 leader 这种模式,在企业级开发中对于减少远端连接,降低数据通信压力等都是切实的需求。特别当应用规模大到一定程度,这就会是刚需。egg 本身起源于蚂蚁金服和阿里,我们对标的起点就是大规模企业应用的构建,所以不能做 toy,要非常全面。通过 pm2 来做比较复杂。

进程模型非常重要,会影响到开发模式,运行期间的深度优化等,我们认为可能由框架来控制比较合适。

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

一般这种强大的进程监控与管理工具,都需要包上好几层进程,有点像高阶函数的赶脚,进程树比较庞大,增加了复杂性。

@shaoshuai0102 补充到 cluster 文档吧, 这个算是比较常见的 FAQ 了

恩恩 我单独加个 faq 篇章

内容还是写到 cluster 里面吧, FAQ 那边简单说明下, 链接过去

@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

image

Was this page helpful?
0 / 5 - 0 ratings