使用 MUP 将 Meteor 应用程序部署到 Ubuntu EC2 实例
Deploying Meteor application with MUP to Ubuntu EC2 instance
Versions/Background
我使用的是 meteor-up (mup) 的 0.7.6 版,Meteor 1.0.2.1,它使用了我读过的 Mongo v0.10.33。
我正在使用小型 Ubuntu Server 14.04 LTS (HVM),SSD 卷类型 - ami-3d50120d
AWS 上的 EC2 实例作为我的 Meteor 应用程序的目标。
我的域指向 ami-3d50120d
实例的弹性 IP(我在这里称之为 domain-name
)。
我可以在新 ami-3d50120d
上执行 mup setup
,我成功安装了 Mongo 和 Node,输出如下所示:
[domain-name.com] - Installing Node.js
[domain-name.com] ✔ Installing Node.js: SUCCESS
[domain-name.com] - Setting up Environment
[domain-name.com] ✔ Setting up Environment: SUCCESS
[domain-name.com] - Copying MongoDB configuration
[domain-name.com] ✔ Copying MongoDB configuration: SUCCESS
[domain-name.com] - Installing MongoDB
[domain-name.com] ✔ Installing MongoDB: SUCCESS
[domain-name.com] - Configuring upstart
[domain-name.com] ✔ Configuring upstart: SUCCESS
重新创建错误条件的步骤
- 创建了一个新的 Ubuntu 实例
- 分配了链接到我的域的弹性 IP
- 配置了我的 mup.json 文件(将在下面详细说明)
- 进行了 mup 设置 -> 一切都安装成功
- ssh 进入我的实例并执行
node -v
-> v0.10.33
- 回到我的 OSX 框 -> 做了一个
node -v
-> v0.10.32
- 是否部署了 mup -> 出现错误情况
错误条件
[domain-name.com] - Uploading bundle
[domain-name.com] ✔ Uploading bundle: SUCCESS
[domain-name.com] - Setting up Environment Variables
[domain-name.com] ✔ Setting up Environment Variables: SUCCESS
[domain-name.com] - Invoking deployment process
✘ Invoking deployment process: FAILED
-------STDERR----
Warning: Permanently added 'domain-name.com,55.555.5.555' (RSA) to the list of known hosts. sudo: node-gyp: command not found
-------STDOUT-----
=> re-installing binary npm module 'bcrypt' of package 'npm-bcrypt'
备注
我想我的 OSX 盒子上安装了节点 v0.10.32(我的亚马逊实例上安装了节点 v0.10.33),但这不应该影响我的 Meteor 版本 1.2.1 的节点版本,据我所知,它有自己的节点版本。
mup 配置
我的 mup.json,其中 domain-name.com
指向我分配给实例的弹性 IP,如下所示:
{
// Server authentication info
"servers": [
{
"host": "domain-name.com",
"username": "ubuntu",
// or pem file (ssh based authentication)
"pem": "/Users/user-name/Meteor/pem-file-name.pem"
}
],
// Install MongoDB in the server, does not destroy local MongoDB on future setup
"setupMongo": true,
// WARNING: Node.js is required! Only skip if you already have Node.js installed on server.
"setupNode": true,
// WARNING: If nodeVersion omitted will setup 0.10.33 by default. Do not use v, only version number.
"nodeVersion": "0.10.33",
// Install PhantomJS in the server
"setupPhantom": false,
// Application name (No spaces)
"appName": "application-name",
// Location of app (local directory)
"app": "/Users/user-name/Meteor/application-name",
// Configure environment
"env": {
"PORT": 80,
"ROOT_URL": "http://domain-name.com",
"MONGO_URL": "mongodb://localhost:27017/clients-database"
},
// Meteor Up checks if the app comes online just after the deployment
// before mup checks that, it will wait for no. of seconds configured below
"deployCheckWaitTime": 30
}
在我的例子中,解决方案有两个。同样,我使用的是小型 Ubuntu Server 14.04 LTS (HVM),SSD 卷类型 - ami-3d50120d EC2 实例。
首先,我使用 mup 安装了节点版本 0.10.35,而不是 0.10.33。
https://github.com/meteor/meteor/blob/devel/History.md#upgraded-dependencies 我的印象是节点:0.10.33(从 0.10.29 开始)被 Meteor v1.0.2,2014 年 12 月 19 日使用。
其次,我更改了我的 AWS 安全组的 inbound/outbound 规则。我唯一添加的是 HTTP 入站和所有出站流量类型。
Versions/Background
我使用的是 meteor-up (mup) 的 0.7.6 版,Meteor 1.0.2.1,它使用了我读过的 Mongo v0.10.33。
我正在使用小型 Ubuntu Server 14.04 LTS (HVM),SSD 卷类型 - ami-3d50120d
AWS 上的 EC2 实例作为我的 Meteor 应用程序的目标。
我的域指向 ami-3d50120d
实例的弹性 IP(我在这里称之为 domain-name
)。
我可以在新 ami-3d50120d
上执行 mup setup
,我成功安装了 Mongo 和 Node,输出如下所示:
[domain-name.com] - Installing Node.js
[domain-name.com] ✔ Installing Node.js: SUCCESS
[domain-name.com] - Setting up Environment
[domain-name.com] ✔ Setting up Environment: SUCCESS
[domain-name.com] - Copying MongoDB configuration
[domain-name.com] ✔ Copying MongoDB configuration: SUCCESS
[domain-name.com] - Installing MongoDB
[domain-name.com] ✔ Installing MongoDB: SUCCESS
[domain-name.com] - Configuring upstart
[domain-name.com] ✔ Configuring upstart: SUCCESS
重新创建错误条件的步骤
- 创建了一个新的 Ubuntu 实例
- 分配了链接到我的域的弹性 IP
- 配置了我的 mup.json 文件(将在下面详细说明)
- 进行了 mup 设置 -> 一切都安装成功
- ssh 进入我的实例并执行
node -v
-> v0.10.33 - 回到我的 OSX 框 -> 做了一个
node -v
-> v0.10.32 - 是否部署了 mup -> 出现错误情况
错误条件
[domain-name.com] - Uploading bundle
[domain-name.com] ✔ Uploading bundle: SUCCESS
[domain-name.com] - Setting up Environment Variables
[domain-name.com] ✔ Setting up Environment Variables: SUCCESS
[domain-name.com] - Invoking deployment process
✘ Invoking deployment process: FAILED
-------STDERR----
Warning: Permanently added 'domain-name.com,55.555.5.555' (RSA) to the list of known hosts. sudo: node-gyp: command not found
-------STDOUT-----
=> re-installing binary npm module 'bcrypt' of package 'npm-bcrypt'
备注
我想我的 OSX 盒子上安装了节点 v0.10.32(我的亚马逊实例上安装了节点 v0.10.33),但这不应该影响我的 Meteor 版本 1.2.1 的节点版本,据我所知,它有自己的节点版本。
mup 配置
我的 mup.json,其中 domain-name.com
指向我分配给实例的弹性 IP,如下所示:
{
// Server authentication info
"servers": [
{
"host": "domain-name.com",
"username": "ubuntu",
// or pem file (ssh based authentication)
"pem": "/Users/user-name/Meteor/pem-file-name.pem"
}
],
// Install MongoDB in the server, does not destroy local MongoDB on future setup
"setupMongo": true,
// WARNING: Node.js is required! Only skip if you already have Node.js installed on server.
"setupNode": true,
// WARNING: If nodeVersion omitted will setup 0.10.33 by default. Do not use v, only version number.
"nodeVersion": "0.10.33",
// Install PhantomJS in the server
"setupPhantom": false,
// Application name (No spaces)
"appName": "application-name",
// Location of app (local directory)
"app": "/Users/user-name/Meteor/application-name",
// Configure environment
"env": {
"PORT": 80,
"ROOT_URL": "http://domain-name.com",
"MONGO_URL": "mongodb://localhost:27017/clients-database"
},
// Meteor Up checks if the app comes online just after the deployment
// before mup checks that, it will wait for no. of seconds configured below
"deployCheckWaitTime": 30
}
在我的例子中,解决方案有两个。同样,我使用的是小型 Ubuntu Server 14.04 LTS (HVM),SSD 卷类型 - ami-3d50120d EC2 实例。
首先,我使用 mup 安装了节点版本 0.10.35,而不是 0.10.33。
https://github.com/meteor/meteor/blob/devel/History.md#upgraded-dependencies 我的印象是节点:0.10.33(从 0.10.29 开始)被 Meteor v1.0.2,2014 年 12 月 19 日使用。
其次,我更改了我的 AWS 安全组的 inbound/outbound 规则。我唯一添加的是 HTTP 入站和所有出站流量类型。