xengineer’s diary

結果、メモ的な内容になっています。

herokuのstack update(Cedar-10 to Cedar-14)

概要

heroku に、アプリデプロイしようと思ったら、

「お前のアプリ、Cedar-10で、deprecatedだからだめ」

と言われまして、アップデートしました手順です。

基本的にはここに書いてあることを従順にこなしただけ。

devcenter.heroku.com

ざっくりフロー

  1. heroku toolbeltのインストール
  2. Cedar-14のお試し環境でアプリを動かしてみる
  3. 大丈夫なので本番に反映する

という流れで。

heroku toolbeltのインストール

まず、僕の環境が今回は、Ubuntu14.04.1 LTSなので、

Heroku Toolbeltこちらからインストールします。

$ wget -O- https://toolbelt.heroku.com/install-ubuntu.sh | sh

これ実行したらおっけー。

ちなみに、実行すると、↓↓に通信いきます。

http://heroku-toolbelt.s3.amazonaws.com/apt/InRelease

で、社内からの環境ではセキュリティソフトに阻まれてインストールできなかったので、

インフラの方にお願いして、通るようにしてもらってからのスタートでした。

で、まぁインストールは終了、と。

Cedar-14のお試し環境でアプリを動かしてみる

今回はここが一番面倒。

$ heroku create --remote heroku-cedar-14 --stack cedar-14 cedar-14-app

heroku createコマンドは、herokuのアプリを作成してくれるコマンド。

このコマンドでやってることは、

  • git remoteに、heroku-cedar-14を登録する
  • stackは、cedar-14を指定
  • cedar-14-appっていうアプリをherokuに作る

です。

で、実際実行したら、、、こうなった。

$ heroku create --remote heroku-cedar-14 --stack cedar-14 cedar-14-app
 !    Name is already taken

Name is already taken??

なぜだ。作った覚えはない。しかもherokuのダッシュボード上にもそんなアプリはないし。

んー、よくわからん・・・とりあえず違う名前でやってみる。

$ heroku create --remote heroku-cedar-14 --stack cedar-14 cedar-14-app-root4
Creating cedar-14-app-root4... done, stack is cedar-14
http://cedar-14-app-root4.herokuapp.com/ | git@heroku.com:my-app.git
Git remote heroku-cedar-14 added

ほう。動いた。ダッシュボード上もできてる。

この、cedar-14-app-root4っていうのを、cedar-14のお試し環境にして、

ここに、cedar-10で動いてるアプリをデプロイして動作確認してみる流れ。

ではでは、既存アプリをcloneしてデプロイ。

$ git clone <既存アプリ>
$ cd <既存アプリ>
$ git push heroku-cedar-14 master
Counting objects: 6079, done.
Compressing objects: 100% (1881/1881), done.
Writing objects: 100% (6079/6079), 985.74 KiB | 0 bytes/s, done.
Total 6079 (delta 4285), reused 5835 (delta 4064)
remote: Compressing source files... done.
remote: Building source:
remote:
..........
...中略...
..........
remote: -----> Compressing... done, 33.5MB
remote: -----> Launching... done, v5
remote:        https://cedar-14-app-root4.herokuapp.com/ deployed to Heroku ★ここにデプロイ先URLが書いてあるよ
remote:
remote: Verifying deploy... done.
To https://git.heroku.com/cedar-14-app-root4.git
 * [new branch]      master -> master

な感じで、

https://cedar-14-app-root4.herokuapp.com/にアクセス。

あれ?エラー画面。ぬぬぬ・・・。

そうか。herokuの環境設定、やってない。だわ。

heroku環境設定

既にcedar-10で動いてる環境があるので、そこからコピる。

まずは、cedar-10の環境設定を出力。

$ heroku config --app cedar-10-app
=== cedar-10-app Config Vars
AWS_ACCESS_KEY_ID:        xxxxxxxxxxx
AWS_SECRET_ACCESS_KEY:    XXXXXXXXXXXXX
DATABASE_URL:             postgres://xxxxx:yyyyy@ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com:XXXX/yyyyyy
LANG:                     en_US.UTF-8
PAPERCLIP_HASH_SECRET:    yyyyyyyyyyyyyyyy
RACK_ENV:                 production
RAILS_ENV:                production
RAILS_SERVE_STATIC_FILES: enabled
S3_BUCKET_NAME:           xxxxxxxxxxxx
SECRET_KEY_BASE:          yyyyyyyyyyyyyy

僕はこれを、GUIからぽちぽち入力しました。

よしよし。

ではアクセス!

・・・まだエラー。

んー、↓↓コマンヅでログを確認してみた。

$ heroku logs -n 200
$ heroku logs -t

そうか。rake db:migrate、やってない。だわ。

↓↓実行。

$ heroku run rake db:migrate

これでOK!!!!

https://cedar-14-app-root4.herokuapp.com/

にアクセスしたら、いけましたーー!!!

動作確認も無事完了したので、次は本番反映。

大丈夫なので本番に反映する

公式Webにもある通り、下記コマンドを実行しますよ、と。

$ heroku stack:migrate cedar-14 -a cravitee
Stack set. Next release on cravitee will use cedar-14.
Run `git push heroku master` to create a new release on cedar-14.

ふむふむ。次のリリースからは、cedar-14になるよ。

次のリリースを作って、cedar-14を試すために、git push heroku masterを実行してみ、と。

変更することがない方は、下記コマンドで空っぽコミットを・・・

 git commit --allow-empty -m "Upgrading to Cedar-14"
[master xxxxxx] Upgrading to Cedar-14

からのこれ。

$ git push heroku master

僕は、普段toolbeltからやってないので、普通にPushして、

github → wercker → heroku

でデプロイして確認しました。

ふむふむ。

f:id:xengineer:20151106182214p:plain

ちゃんと Cedar-14になっておるー。

終わり。