カテゴリー : Heroku

[Heroku] サブディレクトリだけを deploy する

github のリポジトリを節約するために、アプリと API のリポジトリを1つにまとめて管理したいことがあると思います。

$ ls
android
api
ios

git subtree push を利用すると api ディレクトリ以下だけを Heroku に deploy できます。

git subtree push --prefix api/ heroku master

以上です。

参考情報

[Heroku] cedar-14 stack に migrate

手持ちの Heroku アプリを cedar-14 スタックにマイグレートしました。

cedar-14 スタックに変更

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

git push するために空 commit

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

Heroku へ deploy

$ git push heroku master

stack を確認

$ heroku stack
=== your-app-name Available Stacks
* cedar-14

手軽にマイグレートできる Heroku は素晴らしい。

Heroku コマンドのバージョンアップ

cedar-14 stack に変更しようとしたら stack:set がないというエラーが出たので heroku コマンドをバージョンアップしました。

エラーメッセージ

$ heroku stack:set cedar-14 -a your-app-name
 !    `stack:set` is not a heroku command.
 !    See `heroku help` for a list of available commands.

heroku コマンドのバージョン確認

$ heroku version
heroku-toolbelt/3.7.2 (x86_64-darwin10.8.0) ruby/1.9.3

heroku コマンドのバージョンアップ

$ heroku update
Installing Heroku Toolbelt v4... done.
For more information on Toolbelt v4: https://github.com/heroku/heroku-cli
Setting up node-v4.1.0...done
Installing core plugins heroku-apps, heroku-fork, heroku-git, heroku-local, heroku-run, heroku-status... done
Your version of git is 1.8.4.3. Which has serious security vulnerabilities.
More information here: https://blog.heroku.com/archives/2014/12/23/update_your_git_clients_on_windows_and_os_x
Setting up node-v4.1.0...done
Updating plugins... done

使えないコマンドでエラーが発生するというようなことが起こらないと heroku コマンドのバージョンアップなんて滅多にしないですよね。

[Heroku] CloudFlareを利用したルートドメインの設定方法

“Action Required: Legacy Routing End of Life” というメールを受信している方も多いと思いますが、DNS の Aレコードで Heroku のレガシーな IP アドレスを指定するルーティングの方法が廃止されました。

僕は、Heroku の独自ドメインの設定方法という記事で書いているようなレガシールーティングを使って、Heroku 上に bakorer.com という About me ページを運用していました。レガシールーティングが廃止されるということで、別の方法でルートドメインの設定をする必要がでてきました。

Heroku はドキュメントが手厚く、カスタムドメインを設定する方法は公式サイトに書いてあります。

Custom Domains | Heroku Dev Center

外部サービスを利用する方法がいくつか存在するのですが、今回はその中の1つである CloudFlare を使ってルートドメインを Heroku にホスティングしているアプリに割り当ててみました。

CNAME Flattening: RFC-compliant support for CNAME at the root – CloudFlare Support

CloudFlare に登録する

まず、CloudFlare のアカウントを作成して下さい。

Home | CloudFlare | The web performance & security company

CloudFlare にウェブサイトを追加する

まず、設定したいドメインを追加します。

1-add-a-website-CloudFlare

CloudFlare でDNSレコードを設定する

追加したドメインの現状のDNSレコードが一覧表示されます。ここで編集、削除、追加などできます。

既存のDNSレコードから bakorer.com 向けの a レコードを削除して、代わりに CNAME レコードに Heroku でホスティングしているアプリのサブドメイン bakorer-com.herokuapp.com を指定します。(一番上)

2-Configure-DNS-CloudFlare

CloudFlare のプラン選択

プラン選択です。SSL を使わなくていいなら、DNS の設定だけだと無料で使えるようなので、Free プランを選択します。無料バンザイ!

3-Choose-settings-CloudFlare

CloudFlare のプラン選択

最後にネームサーバーの更新が必要です。

4-Update-your-DNS-CloudFlare

切替前は、ムームードメインのDNSサーバーを利用していて dns01.muumuu-domain.com. dns02.muumuu-domain.com. を確認できます。

dig bakorer.com NS
 
; <<>> DiG 9.8.3-P1 <<>> bakorer.com NS
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58368
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 2
 
;; QUESTION SECTION:
;bakorer.com.			IN	NS
 
;; ANSWER SECTION:
bakorer.com.		2317	IN	NS	dns01.muumuu-domain.com.
bakorer.com.		2317	IN	NS	dns02.muumuu-domain.com.
 
;; ADDITIONAL SECTION:
dns01.muumuu-domain.com. 284	IN	A	157.7.180.150
dns02.muumuu-domain.com. 1207	IN	A	182.48.37.179
 
;; Query time: 30 msec
;; SERVER: 192.168.0.1#53(192.168.0.1)
;; WHEN: Sat Sep 20 23:31:11 2014
;; MSG SIZE  rcvd: 163

それをムームードメインの管理画面から下記のように「GMOペパボ以外のネームサーバーを使用する」の項目から、lina.ns.cloudflare.com. と jerry.ns.cloudflare.com. を設定します。

ネームサーバ設定変更   ムームードメイン

設定後、dig コマンドでネームサーバーが切り替わっていることを確認します。

dig bakorer.com NS
 
; <<>> DiG 9.8.3-P1 <<>> bakorer.com NS
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58368
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 2
 
;; QUESTION SECTION:
;bakorer.com.			IN	NS
 
;; ANSWER SECTION:
bakorer.com.		3600	IN	NS	lina.ns.cloudflare.com.
bakorer.com.		3600	IN	NS	jerry.ns.cloudflare.com.
 
;; ADDITIONAL SECTION:
lina.ns.cloudflare.com.	919	IN	A	173.245.58.187
jerry.ns.cloudflare.com. 3507	IN	A	173.245.59.182
 
;; Query time: 389 msec
;; SERVER: 192.168.0.1#53(192.168.0.1)
;; WHEN: Sun Sep 21 00:14:42 2014
;; MSG SIZE  rcvd: 114

最後に、CloudFlare のページからもネームサーバーが切り替わったことが確認できます。

5-my-websites-CloudFlare

上画像の状態から、Re-test をクリックして下記のように切り替わればネームサーバーの設定は完了です。

6-my-websites-CloudFlare

CloudFlare を使うことでカンタンに Heroku でルートドメインを設定することができました。CloudFlare は CDN の無料枠もあるようなので、今度はそちらの機能も活用していきたいと思います。


参考情報

CloudFlare使ってHerokuでルートドメイン使おう – PILOG

[Heroku] Action Required: Legacy Routing End of Life

Heroku で About me サイト http://bakorer.com/ を動かしているのですが、DNS の Aレコードで Heroku のレガシーな IP アドレスを指定するルーティングの方法が 2014/09/22 で廃止されるそうです。bakorer.com のようなネイキッドドメインを Heroku で使うにはひと工夫しないといけなくなりました。

CDN サービス「CloudFlare」を使うと CNAME flattening を実現できるそうなので、詳しくは下記の記事を参考に対応したいと思います。

妻のパン屋のwebサイトをいろいろ更新した話 ~Rails 4アップデートとかサイトの高速化とか~ – give IT a try

以下、Heroku からの「Action Required: Legacy Routing End of Life」お知らせメールです。

heroku
Hi there,

This is a reminder that Heroku is turning off the legacy “.heroku.com” routing path on September 22nd 2014. This is part of an effort to to standardize on a single, fast, highly available and scalable routing stack for all customers.

You are receiving this email because one or more of your apps is still using the legacy routing and you must take action to ensure continued operation of those apps after the September 22nd deadline.

The following domains which are still receiving legacy traffic are:

bakorer.com

Also, you may use the Legacy Routing Analyzer to see which of your apps are affected. Login to your Heroku account and click here.

We recommend that you migrate those affected apps away from the legacy routing infrastructure as soon as possible.

For instructions on how to make the move, please visit this Heroku Dev Center article.

We know that changing DNS settings for live apps requires care and planning, and we will assist with guidance and advice for you to make the necessary updates. If you have any questions about this topic, feel free to open a support ticket.

We will continue to send reminders in the coming months to owners and collaborators on apps that continue to use the legacy routing infrastructure.

Cheers,
Heroku team

[Heroku] ログ管理アドオン「Papertrail」

Heroku でも使えるログ管理アドオン「Papertrail」を導入してみました。

Papertrail | Add-ons | Heroku

PapertrailをHerokuアプリへ追加

% heroku addons:add papertrail
Adding papertrail on your-app... done, v8 (free)
Welcome to Papertrail. Questions and ideas are welcome (support@papertrailapp.com). Happy logging!
Use `heroku addons:docs papertrail` to view documentation.

Papertrailのドキュメント確認

heroku addons:docs papertrail でドキュメントをブラウザで開けるので、ここを読む。

% heroku addons:docs papertrail
Opening papertrail docs... done

Papertrail | Heroku Dev Center

Papertrailのダッシュボードを開く

下記のコマンドで、Papertrailのダッシュボードを開いて、ログを確認することができます。

% heroku addons:open papertrail
Opening papertrail:choklad for your-app... done

カンタンにログ管理の機能を本番環境へ導入できるのは助かります。


参考情報

herokuのログ管理はPapertrailがいい感じ – Oh! My! Enter! ~バッチを起動しようと勢いよくキーを叩いたら、それはシフトキーだった~

[Heroku] master以外のbranchをpushする方法

Heroku に master ブランチ以外のブランチをプッシュする方法を調べたのでメモ。

git push heroku branch_name:master

これだけでOKみたいです。

[Heroku] 独自ドメインの設定方法

Heroku で、独自ドメインを設定する方法をメモ。

前提

bakorer.com と www.bakorer.com の接続先を bakorer-com.herokuapp.com に設定します。

DNSの設定

root domain のAレコードに 75.101.163.44, 75.101.145.87, 174.129.212.2 を追加します。

ホスト名: (空欄).bakorer.com
TYPE: A
VALUE: 75.101.163.44
優先: (空欄)
状態: 有効
 
ホスト名: (空欄).bakorer.com
TYPE: A
VALUE: 75.101.145.87
優先: (空欄)
状態: 有効
 
ホスト名: (空欄).bakorer.com
TYPE: A
VALUE: 174.129.212.2
優先: (空欄)
状態: 有効

サブドメイン www.bakorer.com は、CNAME で blog-hirotaka.heroku.com を設定します。

ホスト名: www.bakorer.com
TYPE: CNAME
VALUE: blog-hirotaka.heroku.com
優先: (空欄)
状態: 有効

host コマンドで確認します。

% host bakorer.com
bakorer.com has address 75.101.145.87
bakorer.com has address 174.129.212.2
bakorer.com has address 75.101.163.44
% host www.bakorer.com
www.bakorer.com is an alias for bakorer-com.herokuapp.com.
bakorer-com.herokuapp.com has address 23.23.204.240

Heroku の設定

% heroku domains:add bakorer.com
% heroku domains:add www.bakorer.com
% heroku domains
=== bakorer-com Domain Names
bakorer-com.herokuapp.com
bakorer.com
www.bakorer.com

以上です。

[参考]

Herokuで独自ドメインを割り当てる(お名前.com) #heroku #lokka – Qiita [キータ]

Herokuアプリに独自ドメインを割り当てる(ムームードメインの場合) – アインシュタインの電話番号☎

[Heroku] 静的ページをアップロードする方法

Heroku に、静的ページをアップロードする方法をメモ。

ほぼ、公式ドキュメント通り。

Creating Static Sites in Ruby with Rack | Heroku Dev Center

% mkdir -p bakorer-com/public/{images,js,css}
% touch bakorer-com/{config.ru,public/index.html}
% cd bakorer-com && bundle init
Writing new Gemfile to /Users/bakorer/git/bakorer-com/Gemfile
% tree ./
./
├── Gemfile
├── config.ru
└── public
    ├── css
    ├── images
    ├── index.html
    └── js
 
4 directories, 3 files
# Gemfile:
source :rubygems
gem 'rack'
% bundle install
# config.ru:
use Rack::Static, 
  :urls => ["/images", "/js", "/css"],
  :root => "public"
 
run lambda { |env|
  [
    200, 
    {
      'Content-Type'  => 'text/html', 
      'Cache-Control' => 'public, max-age=86400' 
    },
    File.open('public/index.html', File::RDONLY)
  ]
}
% rackup
[2013-04-28 11:04:24] INFO  WEBrick 1.3.1
[2013-04-28 11:04:24] INFO  ruby 1.9.3 (2013-02-22) [x86_64-darwin12.2.1]
[2013-04-28 11:04:24] INFO  WEBrick::HTTPServer#start: pid=41780 port=9292
% heroku create bakorer-com
Creating bakorer-com... done, region is us
http://bakorer-com.herokuapp.com/ | git@heroku.com:bakorer-com.git
% git init
% git add -A
% git commit -m "Initial static site template app"
% git push heroku master
% heroku open

今回、作成したのサイトはこちら。

http://bakorer-com.herokuapp.com/

ソースコードはGitHubに公開してます。

bakorer/bakorer-com · GitHub

[Heroku][Rails] New Relic アドオンのインストール方法 [Ceder Stack]

Heroku にて、Ruby on Rails 3.2.5 で動いているアプリに New Relic アドオンをインストールしたので手順をメモ。

Cederスタックで使う場合は、単純にアドオン入れるだけでは使えないっぽいです。

以下、New Relic のインストール手順です。

■ New Relic アドオンを追加する

$ heroku addons:add newrelic:standard

■ Gemfile に newrelic_rpm を追加する

group :production do
  gem 'newrelic_rpm'
end

■ bundle install を実行する

$ bundle install --without production

■ newrelic.yml をダウンロードして config 以下に設置する

$ curl https://raw.github.com/gist/2253296/newrelic.yml > config/newrelic.yml

■ Heroku へデプロイ

$ git commit -m "Added New Relic Plugin"
$ git push heroku master

以上です。

【参考】

New Relic | Heroku Dev Center はてなブックマーク - New Relic | Heroku Dev Center