トップ «前日 最新 翌日» 編集
RSS feed

ただのにっき


2015-02-07(土) [長年日記]

Heroku上のtDiaryを運用する

さて、インストールができてデータ移行もできたら、次は運用である。運用つっても多岐にわたるけど、とりあえずはシステムのアップデートとバックアップができればいいだろう。

tDiaryのアップデート

追記: 本記事を書いたときはHeroku専用ブランチである「herokuブランチ」を利用してたが、最新版では「masterブランチ」を使えるようになっているので書き換えた。スクリーンショットは「heroku」のままなので読み替えてほしい。

Herokuボタンでできるのは初期インストールまでで、その後のアップデートまではサポートしてくれない。HerokuにはGitHub連携機能があって、指定したGitHubリポジトリの更新をフックして自動的にデプロイしてくれるんだけど、これ自分のリポジトリじゃないとダメなので、tDiaryの公式リポジトリを監視しておくわけにはいかない。

というわけで、うまいことやるためにちょっとひと工夫することにした。少し内部に踏み込んで説明するとこんな感じ:

  1. 公式リポジトリのforkを自分のリポジトリに作る
  2. そのリポジトリでGitHub連携を有効にする
  3. 任意のタイミングで公式リポジトリの差分を自分のリポジトリへのPull Request (PR)にする
  4. そのPRをマージするとGitHub連携が動いてシステムが更新される

3と4が実際のアップデート手順になるんだけど、やってみるとけっこう面倒な上に間違えそうなので、この部分をtDiaryのプラグインにして、設定画面でポチっとやるだけで済むようにした。

ではその手順。まずはtDiaryの公式リポジトリへアクセスして、右上にある「Fork」ボタンをクリック。これで自分のアカウントにコピーができる。

続いて、この「自分のID/tdiary-core」という名前のリポジトリをHerokuに監視してもらう。Herokuにアクセスして、Herokuボタンで作ったtDiaryアプリの設定へ。「Deploy」タブをクリックすると「Heroku Git」「GitHub」「Dropbox」が並んでいるので、中央の「GitHub」をクリック:

[スクリーンショット]HerokuのGitHub連携設定

一番下に「Connect to GitHub」ボタンが出るのでクリックすると、GitHubのIDとリポジトリを選択する場面になるので、自分のIDと「tdiary-core」を選んで認証する。と、Automatic deploysとManual deployという項目が現れる:

[スクリーンショット]AutomacitとManual Deploy

Automatic deploysの方の設定を先にしておく。ドロップボックスからmasterブランチを選択してから「Enable Automatic Deploys」ボタンを押せば設定完了。

これだけでは何も起こらないので、続いてまずは手動でアップデートする。Manual deployの横にあるブランチの選択を「master」にしてから「Deploy Branch」ボタンをクリック。あとはデプロイが進んでいくのを眺めていればよい。

これでtDiaryが最新版になったので、tDiaryの設定に移り、プラグイン選択へ。新たに「system_update.rb」が増えているはずなので、これを有効にすると「基本」の中に「システム更新」が増えている。これをクリック:

[スクリーンショット]tDiaryの「システム更新」プラグイン

GitHub access tokenとGitHub user nameの2つを入力する。access tokenはGitHub SettingsのApplicationsで生成できる。「Personal access tokens」から「Genrate new token」で40文字の英数字列ができるのでそれをコピーすればOK。

ようやく各種設定が終わったぞ、ぜえぜえ。あとは「システムを更新」のチェックボックスを入れてから「OK」を押すと、さきほど書いた手順が裏で走って、forkした自分のリポジトリが公式リポジトリに同期する。……とはいえさっき最新にしたばかりなので、いまは何も起こらない。tDiaryの最新版がリリースされたタイミングで実行してみて欲しい。

テストで何度かやってみたけどさ、なんつーか、ボタン押すだけでシステムが最新になるの、まるでWindows Updateならぬ「tDiary Update」て感じで、自分で作って自分で感動してしまったよ(笑)。すごいのはHerokuとGitHubなんだけど。

バックアップ

最後はバックアップ。Herokuで動作しているtDiaryは、残しておくべきデータをすべてMongoDBに入れているので、これをダンプすればバックアップになる。

Herokuのアプリ管理画面からResourceに入り、MongoLabをクリックするとDB管理ページになる:

[スクリーンショット]MongoLabの管理画面

「Backup」という文字が見えるのでクリックすると、バックアップの方法を選べる説明が出てくる(が、これは有料。でもone-timeは安いのでこれ使うのもいいと思う)。自力でバックアップを取りたいひとは「Tools」をクリックするとコマンドラインからMongoDBのバックアップ/リストアをする方法が読めるのでそれを使いましょう。ちなみにtDiary.Netではデイリーで過去3日分のバックアップをとってる。


というわけで、日記を運用するにはこれで十分かな。Enjoy!

Tags: tDiary heroku
本日のツッコミ(全3件) [ツッコミを入れる]
next (2016-03-14(月) 11:04)

Herokuこれで初めて使うので、いろいろ試しつつ初期導入まではなんとかできたんですが、ここでつまづいています。
Manual Deploy すると、↓のエラーが出て止まってしまいます。heroku から git clone しても、Ruby という項目がないのでどうしたらいいのか分からず。何かアドバイスありましたらお願いします。

---------------------------------------------
-----> Fetching set buildpack https://github.com/tdiary/heroku-buildpack-tdiary... done
-----> tDiary app detected
-----> Preparing tDiary environments for heroku
       Deleting Gemfile.lock
       Copying misc/paas/heroku/Gemfile.local
       Copying misc/paas/heroku/app.json
       Copying misc/paas/heroku/config.ru
       Copying misc/paas/heroku/tasks
       Copying misc/paas/heroku/tdiary.conf
-----> Fetching set buildpack https://github.com/heroku/heroku-buildpack-ruby... done
-----> Ruby app detected
-----> Compiling Ruby/NoLockfile
 !
 ! Gemfile.lock required. Please check it in.
 !
 ! Push rejected, failed to compile Ruby app
---------------------------------------------



ただただし (2016-03-14(月) 15:39)

わ、ごめんなさい。ここの記述はちょっと古くなってますね。最近の変更で、Herokuへデプロイするブランチはherokuブランチではなく、masterブランチでできるようになりました。ですので、上の記事にあるAutomatic deployとManual deployで指定するブランチ名は「master」にしてください。

あとで修正しておきます。

next (2016-03-14(月) 16:00)

ご返答ありがとうございます。その後いろいろ試して、Masterブランチだと動くしプラグインの表記もそうなってるけどこれでいいのかなあ...と思っていました。確信が得られて助かりました。ありがとうございます。


トップ «前日 最新 翌日» 編集
RSS feed