herokuのstack update(Cedar-10 to Cedar-14)
概要
heroku に、アプリデプロイしようと思ったら、
「お前のアプリ、Cedar-10で、deprecatedだからだめ」
と言われまして、アップデートしました手順です。
基本的にはここに書いてあることを従順にこなしただけ。
ざっくりフロー
- heroku toolbeltのインストール
- Cedar-14のお試し環境でアプリを動かしてみる
- 大丈夫なので本番に反映する
という流れで。
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
でデプロイして確認しました。
ふむふむ。
ちゃんと Cedar-14になっておるー。
終わり。