【问题标题】:"meteor" vs "meteor bundle" for production用于生产的“流星”与“流星捆绑”
【发布时间】:2014-02-14 11:36:02
【问题描述】:

对于生产,我为什么要“捆绑”流星应用程序而不仅仅是复制 服务器上的源使用“meteor”命令?

基本上有什么区别:

  • “meteor bundle app.tar.gz”,然后安装正确版本的fibers和nodejs 并提取存档并从“node main.js”应用程序开始,

  • 并复制服务器上的项目源代码,只需编写“流星”即可启动 应用?

【问题讨论】:

  • 我不能放弃回答你的问题,但是当我面临这个决定时,我观察到的一件事是,在服务器上运行流星比启动捆绑包(node.js)使用更多的 CPU 周期。 js)。流星花费的 CPU 时间量似乎也与项目(反应性)目录中的文件数量成正比。所以我怀疑meteor会一直监控目录的变化,而正在运行的包没有。此外,对于它的价值,我在 meteor --production 上遇到了稳定性问题,但在捆绑包上没有(尽管我也在两者之间升级了 node.js)。

标签: meteor


【解决方案1】:

这不会是一个详尽的列表,但以下是 meteor 命令所做的一些事情:

  1. 创建本地数据库
  2. 监视应用或包中的每个依赖文件
  3. 将每个文件单独发送给客户端(除非您在本地开发,否则效率极低)

相比之下,捆绑应用:

  1. 不创建本地数据库
  2. 不花费 CPU 观察文件的更改
  3. 创建两个缩小文件(js 和 css),非常适合放在 CDN 上或从 reverse proxy 托管。这些对于客户端下载也很有效,并且可高度缓存。

一般来说,如果您使用一组好的scripts,部署应该不会很痛苦。

【讨论】:

  • 如果你运行“meteor run --production”,你的文件会被缩小,我不确定,但我认为在这种模式下热代码重新加载也会被禁用
  • 不,在生产模式下也启用了热推送重新加载。这对于在生产环境中软更新您的客户端非常有用,以确保它们始终使用最新版本
  • meteor run --production 似乎与捆绑的区别不大,如果您为不是大量用户托管应用程序,并且您可以腾出 CPU 用于观看(此外,观看发生由操作系统(如果支持)而不是轮询。)
【解决方案2】:

使用捆绑包时:

  1. 它不会生成meteor-mongo(Mongodb inside meteor)
  2. 没有热重载
  3. Meteor 不会监视您的文件。
  4. 您可以离开/退出服务器而不杀死您的应用程序。
  5. 您可以使用 pm2 或其他类似的 npm 包顺利管理节点进程。
  6. 您可以决定将 mongoDB 放在哪里并决定使用哪个端口。
  7. 您可以远程连接到您的 mongodb,而无需运行您的流星应用程序。

在项目目录中使用复制或运行meteor命令时:

  1. 在不使用任何屏幕多路复用器(例如 tmux)的情况下,您不能在保持项目运行的同时离开/退出服务器
  2. 您只能使用在 localhost:3001 中生成的流星分配的 mongodb -- 如果流星使用端口 3000。
  3. 您正在让流星监视使用 CPU 的文件更改。
  4. 当您的应用停止运行时,您的数据库也停止运行。 :)

【讨论】:

  • 好吧,如果你使用:
    *set MONGO_URL=mongodb://localhost:27017/*,你可以在meteor之外托管你的mongo db。您的 mongo 数据库将存在于您的应用程序之外,如果您终止您的应用程序,您的数据库仍然完全可用。
猜你喜欢
  • 2023-04-11
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 2014-01-31
  • 1970-01-01
  • 2014-10-27
  • 2012-05-01
  • 1970-01-01
相关资源
最近更新 更多