Javascript Fullstack framework Meteor。開発時はめっちゃ便利なんですが、運用環境へのDeployがむっちゃ大変--;。そういう方向けのシンプルなDeploy方法です。
1 はじめに
Amazon EC2のUbuntu環境へMac book ProからDeployする方法です。
MeteorのDeploy方法はMeteor DevelopersのDeployment and Monitoringを見ると色々とありますが、この中でMeteor Up(mup)を利用する方法を説明します。
このツールは、Deploy先のクラウド環境に、Meteorアプリケーションの実行用仮想化環境をDockerを用いて自動構築しその上にアプリケーションをDeployしてくれます。
ですので、Deploy先の環境でDockerを利用されている方はご注意ください。
2 準備
以下、全てmacで実行します。
2.1 mupのインストール
利用するmupは、Meteorのバージョンによって異なります。
(1) The mupx branch (best for pre-Meteor 1.4)
(2) The kadirahq/mup fork (best for Meteor 1.4 or higher)
今回は、Meteor 1.4以上なので、(2)を利用します。
mupをインストール
npm install -g mup
次に、Meteorアプリのフォルダに移動".deploy"フォルダを作ってその下で、mup initを実行。初期ファイルが生成されます。
cd my-app-folder
mkdir .deploy
cd .deploy
mup init
続いて、自動生成された、mup.jsを以下の通り編集。フルパス指定が必要となる癖のある設定ファイルなので注意してください。
module.exports = {
servers: {
one: {
host: 'a.b.c.d', // awsのpublic ip
username: 'ubuntu',
pem:"/Users/xxx/xxx.pem" // ssh接続で利用するpemのフルパス
}
},
meteor: {
name: 'my-app-folder',
path: '/Users/xxx/my-app-folder', //アプリのフルパス
servers: {
one: {}, two: {}, three: {} // list of servers to deploy, from the 'servers' list
},
buildOptions: {
serverOnly: true,
debug: true,
// cleanAfterBuild: true, // default
buildLocation: '/Users/xxx/my-app-folder', // defaults to /tmp/<uuid> //デプロイ用テンポラリファイル生成先のフルパス
},
env: {
ROOT_URL: 'http://a.b.c.d',
MONGO_URL: 'mongodb://localhost/meteor'
},
deployCheckWaitTime: 60 //default 10
},
mongo: { // optional
oplog: true,
port: 27017,
servers: {
one: {},
},
},
};
設定が終われば下記を実行します。
mup setup
すると、mupがAWS EC2へSSH接続し、DockerのインストールからMeteorの基本環境まで自動セットアップします。処理が完了すると、以下を実行。
mup deploy
Meteorのアプリビルドが開始され、ビルド後自動的にアプリがEC2へアップロードされ起動します。そのあと、ブラウザからhttp://a.b.c.d
にアクセスするとアプリの画面が見られるはずです。
なお、アプリはport 80番で公開されるので、ご注意ください。
アプリの停止は、mup stop
、起動は、mup start
です。