はじめに
個人開発ならHerokuよりDokkuを使おうの記事に感化され、自作サービスをDokkuへデプロイし開発・運用していますした。Dokkuを動かすサーバにはさくらのVPSを利用しました。
本記事ではアプリケーションをDokku環境へデプロイするまでの手順を記載します。
利用したサービス・技術
- さくらのVPSを利用
- Dokkuのサブドメイン機能を活用するため、お名前.comでドメインを購入
手順
VPSを立てる
Dokkuを動かすためのVPSをたてます
筆者はさくらのVPSを利用しました。
サーバを立てたらこちらなどを参考にしてサーバの初期設定をします。
VPS設定の【注意点】
Dokkuを利用するため以下の注意点があります。
1. DokkuはUbuntuでないと動かない(CentOSはNG)
こちらの公式リファレンスにあるように、現時点(2018年3月時点)ではUbuntu16.04またはUbuntu14.04のDebian系のみのサポートです。CentOS6はサポートなし、CentOS7はexperimental版がありますが、安定せずドキュメントもほぼ無い状況です。
私はこれを把握せずCentOS6でスタートしてしまいUbuntuを入れ直しました。。。
2. デフォルトではiptablesにてHTTPが閉じられているので開ける必要がある
さくらのVPSのUbuntuではiptablesのデフォルト設定は以下のようになっており、HTTPなどは閉じられているので開いてあげる必要があります。
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
開き方はこちらなどを参考にしてください。
独自ドメインをさくらのVPSに紐付ける
Dokkuのサブドメイン自動生成の機能を有効活用するためお名前.comで購入したドメインをさくらのVPSに紐付けます。
さくらのVPSでのドメイン設定
さくらのVPSコンソール画面の「ネームサーバ登録」タブからネームサーバ設定画面を開き、下記画像のように独自ドメインにて"*"エントリと"@"エントリをAレコードで登録します。
お名前.comでの設定
さくらのVPSの「ネームサーバ登録」に記載のDNSサーバのドメインを、お名前.comの対象独自ドメインの「ネームサーバの変更」画面にて下記画像のように設定します。
以上の設定でVPSはDokkuが自動生成するサブドメインへのリクエストを受け入れるようになりました。
Dokkuをインストール&セットアップ
Dokkuをインストール
DokkuをさくらのVPSへインストールします。
Dokkuの公式ページに従い以下のコマンドでインストール
$ wget https://raw.githubusercontent.com/dokku/dokku/v0.11.6/bootstrap.sh
$ sudo DOKKU_TAG=v0.11.6 bash bootstrap.sh
DokkuへSSHキー設定
インストールが完了したらDokkuへデプロイするためのSSHキー設定をします。
VPSのドメイントップへアクセスすると下記画像のようなDokkuの設定ページが表示されます。
Public Keyの設定はgitHubでssh接続する手順~公開鍵・秘密鍵の生成から~などの記事と同じ要領で設定します。
Hostnameには上記にて設定した独自ドメイン名を入力し、今回はDokkuのサブドメイン機能を利用したいので"Use virtualhost naming for apps"にチェックをつけます。
また、これらの設定はサーバ上にてDokkuインストール時に作成される/home/dokku/.ssh
パス内で確認・再設定ができます。
アプリをDokkuへデプロイ
Dokkuへアプリをデプロイします。
本記事では例としてアプリ名をmyappとします。
Dokkuにてデプロイ用アプリを生成
VPSでdokkuコマンドにてこれからデプロイするアプリをDokku上に作成します。
# dokku apps:create myapp
ローカルマシンからデプロイ
DokkuはHeroku互換なのでこちらのようなProcfileファイルをアプリのルートディレクトリへ用意します。
アプリのルートディレクトリからDokkuへデプロイします。
$ cd myapp
$ git remote add dokku dokku@your-root-domain.com:myapp
$ git push dokku master
以下のように終了すればデプロイ成功です!アプリが動作するか確認しましょう。
=====> Application deployed:
http://myapp.your-root-domain.com
補足
筆者はGo言語のLINE Message APIのSDKを利用してBotアプリ用APIを作成しそれをDukkuへデプロイしました。
以下はそれに関した補足内容です。
アプリをHTTPS化
Line BotのMessage APIを利用するためにはアプリケーションをHTTPS化をする必要があります。
Dokkuには非常に容易にHTTPS化するdokku-letsencryptというプラグインがあります。
Usageにあるようにたった2コマンドでアプリをHTTPS化できるのでとても便利です。
Go言語製アプリをDokku(Heroku)へデプロイするには/vender
ディレクトリもgitに含めないといけない
サードパーティを利用したGo言語製のアプリをDokku(Heroku)へデプロイするためにはdepなどの依存管理ツールを利用する必要があります。
このとき作成される/vender
ディレクトリはgitに含めないとデプロイできません。筆者は.gitignoreファイルへ/vender
ディレクトリを含めてしまっていたので失敗してしまいました。
こちらの記事に助けられました。
おわりに
アプリケーションをDokkuへデプロイするまでの手順をVPS設定まで含めて記載しました。
Dokkuでの環境変数設定やログ取得などは本記事では触れていないので別記事を作成し紹介できればと思います。
参考
- https://qiita.com/gn_spawn/items/712349b5b0ebaf4b0203
- https://help.sakura.ad.jp/hc/ja/articles/206208181
- http://dokku.viewdocs.io/dokku/getting-started/installation/
- https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-iptables-on-ubuntu-14-04
- http://nirasan.hatenablog.com/entry/2016/07/29/184454