Tiny Tiny RSS のアップデート

以前、Google Reader がサービス終了になった際、私は乗り換え先として Tiny Tiny RSS (以下、TTRSS) を選択しました。サーバー設置型なので、同じような憂き目に合うことは無いですし、公式のAndroid アプリもあるので、自分の用途にはこれで十分です。

私がインストールした当初は、TTRSSは適当なタイミングで新しいバージョン番号が振られてリリースされ、告知のRSSなんかも飛んでいたのですが、最近は、ローリングリリース形式になったので、気をつけていないと置いていかれがちです。頻繁なアップデートに合わせて、できるだけ作業は定式化しておくのが良いでしょう。

というわけで、TTRSSのアップデートについて、自分の事情込みの手順をメモしておきます。

アップデート手順

git から最新を取得

公式リポジトリから clone する

$ git clone https://github.com/gothfox/Tiny-Tiny-RSS.git

もしくは、前回 clone したディレクトリで git pull (fetch & merge) します。
その際、 git show なり git describe なりで commit 番号を確認して、メモしておくと、次回 update 時に更新内容を確認でき、config の修正も(若干)容易になります。

サーバーの crontab による自動更新を止める

私の場合、RSS のフィード収集は crontab でトリガーをかけて行うように設定しているので、アップデート中は動かないように設定を変更します。

DB のバックアップをとる

アップデートが失敗すると痛いので、バックアップは必須です。私の場合、XREAに置いているので、XREAの管理画面にログインしてボタン一発です。

サーバーの旧版のディレクトリをリネーム

FTP でサーバーに接続し、TTRSS のディレクトリを適当な名前にリネームして、古い環境をそのまま保全します。

新版のアップロード

最初に取ってきたソース一式を、リネームしたものの代わりに、まるごとアップロードします。その際、 ”.git/” ディレクトリは upload 不要です。

config.php を更新

旧版のディレクトリにある config.php をダウンロードし、新版の config.php-dist と見比べて、設定項目が変わっているようなら、それを config.php に取り込みます。 vimdiff を使うと良いでしょう。

旧版のバージョンがわかっているなら、そのバージョン以降の config.php-dist の更新内容は

$ git diff (旧版のcommit 番頭).. config.php-dist

で確認できますし、わかっていなくても、サーバーの旧版ディレクトリの config.php-dist と 3-way merge すれば良いので、なんとでもなります。

新しい config.php のアップロード

上記で作った新しい config.php を、サーバーの新版ディレクトリに upload します。

旧版ディレクトリからアイコンディレクトリをコピー (optional)

旧版ディレクトリに生成されている feed-icons/ を新版ディレクトリにコピーしておくと、アップデート直後でも feed のアイコンが適切に表示されます。ただし、これは公式手順では推奨されていません。
ここでコピーしなくても、feed の更新時にアイコンが再ダウンロードされるので、特に支障はありませんし、feed 更新がきちんと働いていることの確認にもなるので、コピーしないほうが良いでしょう。

なお、キャッシュディレクトリ(cache/ 等)はコピーするべきではありません。

テストログインする

ここまで準備ができたら、HTTPでアクセスして「管理者権限アカウント」(admin)でログインします。config.php のチェックが行われ、足りない設定がみつかったりすると、ページにエラーメッセージが表示されるので、そのとおりに修正します。
なお、普段はパワーユーザーな別アカウントを作ってログインしている場合でも、このタイミングでアクセスするのは admin アカウントであることに注意です。adminアカウントで無い場合は、変なエラーメッセージが表示されるだけで、先に進めません。

crontab の再設定

最初の方で止めた cron による自動更新を再開させます。 自分の場合、update.php の直接実行ではなく、update.sh という自作のスクリプトを噛ませているので、それを旧版からコピーしてもってきたあと、無効にしていた crontab 設定を元に戻します。


上記で、一通りのアップデート作業は完了になります。あとは、時間をおいて、feed の自動更新がきちんと動いているかどうかを確認したらすべて終了です。