-
-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
egg-scripts 部署脚本 #241
Comments
增加下对环境变量转换的支持? 这样就不用自己封装框架和写 loader 了. |
部署脚本的能否对pm2启动进行兼容支持?像我所在公司有考虑用pm2进行服务器管理,而且已经在计划上了,用以便针对进程进行监控日志追踪等。 |
pm2 是能支持的,只需要用pm2启动入口文件就好了 |
pm2 配上 |
pm2 没有限制,就是有点多余。而且 pm2 自身的稳定性比 egg 内置的 egg-cluster 弱很多。 |
@fengmk2 不是为了那个东西的稳定性,而是pm2延伸出来的http://pm2.keymetrics.io所能使用的监控。或者egg有直接实现一套的计划的话肯定是更好。 |
@duncup 那你直接使用 pm2 就可以了。 |
倒也可以,反正两个项目并没什么冲突,服务器直接配倒也可以。就是提一提。 |
不提,pm2 的用法就是 pm2 index.js 就可以了,所有 node 应用都一样。我们认为 pm2 并不能真正用于生产环境,提了反而误导。 |
似乎对pm2的稳定性意见很大的样子?看来我需要重新考虑下pm2了。 谢谢说明 @fengmk2 |
如果你能说你完全能掌握 pm2 的代码,那我是没有意见的。但是如果没法掌握,那么代表它是未知的。 |
和镜像一起做 #142 |
补充说明: 我们的应用有可能会部署在不同的地方,如 UAE, leadcloud 等等,往往这些云引擎会有自己的 ENV 来表示服务器类型。 目前的作法,要不在自己的框架里(如 nut 在自己的 startCluster),要不需要在启动脚本里面做判断。 前者不太好,后者其实就是 egg-scripts 的定位吧,可以考虑下这里如何支持该需求,我还没想明白:
|
@atian25 就写自己的 scripts,然后生成 config/env 文件。egg-scripts 是可以被继承的。 |
|
是的,一次构建多次部署就是通过环境变量设置的,覆盖 getServerEnv 也是一个方法。 |
在 loader 覆盖 getServerEnv 不行吧, 之前 nut 踩坑过一次, app 和 worker 是 prod, 但 master 是 local... 后面我改为覆盖 startCluster 了. 但这 2 种方法, 都是需要在框架层做, 有点太重了. 譬如我开发一个应用, 想同时部署到 2 个云引擎去 |
现在 master 没问题了,使用 NODE_ENV 就可以了 不是啊,因为你想自己定义环境变量,新开发者使用 EGG_SERVER_ENV 是没有成本的。 |
说到这个, 部署文档回头要写清楚线上环境需要加上的 ENV
这个呢? loader 只能在框架层覆盖吧? 我期望是通过启动脚本(egg-script) 或插件解决(如 egg-leadcloud) 但目前的机制, 插件太晚了. |
确定不支持自己定义环境变量么 |
之后写引导器的时候再看看好了,云我还没玩过 |
自定义环境变量的场景, 应该是针对 pre 这些吧? prod, dev, test 这些是通用的, 只是不同的云引擎的判断方式不一样. 嗯嗯, 后面写的时候看看 |
我在使用云引擎的时候应该可以去设置环境变量,连我等金融云都支持 |
这个就是框架来做, 还是用户来做的选择了 举个例子, 某云引擎内置的环境变量是 交给框架来做, 就是只要用户安装 egg-XXX 插件, 就无需理会, 自动适配了. 交给用户来做, 就是他需要在每一个应用对应的云引擎的 |
我觉得告诉使用者怎么使用 EGG_SERVER_ENV 就好了,不然你还要去解释,这么多云也不会都跑过,出什么问题我们也不知道。 |
如果能在插件里面做这个事情, 就会自然很多了. 譬如写个 |
那就先不理了, 等 egg-scripts 出来后再看看有什么更好的方法, 不然就只能框架层实现了. |
@leonardodream 另开 issue,跟这个 topic 无关,顺便注意下 markdown 排版。 |
哦哦哦 @atian25 |
egg-scripts 的 bug 也应该提在哪里?window 下 stop 我这里无法关闭 应用 |
readme 有写了,不支持 win,自己 kill 。服务端部署一般在 linux。
发自我的 iPhone
… 在 2017年8月8日,18:13,zhengxiansen ***@***.***> 写道:
egg-scripts 的 bug 也应该提在哪里?window 下 stop 我这里无法关闭 应用
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.
|
我的错,没仔细看 |
主要是 win 下的 PS 有点兼容性问题,也很少有部署到 win 的需求,就暂时不支持了,有兴趣的可以提 PR 来支持。 |
顺便同步下,egg-scripts 工具已经发布第一个版本了,https://eggjs.org/zh-cn/core/deployment.html#部署 |
已经在用了,主要是部署在linux,window只是做个预览而已,谢谢 |
请问一下egg入口文件怎么写呢? |
基于egg.js用react发开h5页面,有大佬知道怎么弄的吗 ?弄了一周多了,环境还没打起,求助大神帮帮忙。。。 |
用 egg-scripts 的话不需要入口文件。 自己写入口的话,可以看 https://eggjs.org/zh-cn/faq.html 的 PM2 那里,但这只是一个简单的调用, egg-scripts 里面做的一些启动日志的处理不会在里面,需自行处理 |
@popomore should we close this ? |
可以,构建后面再做 |
使用egg-scripts 启动,默认NODE_ENV就是production,并且不可修改? |
正式环境应该只用 production |
可是我们有一个qa环节,部署的代码和正式环境一样,这时候想用egg-scripts 启动,NODE_ENV默认置为production会让我们内部的一些包出问题,我们需要自己设置NODE_ENV |
包的设计最好不要依赖于环境变量,而是通过构造函数入参来决定。 |
恩,你说的有道理 |
不过为什么一定要强制帮我设NODE_ENV呢,我自己设不行吗 |
不为什么, 就是 你有需求就 PR 支持传递 ENV 咯。虽然我还是建议你不要用 ENV 来做判断。 |
比pm2更好用 |
位于Server2012 搭配nssm, 启动后出现定时任务重复执行的BUG,使用 npm run dev就没问题 |
功能
构建
环境依赖 cnpm,cnpm 会根据配置自动安装 node 到应用包中(需要实现)。
应用添加
install-node
配置 node 版本,并添加 egg-scripts 依赖构建顺序
cnpm install --production
egg-scripts build
启动
egg 构建出的应用包没有任何依赖,可直接部署
PATH={app_root}/node_modules/.bin:$PATH
npm start
或egg-scripts start
扩展
如果框架想提供部署功能,那么可以在框架层依赖
egg-scripts
,这样应用就不需要添加了。但是层级比较深,可以在 postinstall 修改./node_modules/.bin/egg-scripts
.egg-scritps 主要提供 build 扩展,可以继承 egg-scritps 处理自定义逻辑。
The text was updated successfully, but these errors were encountered: