用 mup 部署 Meteor app 到阿里云 ECS 上怎么填写配置文件 mup.js ?
看来我得自己回答自己的问题了,给以后需要帮助人的看吧。
今天双11,刚在阿里云ECS上买了个1核2G的Ubuntu 14.04 64位服务器,半价702RMB一年。我的 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已经部署上去了!
希望本篇对后来者有所帮助!