Comparing version 0.1.13 to 0.2.0
@@ -25,2 +25,5 @@ { | ||
//application name | ||
"appName": "meteor", | ||
//location of app (local directory) | ||
@@ -27,0 +30,0 @@ "app": "/path/to/the/app", |
@@ -47,3 +47,3 @@ var nodemiral = require('nodemiral'); | ||
Actions.prototype.setup = function() { | ||
var taskList = taskLists.setup(this.config.setupMongo, this.config.setupNode, this.config.nodeVersion, this.config.setupPhantom); | ||
var taskList = taskLists.setup(this.config.setupMongo, this.config.setupNode, this.config.nodeVersion, this.config.setupPhantom, this.config.appName); | ||
taskList.run(this.sessions); | ||
@@ -58,2 +58,3 @@ }; | ||
var deployCheckWaitTime = this.config.deployCheckWaitTime; | ||
var appName = this.config.appName; | ||
@@ -88,3 +89,3 @@ console.log('Bundling Started: ' + this.config.app); | ||
} else { | ||
var taskList = taskLists.deploy(bundlePath, self.config.env, deployCheckWaitTime); | ||
var taskList = taskLists.deploy(bundlePath, self.config.env, deployCheckWaitTime, appName); | ||
taskList.run(self.sessions, afterCompleted); | ||
@@ -109,3 +110,3 @@ } | ||
Actions.prototype.reconfig = function() { | ||
var taskList = taskLists.reconfig(this.config.env); | ||
var taskList = taskLists.reconfig(this.config.env, this.config.appName); | ||
taskList.run(this.sessions); | ||
@@ -116,3 +117,3 @@ }; | ||
var tailOptions = process.argv.slice(3).join(" "); | ||
var command = 'sudo tail ' + tailOptions + ' /var/log/upstart/meteor.log'; | ||
var command = 'sudo tail ' + tailOptions + ' /var/log/upstart/' + this.config.appName + '.log'; | ||
@@ -119,0 +120,0 @@ this.sessions.forEach(function(session) { |
@@ -47,2 +47,5 @@ var cjson = require('cjson'); | ||
mupJson.meteorBinary = (mupJson.meteorBinary)? getCanonicalPath(mupJson.meteorBinary): 'meteor'; | ||
if (typeof mupJson.appName === "undefined") { | ||
mupJson.appName = "meteor"; | ||
} | ||
@@ -49,0 +52,0 @@ return mupJson; |
@@ -8,3 +8,3 @@ var nodemiral = require('nodemiral'); | ||
exports.setup = function(installMongo, setupNode, nodeVersion, setupPhantom) { | ||
exports.setup = function(installMongo, setupNode, nodeVersion, setupPhantom, appName) { | ||
var taskList = nodemiral.taskList('Setting Up'); | ||
@@ -29,3 +29,6 @@ | ||
taskList.executeScript('setting up environment', { | ||
script: path.resolve(SCRIPT_DIR, 'setup-env.sh') | ||
script: path.resolve(SCRIPT_DIR, 'setup-env.sh'), | ||
vars: { | ||
appName: appName | ||
} | ||
}); | ||
@@ -47,3 +50,6 @@ | ||
src: path.resolve(TEMPLATES_DIR, 'meteor.conf'), | ||
dest: '/etc/init/meteor.conf' | ||
dest: '/etc/init/' + appName + '.conf', | ||
vars: { | ||
appName: appName | ||
} | ||
}); | ||
@@ -54,8 +60,8 @@ | ||
exports.deploy = function(bundlePath, env, deployCheckWaitTime) { | ||
var taskList = nodemiral.taskList("Deploying App"); | ||
exports.deploy = function(bundlePath, env, deployCheckWaitTime, appName) { | ||
var taskList = nodemiral.taskList("Deploying " + appName + " App"); | ||
taskList.copy('uploading bundle', { | ||
src: bundlePath, | ||
dest: '/opt/meteor/tmp/bundle.tar.gz' | ||
dest: '/opt/' + appName + '/tmp/bundle.tar.gz' | ||
}); | ||
@@ -65,5 +71,6 @@ | ||
src: path.resolve(TEMPLATES_DIR, 'env.sh'), | ||
dest: '/opt/meteor/config/env.sh', | ||
dest: '/opt/' + appName + '/config/env.sh', | ||
vars: { | ||
env: env || {} | ||
env: env || {}, | ||
appName: appName | ||
} | ||
@@ -75,3 +82,6 @@ }); | ||
script: path.resolve(TEMPLATES_DIR, 'deploy.sh'), | ||
vars: {deployCheckWaitTime: deployCheckWaitTime || 10} | ||
vars: { | ||
deployCheckWaitTime: deployCheckWaitTime || 10, | ||
appName: appName | ||
} | ||
}); | ||
@@ -82,3 +92,3 @@ | ||
exports.reconfig = function(env) { | ||
exports.reconfig = function(env, appName) { | ||
var taskList = nodemiral.taskList("Updating Configurations"); | ||
@@ -88,5 +98,6 @@ | ||
src: path.resolve(TEMPLATES_DIR, 'env.sh'), | ||
dest: '/opt/meteor/config/env.sh', | ||
dest: '/opt/' + appName + '/config/env.sh', | ||
vars: { | ||
env: env || {} | ||
env: env || {}, | ||
appName: appName | ||
} | ||
@@ -93,0 +104,0 @@ }); |
{ | ||
"name": "mup", | ||
"version": "0.1.13", | ||
"version": "0.2.0", | ||
"description": "Production Quality Meteor Deplouments", | ||
@@ -5,0 +5,0 @@ "dependencies": { |
@@ -21,2 +21,3 @@ # Meteor UP | ||
- [Reconfiguring & Restarting](#reconfiguring--restarting) | ||
- [Muliple Deployments](#multiple-deployments) | ||
@@ -31,2 +32,3 @@ ### Features | ||
* Access, logs from the terminal (supports log tailing) | ||
* Support for multiple meteor deployments | ||
@@ -89,2 +91,5 @@ ### Server Configuration | ||
//application name | ||
"appName": "meteor", | ||
//location of app (local directory) | ||
@@ -115,10 +120,10 @@ "app": "/Users/arunoda/Meteor/my-app", | ||
This is how Meteor Up will configure the server for you. This information will help you to customize server for your needs. | ||
This is how Meteor Up will configure the server for you based on the given appName or using "meteor" as default appName. This information will help you to customize server for your needs. | ||
* your app is lives in `/opt/meteor/app` | ||
* mup uses upstart with a config file at `/etc/init/meteor.conf` | ||
* you can start and stop the app with upstart: `start meteor` and `stop meteor` | ||
* your app is lives in `/opt/<appName>/app` | ||
* mup uses upstart with a config file at `/etc/init/<appName>.conf` | ||
* you can start and stop the app with upstart: `start <appName>` and `stop <appName>` | ||
* logs are located at: `/var/log/upstart/app.log` | ||
* MongoDB installed and bind to the local interface (cannot access from the outside) | ||
* `meteor` is the name of the database | ||
* `<appName>` is the name of the database | ||
@@ -168,1 +173,13 @@ For more information see [`lib/taskLists.js`](https://github.com/arunoda/meteor-up/blob/master/lib/taskLists.js). | ||
This will also restart the app, so you can use it for that purpose even if you didn't change the configuration file. | ||
### Multiple Deployments | ||
Meteor Up supports multiple deployments into a single server. Meteor up only does the deployment; if you need to configure subdomains, you need to manually setup a reverse proxy yourself. | ||
Let's assume, we need to deploy a production and the staging versions of the app into the same server. Production App runs on the PORT 80 and staging app run on PORT 8000. | ||
We need to have two seperate Meteor Up Projects. For that create two directories and initialize Meteor UP and add neccessory configurations. | ||
In the staging configurations add a field called `appName` with the value `staging` into the `mup.json`. You can add any name you prefer instead of `staging`. Since we are running our staging app in port 8000, add an environment variable called `PORT` with the value 3000. | ||
Now setup both projects and deploy as you need. |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
23720
331
180