56
54

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ConoHa + DokkuでプライベートPaaS構築

Last updated at Posted at 2015-11-08

今まではHerokuのFreeプランでWebアプリやHubotを運用していました.
しかし,6月からの新料金では,24時間稼動が出来なくなりました.
Hubotは研究室やアルバイト先で使っているので,死活問題です.

そこで,Hobbyプランに移行するのではなく,VPSを借りてプライベートPaaSを構築することにしました.
Open PaaSはDeisFlynnを検討しましたが,以下の理由でDokkuにしました.

  • 各アプリは1 dynoで運用
  • PaaSは1 node(VPS 1台)で運用
  • Dockerベースでシンプルな構成

Open PaaSについては,PaaS勉強会@jacopenさんのスライドが参考になります.

ConoHaとお名前.comの契約

VPSはさくらインターネットConoHaで悩みました.
ただ,料金もほぼ同じなので キャラクターが可愛い という理由でConoHaにしました.
こちら から登録すると,1000円分のクーポンが貰えます.
イメージOSは「Ubuntu 14.04(64bit)」,接続許可ポートは「SSH」と「Web」を選択します.

conoha_service_add.png

合わせて,同じGMOが運営するお名前.comでドメインをします.
今回はhiconyan.comを680円/年で契約しました.
このとき,無料のWhois公開情報代行を申し込むのを忘れずに.
取得できたら,以下の記事を参考に,名前解決時にVPSのIPアドレスを返すようにします.

また,Dokkuでは app.hiconyan.com のように,Virtualhostを利用します.
そのため, *.hiconyan.com も名前解決できるようにしておきます.

records.png

Dokkuのインストール

DokkuはHerokuインスパイアのOpen PaaSです.
機能は限定されますが,Dockerと200行のBashスクリプトというシンプルな構成です.
(v0.3からはDockerfileのデプロイアプリのスケールも可能になりました.)
Buildpack対応なので, git push するだけで使えます.

インストールは公式に従って,以下のコマンドをコピペするだけ.
(DokkuやDockerのパッケージ,herokuishがインストールされます.)

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

完了したら,VPSの80番ポートにアクセスして,Webで初期設定を行います.

  • Public Key : Gitで使う公開鍵 ( https://github.com/username.keys など)
  • Hostname : 取得したドメイン ( hiconyan.com など)
  • Use virtualhost naming for apps : チェック

おすすめプラグイン&ツール

よりHeroku的に使うために,おすすめのプラグインとツールを紹介します.

HerokuのMaintenance Mode的なプラグインです.
dokku maintenance:on <app> で,メンテナンス中画面に切り替えられます.

HerokuのDeploy Hooks的なプラグインです.
dokku slack:set <app> <webhook_url> で設定しておくと,デプロイ時にSlackに通知してくれます.

DokkuはHerokuと違って, apps:createconfig:set をPaaS(サーバ)上で叩く必要があります.
docklandを使うと,それをクライアント(開発機)から実行でき,非常に便利です.

アプリのデプロイ

ここからは,docklandを導入した前提で,Dokkuにデプロイしていきます.
サンプルは,僕が作ったGo言語製のWebアプリ「kakuzuke」を使います.
ポイントは,docklandを実行する為に,先に git remote を登録しておくことです.

$ git clone git://github.com/hico-horiuchi/kakuzuke.git
$ cd kakuzuke
$ git remote add dokku dokku@hiconyan.com:kakuzuke
$ dockland apps:create kakuzuke
$ dockland config:set GITHUB_ACCESS_TOKEN=your_access_token
$ git push dokku master

これでBuildpackを使ってコンテナがビルドされ,NginxのVirtualhostが設定されます.
Dokkuにアクセスすると,アプリが実行されているはずです.

screen.gif

監視について

Sensu Deep Talksの主催者としてはSensuを使いたいですが,監視サーバが必要になってしまいます.

そこで,VPSの監視にはMackerelを使っています.
単純にCPUやメモリの使用率を監視し,アラートを通知するようにしています.

また,外形監視(HTTP)はUptime Robotを使っています.
各アプリのURLに定期的にアクセスし,落ちていないかチェックさせます.
(本当はMackerelにしたいのですが,Freeプランでは無理なので….)

まとめ

今回は「ConoHa + お名前.com + Dokku」という構成で,プライベートPaaSを構築しました.
PaaSの構築も,アプリのデプロイも簡単なので,ぜひお試し下さい.

他にも,Railsなどでデータベースを使うには,公式プラグインを使うと良さそうです.
所属するプログラミングサークルではRails開発もしているので,PaaSを活用できればと思っています.

参考文献

56
54
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
56
54

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?