無料ホスティング環境 meteor.com 関連コマンドを見てみる

# はじめに

Meteor Advent Calendar 2015 2日目の記事です！

この記事を読むと、Meteorが標準で用意している無料ホスティング環境`meteor.com`にデプロイする方法、アプリのログを見る方法、デプロイしたアプリを削除する方法がわかるようになります！ :smiley: 

# `meteor.com`関連コマンド早見表

```bash
# <APP_NAME>.meteor.comにデプロイする
meteor deploy <APP_NAME>.meteor.com

# デプロイしたアプリのログを表示する
meteor logs <APP_NAME>.meteor.com

# デプロイ済みのアプリ(サイト)一覧を表示する
meteor list-sites

# デプロイしたアプリを削除する
meteor deploy --delete <APP_NAME>.meteor.com

# 他のユーザーに指定のアプリの操作権限を与える
meteor authorized <APP_NAME>.meteor.com --add <USERNAME>

# 他のユーザーの指定のアプリの操作権限を削除する
meteor authorized <APP_NAME>.meteor.com --remove <USERNAME>

# 指定のアプリの権限を持つユーザー一覧を表示する
meteor authorized <APP_NAME>.meteor.com [--list]

# 現在ログイン中のMeteor Developer Accountを表示する
meteor whoami

# デプロイに使用するMeteor Developer Accountを変更する
meteor logout
meteor login
```

## Meteorについて

ご存じない方のために簡単に説明すると、[Meteor](https://www.meteor.com)はクライアントとサーバーのコードをJavaScriptだけで記述できる、フルスタックなJavaScript Webアプリケーションフレームワークです。

Meteorはクライアントとサーバーで共通のコードが使用できる仕組みがあり、DRYなコードが書けるため、すばやくWebアプリを開発することができます。詳しくは、以下の記事をご参照ください。

* [JavaScript超初心者向け Meteor メモ (1) - Qiita](http://qiita.com/tadfmac/items/a63bb85e5cfb12bbbfc8)
* [リアルタイムWebアプリケーションフレームワークMeteorについて - Qiita](http://qiita.com/m0a/items/cf7a57face7a0e264881)


## 無料ホスティング環境 meteor.com

Meteorには無料のホスティング環境が用意されており、自前でサーバーを用意しなくても、1コマンド叩くだけでMeteorアプリをデプロイし、インターネット上に公開することができます。

この記事では、Meteorをインストールすると、すぐ使用できる`meteor.com`関連のコマンドについて紹介します。

# meteor.com 関連コマンド

## `<APP_NAME>.meteor.com`にデプロイする

```bash
meteor deploy <APP_NAME>.meteor.com
```

`meteor deploy`は無料のホスティング環境`meteor.com`にアプリケーションをデプロイするコマンドです。

`<APP_NAME>`の部分はアプリ名で、 **デプロイ時に自由に決める**ことができます。
`<APP_NAME>`はユニークな文字列で、他のアプリですでに同じものが使われている場合は、別の文字列を指定して下さい。使用できる文字は英数字とハイフン(`-`)です。それからDNSサブドメインの制約に従います。

```bash:例
$ meteor create example-todos-app --example todos
$ cd example-todos-app
$ meteor deploy example-todos-1234.meteor.com
```

はじめてデプロイすると、メールアドレスとユーザー名、パスワードの入力が求められます。入力するとMeteor Developer Accountが作成されます(アカウントのメールアドレスやパスワードなどを変更する場合は[こちら](https://www.meteor.com/account-settings)から)。

デプロイが完了すると、`http://<APP_NAME>.meteor.com` でアクセスできるようになります。
また、SSLにも対応しており、`https://<APP_NAME>.meteor.com` のように、`http` -> `https` に変えるだけでSSLが有効になります。

## デプロイしたアプリのログを表示する

```bash
meteor logs <APP_NAME>.meteor.com
```

meteor.comのサーバーには直接ログインすることはできません。
アプリのログを表示するには、`meteor logs`を使用します。

```bash:例
$ meteor logs example-todos-1234.meteor.com
# ...(省略)...
[Wed Dec 02 2015 06:01:48 GMT+0000 (UTC)] INFO STATUS running -> waiting
[Wed Dec 02 2015 06:01:48 GMT+0000 (UTC)] ERROR Application crashed with code: 8
[Wed Dec 02 2015 06:04:43 GMT+0000 (UTC)] INFO STATUS killed -> sleeping
[Wed Dec 02 2015 06:04:43 GMT+0000 (UTC)] INFO STATUS waiting -> killed
```

エラーってました :cry: 

## デプロイ済みのアプリ(サイト)一覧を表示する

```bash
meteor list-sites
```

これまでデプロイしたアプリ(サイト)の一覧が表示されます。

```bash:例
$ meteor list-sites
example-todos-1234.meteor.com
example-app-foobar.meteor.com
example-localmart-555.meteor.com
```

## デプロイ済みの不要なアプリを削除する

```bash
meteor deploy --delete <APP_NAME>.meteor.com
```

meteor.comに間違えてデプロイしてしまったり、今は使用していないアプリがある場合は、このコマンドでアプリを削除しましょう。

```bash:例
$ meteor deploy --delete example-todos-1234.meteor.com
```

## 複数ユーザーで`<APP_NAME>.meteor.com`を管理する

```
meteor authorized <APP_NAME>.meteor.com --add <USERNAME>
```

`meteor authorized`は権限管理のコマンドです。
`--add`オプションで別のユーザーにアプリの操作権限を与えます。

```bash:例
$ meteor authorized example-todos-1234.meteor.com --add taro
```

逆に、権限を無くしたい場合は`--remove`オプションを指定します。

```bash:例
$ meteor authorized example-todos-1234.meteor.com --remove taro
```

どのユーザーに権限を与えているのかを確認するには、`--list`オプションを指定します。
なお、オプションを省略すると、`--list`の動作になります。

```bash:例
$ meteor authorized example-todos-1234.meteor.com --list
nobutakaoshiro
taro
```

## デプロイユーザーの変更

meteor.comへのデプロイには、Meteor Developer Accountを用います。
現在ログイン中のユーザー名を表示するには、以下のコマンドを実行します。

```
meteor whoami
```

また、ログインユーザーを変更するには、次のコマンドを実行します。

```
meteor logout
meteor login
```

## meteor.com を使用する際の注意点

無料ホスティング環境の`meteor.com`は、一定期間アクセスが無いとリセットされます。
そのため、あくまで重要なデータは置かないようにしましょう。
本番環境としては、Meteor Developer Group が運用している Meteor Galaxy というサービスを使用するか、自前のサーバーにMeteorアプリケーションをデプロイすることをおすすめします。

# おわりに

今回はじめてAdvent Calendarというものにチャレンジしてみました。
思っていたよりも時間がかかってしまったので、後半は結構適当です。。
余裕があれば他の日も記事を書いてみたいと思います :smiley: 

Meteor Advent Calendar 3日目は[@hkwid](http://qiita.com/hkwid)さんの「Meteorのセキュリティについて」です！

それでは、よいMeteorライフを！

# 参考情報

- [Meteor公式サイト](https://www.meteor.com)
- [Command line | Documentation - Meteor](http://docs.meteor.com/#/full/commandline)