2015年如何部署生产环境的Meteor服务器?

5

Meteor已经发生了变化,docs.meteor.com上缺少生产部署的文档。

我有一个相当不错的Meteor应用程序,在开发模式下运行良好。因此,我使用新命令进行打包,因为旧的bundle命令已被弃用:

meteor build ./build/ --architecture os.linux.x86_64

在生产服务器上,我安装了最新版本的nodejs(目前是0.12),然后复制并解压构建文件。Mongo DB位于另一台服务器上,因此我只需要重新定义端口(PORT)、根URL(ROOT_URL)、Mongo操作日志URL(MONGO_OPLOG_URL)和Mongo URL环境变量。

但很快就会出现常见的fibers缺失错误:

module.js:338
    throw err;
          ^
Error: Cannot find module 'fibers'
    at Function.Module._resolveFilename (module.js:336:15)
    at Function.Module._load (module.js:278:25)
    ...........

以下是我尝试的方法:

  • npm install fibers@1.0.1 -g # 但它失败了。
  • npm install fibers -g 成功并安装了版本1.0.5

这里是情况:

root@server:~# npm version
{ npm: '2.5.1',
  http_parser: '2.3',
  modules: '14',
  node: '0.12.0',
  openssl: '1.0.1l',
  uv: '1.0.2',
  v8: '3.28.73',
  zlib: '1.2.8' }
root@server:~# npm ls -g | grep fibers
├── fibers@1.0.5
root@server:/opt/meteor/authmonitor-src# meteor list-platforms
browser                                       
server

但我仍然遇到相同的错误:Error: Cannot find module 'fibers'

问题:

  • 有没有最新的手册介绍如何在本地生产服务器上部署meteor应用程序?
  • 为什么/如何安装fibers模块,以及应该安装哪个版本?
  • 使用export NODE_PATH=/usr/local/lib/node_modules/部分帮助解决了问题,但是在使用npm install xxx -g后,所需的模块(如underscore和semver)安装后,又出现了其他fiber错误:"Error: Module did not self-register."
  • 你有什么建议?

谢谢!

2个回答

2

1

有没有最新的手册教如何在本地生产服务器上部署Meteor应用程序?

没有官方文档。社区正在等待MDG发布Galaxy,这将是Meteor的付费托管服务。

为什么/如何安装纤维模块,哪个版本?

根据您编写的内容,我看到可能存在一些问题:

在解压捆绑包后,您需要执行以下操作:

$ cd bundle/programs/server && npm install

您的应用程序无需全局安装任何节点模块即可正常工作。

建议您运行与Meteor版本相应的Node版本。请查看changelog并搜索“node”。在撰写本文时,推荐使用0.10.33版本。

托管

如果您正在像DigitalOcean或EC2这样的基础设施上进行托管,我建议使用Meteor Up进行部署。如果您想自己执行系统管理员任务,我建议阅读我的相关答案herehere

另一个受欢迎的托管选择是modulus,因为它更加全面。你可以在这里这里阅读一些教程。


刚刚尝试了v0.12.x,但失败了。iojs在fibers上也失败了。按照建议更改为v0.10.36(请参见github上的history.md),现在运行良好。不知道为什么依赖项没有升级到最新版本?许多其他类似的程序可能需要升级node。 - mirageglobe
实际上有一些官方文档。请参见http://docs.meteor.com/#/full/meteorbuild,还有`meteor help build`。 - Bart Louwers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接