用 mup 部署 meteor app 到阿里云 ECS 上怎么填写配置文件 mup.js ?

本文主要是介绍用 mup 部署 meteor app 到云端服务器的过程已经如何配置 mup.js。像国外Galaxy,Modulus 和 Heroku 这种高级自动化的 PaaS 云部署平台在国内都无法正常访问。目前国内又没有同类产品,所以只能自己手动买服务器部署。还好 mup 工具极大的简化了这个过程,它会把服务器和 MongoDB 数据库分别以两个分开的 docker container 形式部署,非常高效。而且整个过程只用执行 mup setup 和 mup deploy 两个命令就够了(国外网络畅通的情况下)。

原文可见我在知乎上的自问自答,这里做一下重述。

我用的是阿里云ECS上1核2G的Ubuntu 14.04 64位服务器。我的 Meteor 版本是1.4.2.1,React 做前端。由于服务器在国内,颇经历了一些波折,才部署成功,以下是我的流程。

我一开始的 mup.js 配置文件是这样的:

刚执行 mup setup 等了一会儿,就遇到的第一个问题,下载docker太慢报错:

解决方案是直接通过阿里云连接进入主机,手动执行 apt-get install -y -q docker-engine (错误信息中有提示),手动进去安装的速度还挺快,安装好再执行 mup setup 成功:

紧接着执行 mup deploy,遇到第二个错误,装不了npm:

继续远程进入主机,手动执行 apt-get install npm,又安装成功:

之后再执行 mup deploy,遇到第三个错误,AssertionError: "undefined" === "function":

查了一下发现Github([meteor 1.4] AssertionError: "undefined" === "function" · Issue #1091 · arunoda/meteor-up · GitHub)上很多人有同样的问题,是 mup 支持 meteor 1.4 需要 docker image 用 abernix/meteord:base 格式,所以只要把 mup.js 里面相关的字段改掉就好:

再来一次 mup deploy,这个错过去了,但是新错又出现了!

mup 验证部署的时候 curl 服务器没有响应,它认为是部署失败了,检查 mup logs 发现原来配置文件里的 ROOT_URL: 'oneshot.io' 格式错误,需要加上http或者https,但 mup 默认的可没有加啊!但是改成 ROOT_URL: 'http://oneshot.io' 终于可以了!以下是我最终的 mup.js 配置文件内容。

之后其实又 mup deploy 又报了一个 curl 没响应的错,但这可能是因为它默认60秒以后检测部署,但这个时候服务器还没有准备好。因为我又看了一下 mup logs,刚才的 ROOT_URL 错误已经消失。再打开浏览器,app已经部署上去了!

希望本篇对后来者有所帮助!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 使用该方式需要有基本的 Linux 知识这里介绍的部署方法都是手动,可以帮助理解 Meteor App 在生产环境...
    25b2fc874e9c阅读 1,555评论 0 6
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,080评论 19 139
  • 在Meteor开发者群里发现很多人在问如何部署Meteor项目,我自己也在部署Meteor项目时遇到了很多问题,所...
    romejiang阅读 3,033评论 9 10
  • I set up 100's iphones a week. SWEET LORD THATS 4200 scre...
    刘英滕阅读 2,263评论 4 58
  • 帘十里著。 文笔还行。挺细腻的糙汉文。近几年大热的题材。 只是不喜欢,以凄苦身世作为主线和卖点。
    路茗阅读 2,211评论 0 0