Spending.jpクローンサイトの開発環境をAmazonLinux上に用意する

## 概要

このページは [GitHub - Spending.jp クローンサイトの立ち上げ手順 (OpenSpending 対応版) ] (http://qiita.com/hal_sk/items/d1cfa971fbbc09777d20) の開発環境を 
[Amazon EC2](http://aws.amazon.com/jp/ec2/) インスタンス上に用意する際の手順をまとめたものです。

なお今回使用した環境(AMI)は _amzn-ami-pv-2013.03.1.x86_64-ebs (ami-39b23d38)_ です





## どんな時に役立つ?

このページの内容は、以下のような方、もしくは場面に遭遇した場合に役立つかもしれません。

*  [2.Jekyll のセットアップ](http://qiita.com/hal_sk/items/d1cfa971fbbc09777d20#2-3) で戸惑っている
* 手元にすぐ使える開発環境が無い
* EC2ってお安いんでしょ、クローンサイト作る間だけなら数百円～数千円もかからないよね、よし使うか。 (注)個人差あります
* Spending.jpクローンサイト開発専用の開発環境を(クラウド上に)用意したい(よね!!)
* AmazonLinux上での `rbenv install -v 1.9.3-p194` ではまった、 `BUILD FAILED` 辛い

ただし、

* [Amazon EC2](http://aws.amazon.com/ec2/) はまぁすぐ使える状況、もしくは良い機会だから使い始めてみる
* OSはAmazonLinuxで良い

という条件をクリアしている必要があります。(記載内容の都合上)

ちなみに [Amazon EC2](http://aws.amazon.com/ec2/) についての説明や使用方法については記載しません。

Linuxってなに? SSHてなに? という状況かつWindowsが利用出来るのであれば、以下の手順をお勧めします。

* [Windows PC での「Spending.jp クローンサイトの立ち上げ手順 (OpenSpending 対応版)」実行マニュアル - Google Drive](https://docs.google.com/document/d/19HSh1b4SgT500AIOCRwpVhCmvP5LmC6ZrTEsYYL2VoU/)
* [Ruby - Windows 7/8 で Spending.jp クローンサイトを立ち上げるための Jekyll セットアップ手順 - Qiita [キータ]]
(http://qiita.com/moppem@github/items/48a40f4853f3be5932c4)




## 分岐点

[GitHub - Spending.jp クローンサイトの立ち上げ手順 (OpenSpending 対応版) ] (http://qiita.com/hal_sk/items/d1cfa971fbbc09777d20) を参考に作業を進めて行くと、人によっては [2.Jekyll のセットアップ](http://qiita.com/hal_sk/items/d1cfa971fbbc09777d20#2-3) が中盤のはまりポイント になるでしょう。

> この手順は、ローカル環境で動作確認をしながらカスタマイズをしたい方のための手順です。ローカル環境で確認をしなくても良い方、セットアップが難しい方はステップ3に進んでください。

ここですね。

ここで `ステップ3に進んでください` に従うこともお勧めですが、これだと全ての動作確認をGitHUB上で公開された環境下で行うことになります。
それでも特に問題ない場合は良いのですが、開発途中の妙な状態が丸見えになったり、ちょっとした誤記(xxxなものとか)もそのまま公開されてしまうため、それなりの変更を行うにはやはり個別の環境があった方が都合が良い、かな...

ということで環境を用意します。

> Spending.jp では Ruby 1.9.3-p194 を使っていますので、rbenv や rvm を使ってインストールしてください。以下では rbenv を使って、1.9.3-p194 がインストールされている状態から始めています。

はい。

では、次項で

> rbenv を使って、1.9.3-p194 がインストールされている状態

を用意します。





## EC2上でやること

AMI: amzn-ami-pv-2013.03.1.x86_64-ebs (ami-39b23d38)

起動直後を想定して記述します。

### EC2インスタンス起動

ここまで読み進めたのであればEC2インスタンス起動までは自力で解決出来ると思うので手順などは省略します。

おっと、セキュリティグループの設定では(22,)4000番を空けて置いて下さい。

### EC2インスタンス 起動したらやること

ユーザーの作成、ロケールの設定、などご自由にどうぞ。
ここでは割愛します。分からない場合は何もしなくてもOKです。

### 次にやること(というか本題)

```shell-session:
$ sudo yum install git gcc zlib-devel openssl-devel readline-devel
Loaded plugins: priorities, security, update-motd, upgrade-helper
amzn-main                                                                                                        | 2.1 kB     00:00     
amzn-updates                                                                                                     | 2.3 kB     00:00     
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package gcc.noarch 0:4.6.3-3.10.amzn1 will be installed
--> Processing Dependency: gcc46 = 4.6.3 for package: gcc-4.6.3-3.10.amzn1.noarch
---> Package git.x86_64 0:1.8.1.4-1.27.amzn1 will be installed

(略)

Transaction Summary
========================================================================================================================================
Install      23 Package(s)
Upgrade       3 Package(s)

Total download size: 39 M
Is this ok [y/N]: 
```

ここは `y` 一択です。

色々なモノがインストールされますが、数分?で無事終了するはずです。

余談ですが、私は`yum groupinstall "Development Tools"` などを行った後にrootと非rootで`rbenv install 1.9.3-p194`の結果が異なるなどで結構はまりました...






### rbenv のインストール

[sstephenson/rbenv](https://github.com/sstephenson/rbenv)にある [Basic GitHub Checkout](https://github.com/sstephenson/rbenv#basic-github-checkout) の通りでOKです。

今回は後で `rbenv install` を利用する為、 [ruby-build](https://github.com/sstephenson/ruby-build)というrbenvのプラグインが必要となります。[Installing as an rbenv plugin (recommended)](https://github.com/sstephenson/ruby-build#installing-as-an-rbenv-plugin-recommended) の通りインストールしておきます。
インストール後は `rbenv rehash`をお忘れなく。

途中でページを行き来することになるのでちょっとややこしいかもしれませんが、実行するコマンドだけを順番に並べると以下の通りです。

```:コマンドだけ列挙
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
exec $SHELL -l

git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
rbenv rehash
```

__rbenv__ と __ruby_build__ が正しくインストールされていれば `rbenv` と実行するだけでバージョンなどの確認が可能です。

```shell-session:
$ rbenv                                                                  
rbenv 0.4.0-49-g8b04303
Usage: rbenv <command> [<args>]

Some useful rbenv commands are:
   commands    List all available rbenv commands
   local       Set or show the local application-specific Ruby version
   global      Set or show the global Ruby version
   shell       Set or show the shell-specific Ruby version
   install     Install a Ruby version using the ruby-build plugin
   uninstall   Uninstall a specific Ruby version
   rehash      Rehash rbenv shims (run this after installing executables)
   version     Show the current Ruby version and its origin
   versions    List all Ruby versions available to rbenv
   which       Display the full path to an executable
   whence      List all Ruby versions that contain the given executable

See `rbenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/sstephenson/rbenv#readme
```
ここで、 `install` の行が表示されていない場合 __ruby_build__ をインストールし忘れているかもしれません。
また、 `rbenv` と実行してもバージョンなどの情報が表示されない場合何らかの問題が発生している可能性があります。
本項の最初からやり直してみて下さい。

### Rubyのインストール

問題が起きないように祈りつつ以下のコマンドを実行します。

```shell-session:
$ rbenv install -v 1.9.3-p194
```

*) 個人的に好きなので '-v' オプションを付与していますが無くても大丈夫です。お好みでどうぞ。

#### 成功ルート

暫く(数十分?)時間がかかりますが、Rubyのインストールが正しく終了した場合、最後に以下の行が出力されます。

```shell-session:
Installed ruby-1.9.3-p194 to /home/ec2-user/.rbenv/versions/1.9.3-p194
```
ここまで問題なくすすめば後は問題ないはずです。

#### 失敗ルート...

最後に前述の出力がなく、ちょっと上のほうに

> ```
> BUILD FAILED
> ```

と出力されている場合Rubyのインストールが失敗しています。

なんとか解決を試みるか、EC2インスタンスを新規に起動して再度最初から試してみるなどしてみて下さい。

再度 `rbenv install` を試みる場合は、

```
$ rbenv install -f -v 1.9.3-p194
```
として強制的にインストールするか、もしくは

```
$ rbenv uninstall 1.9.3-p194
```

と、一度アンインストールしてから再度インストールを試みて下さい。


__ここではまると長くなるので諦めるか最初からやり直してみることをお勧めします。__


### インストールされているRubyの状況を確認

Rubyのインストールが正しく終了した場合、以下のようにインストールされたバージョンを確認出来ます。

```shell-session:
$ rbenv versions
* system (set by /ec2-user/.rbenv/version)
  1.9.3-p194
```

これは確認の為の手順なので特に実行しなくても大丈夫です。

### おわり

おわり、というよりは

> 1.9.3-p194 を利用し、必要なライブラリをインストールします。
> (bundler のインストールと、bundle install コマンドの実行）

[2.Jekyll のセットアップ](http://qiita.com/hal_sk/items/d1cfa971fbbc09777d20#2-3)

に戻って手順通りに進めれば問題ないと思います。





## 補足

### AMI

AMI: amzn-ami-pv-2013.03.1.x86_64-ebs (ami-39b23d38)

```shell-session:
PROMPT>ec2-describe-images ami-39b23d38
IMAGE   ami-39b23d38    amazon/amzn-ami-pv-2013.03.1.x86_64-ebs amazon  available       public      x86_64      machine aki-44992845                    ebs     paravirtual     xen
BLOCKDEVICEMAPPING      EBS     /dev/sda1               snap-826a82a0   8       true    standard
```
### インスタンスタイプ

__t1.micro__ で十分
Rubyのビルドがちょっと遅いけど...

### 関連記事

 [GitHub - Spending.jp クローンサイトの立ち上げ手順 (OpenSpending 対応版) ] (http://qiita.com/hal_sk/items/d1cfa971fbbc09777d20)