だいたいAWSのドキュメントどおりにできたが、メモ。
とりあえず、Railsアプリケーションを作る。
Pumaで稼働させたいなら、GemfileにPumaを加えておく。
git を初期化して、commit する。
Beanstalkへのデプロイの準備
Beanstalkの操作はAWSのコンソールでもできるが、eb
コマンドが楽。
eb
コマンドをインストールしていない場合、macでは brew install awsebcli
でインストールできる。
eb init
コマンドで作成しているアプリにbeanstalkへのデプロイを初期化する。
$ eb init
Select a default region
1) us-east-1 : US East (N. Virginia)
2) us-west-1 : US West (N. California)
3) us-west-2 : US West (Oregon)
4) eu-west-1 : EU (Ireland)
5) eu-central-1 : EU (Frankfurt)
6) ap-southeast-1 : Asia Pacific (Singapore)
7) ap-southeast-2 : Asia Pacific (Sydney)
8) ap-northeast-1 : Asia Pacific (Tokyo)
9) ap-northeast-2 : Asia Pacific (Seoul)
10) sa-east-1 : South America (Sao Paulo)
11) cn-north-1 : China (Beijing)
(default is 3): 8
Select an application to use
1) an_application
2) [ Create new Application ]
(default is 2): 1
It appears you are using Ruby. Is this correct?
(y/n): y
Select a platform version.
1) Ruby 2.2 (Puma)
2) Ruby 2.1 (Puma)
3) Ruby 2.0 (Puma)
4) Ruby 2.2 (Passenger Standalone)
5) Ruby 2.1 (Passenger Standalone)
6) Ruby 2.0 (Passenger Standalone)
7) Ruby 1.9.3
(default is 1): 1
Do you want to set up SSH for your instances?
(y/n): y
Select a keypair.
1) a_key_pair
2) [ Create new KeyPair ]
(default is 2): 2
環境の作成
環境とはデプロイ先のことと理解すればいいと思う。
環境名を指定しなければ、デフォルトで アプリケーション名-devがつく。
-s
をつけると、auto scale は設定されずスタンドアローンとなる。
つけない場合は1〜4台でauto scaleが設定され、ELBも設定される。
また、インスタンスタイプを指定しないとt2.microがデフォルトで設定される。
$ eb create -s <環境名>
実行すると暫く起動までに時間がかかる。タイムアウト時間を長めに設定しておく例を見かけるが、設定しなくても特に問題なかった。
eb create
の前に少なくとも一度はコミットしておく必要がある。
Railsをproductionモードでデプロイする場合には環境変数 SECRET_KEY_BASE を設定する必要がある。SECRET_KEY_BASEの値は次のコマンドで得られる。
$ bundle exec rake secret
次のように --envvars
オプションでcreateコマンドで設定することもできる。
$ eb create <環境名> --envvars SECRET_KEY_BASE=7f81eb591dda7cee92aeeea9866eb0c7...(略)
createに設定しなかった場合には AWSのbeanstalkのコンソールのUIでも設定できる。
環境の[設定]-[ソフトウェア設定]を開き、新たに環境変数 SECRET_KEY_BASE を追加して bundle exec rake secret
で得られた文字列をその値として設定する。
デプロイ先は /var/app/current となる。
デプロイした環境にアクセスする
次のコマンドでブラウザが起動して表示される。
eb open
Railsアプリケーションを更新する
ソースを変更して、それを再デプロイしたい場合、gitにコミットして次のコマンドで、デプロイできる。
$ eb deploy
環境を破棄する
作成されてたEC2インスタンスがterminateされる。
stopは以前はできたっぽいが今はできない...。
また、後で使いたい場合も一旦terminateさせるしかないのかな...。
eb terminate
感想
一度使うと、もう自分でEC2にrubyをインストールしてとかする気がなくなるほど便利。