Quantcast
Channel: もくもくブログ
Viewing all articles
Browse latest Browse all 216

IDCFクラウドで自分だけのHerokuを構築する

$
0
0

IDCFクラウド1周年めでたいですね。

この間からIDCFクラウドの最小インスタンスを借りて日々便利しています。

個人用途で使っていたHerokuに乗せていたアプリをことごとくIDCFクラウドにのせ替えたので紹介します。個人用途なら最小インスタンスでも割りと快適です。

その前に私の感じるIDCFの良さを紹介します。

IDCFの良さ

選んだ理由

子供のお小遣いで済みそうなくらい安いVPSを探していて最終的に、DigitalOceanとIDCFで迷っていました。

-IDCFDigitalOcean
料金/month500円$5
CPU11
RAM1G1G
Storage20G20G
rootありあり

最小インスタンスの基本的なスペックの比較ですが、気のせいかもしれないですがDigitalOceanをメタっているふうに見えます。両者ともインスタンスを登録後すぐに起動できる点でも似てる..

DigitalOceanのデメリットは為替の影響を受けるので大体700円くらいになってしまうのと、一番近いサーバでもシンガポールなのでアクセスが遅いことです。(あと、管理コンソールが英語)

逆にDigitalOceanのメリットは選べるOSが充実しているところで、CoreOSを使えるのは面白いと思いました。

結局IDCFにしたのですが、決め手はサーバが日本あるのでアクセスが速いことでした。

用途が個人利用のアプリの運用や試運転なのでSSHでログインして作業することが多いのでコマンド1つ1つにいちいち遅延があるとすごくストレスなので、そういう場合サーバが日本にあるのはかなりメリットだと思いました。

使ってて良さを感じる点

  • インスタンスが速攻で立ち上がる
  • 管理コンソールがわかりやすい
  • グローバルIPに対して、ローカルIPからポートフォワーディングする仕組みが良い
  • ロードバランサが使える
  • Mackerelに公式対応

自分だけのHeroku構築

DokkuというOSSを使えば、IDCFでHerokuライクなPaaSを構築することができ、デプロイ先をHerokuからDokkuに変えるだけで手軽に移行できます。

Dokku

embed.ly

Dokkuはmini-herokuと書いてある通り、HerokuライクなPaaSエンジンです。

Dockerを使っていて、アプリのビルドにはherokuishを使っているのでHerokuで動かしていたアプリは割りとすんなり動きます。

しかし、miniというだけあってできないこともあるので、用法用量を守るのが大事です。

準備

IDCFの最小インスタンスでUbuntu14.04を立てます。

インストール

$ wget https://raw.githubusercontent.com/progrium/dokku/v0.4.4/bootstrap.sh$ sudo DOKKU_TAG=v0.4.4 bash bootstrap.sh

これで必要なパッケージ(dockerやnginxなど)も一緒にインストールされます。

設定

ホスト名とSSH公開鍵の設定をします。foo.barとは適宜置き換えてください。

# echo "foo.bar" > /home/dokku/VHOST
# echo "foo.bar" > /home/dokku/HOSTNAME
# cat ~/.ssh/id_rsa.pub | sudo sshcommand acl-add dokku <name>

ホスト名は使っているDNSサーバ側でAレコードの設定が必要です。

IDCFクラウドの管理コンソールでファイアウォールとポートフォワーディングで22portを開けておきます。(22portをフルで開けるのは怖いのでファイアウォールでIPを制限すると良いです。)

使い方

Herokuにデプロイしていたアプリのgitリポジトリのremoteにdokkuを追加します。foo.barとは適宜置き換えてください。

$ git remote add dokku dokku@foo.bar:<project>

"git push dokku"するとdokkuにデプロイが始まり、Herokuで見たことあるような出力が返ってきます。

$gitpushdokkumasterCountingobjects:21,done.Deltacompressionusingupto8threads.Compressingobjects:100%(17/17),done.Writingobjects:100%(21/21),1.81KiB|0bytes/s,done.Total21(delta6),reused0(delta0)----->Cleaningup...----->Buildingpython-samplefromherokuish...remote:Unabletofindimage'gliderlabs/herokuish:latest'locallyremote:latest:Pullingfromgliderlabs/herokuishremote:835c565d00e2:Pullingfslayerremote:c5c659229e15:Pullingfslayer(中略)remote:359e311e765f:Pullcompleteremote:359e311e765f:Alreadyexistsremote:Digest:sha256:7aaa5dd65a7f90a47f2bb1266375b27d4f273ff94495527949536c9e944a871aremote:Status:Downloadednewerimageforgliderlabs/herokuish:latest----->AddingBUILD_ENVtobuildenvironment...(中略)----->DOKKU_SCALEfilenotfoundinappimage.Defaultingtoasinglewebprocess----->NewDOKKU_SCALEfilegenerated----->Runningpre-flightchecksFormoreefficientzerodowntimedeployments,createafileCHECKS.Seehttp://progrium.viewdocs.io/dokku/checks-examples.md for examplesCHECKSfilenotfoundincontainer:Runningsimplecontainercheck...----->Waitingfor10seconds...----->Defaultcontainerchecksuccessful!=====><project>containeroutput:*Runningonhttp://0.0.0.0:5000/=====>end<project>containeroutput----->Runningpost-deploy----->Creatingnew/home/dokku/<project>/VHOST...----->Configuring<project>.foo.bar...----->Creatinghttpnginx.conf----->Runningnginx-pre-reloadReloadingnginx=====>Applicationdeployed:http://<project>.foo.barTodokku@foo.bar:<project>*[newbranch]master->master

さらに詳しくは

以前にブログにまとめたものがあります。

IDCFクラウドの一番安いのでDokkuを使う

IDCF + お名前.com + Dokkuの構成を作っています。

あと、Dokkuを構築する際にDockerを使っているのでSwap領域を作っておいたほうがいいです、そのへんの基本的な設定も以前にブログにまとめたので参考にどうぞ。

IDCFクラウド借りました

まとめ

HerokuからIDCF+Dokkuにいくつかのアプリをのせ替えて使っていますが、今のところ快適に動いていますのでおすすめできるかなと思います。

しかし、HerokuのAddonをガッツリ使っていたりなど、Dokkuではどうしようもない部分もあるので、Herokuを捨てられる銀の弾丸ではないのでご注意を。


Viewing all articles
Browse latest Browse all 216

Trending Articles