SVN機能利用のためTrac Lightningを導入していましたが、インストール先のサーバリプレイスのため新サーバへデータ移行が必要となりました。その際の手順を書き残しておきます。
既に各種サイト様で紹介されている情報もあるのですが、バージョン違いなのかファイルパスが違ったり、エラーが発生してハマるポイントがあったので整理したいと思います。
移行の話以前に、そもそもどうやってTrac Lightningを導入するのかもわからない状態だったので、ソフトウェアの導入から記載しています(同じように移行作業で困っている人の役に立ちますように)。
この記事の前提
- 新・旧サーバで使うTrac Lightningのバージョン:共に3.1.3
※バージョンが変わる場合ファイルパスや設定ファイルの中身が異なる可能性があるので、バージョンをそろえた方が良いと思います(未検証ですが)。
- インストール先のフォルダは、新旧環境で変更する。
※もともとDドライブにインストールしていたのですが、新サーバではAzure利用となりました。Azureの多くのサーバでは、Dドライブは一時領域となるため永続して利用したいファイルを格納できません。このため、インストール先ドライブをCドライブに変更しました。
例)
移行元サーバのインストールフォルダ:D:¥TracLight¥
移行先サーバのインストールフォルダ:C:¥TracLight¥ - 過去にコミットしたSVNの履歴も移行する。
移行手順
- 新サーバにTracLightningをインストール
TracLightningのインストールexeを起動。基本的にデフォルトのままで良いです。2点だけ補足を。- インストール先は任意のフォルダを指定する
- 「Apacheの設定を上書きする」は、チェックオンのまま
- インストール先は任意のフォルダを指定する
- windowsサービスの登録
Trac Lightningが用意しているインストーラで、サービスを登録します。
C:¥ProgramData¥Microsoft¥Windows¥Start Menu¥Program¥Trac に、ショートカット「サービスのインストール」があります。これを右クリック > 管理者として実行 から起動してください。
※Windowsバージョンなどの環境によっては、Start Menuまでのパスが異なるかもしれません。
正常終了すると、Windowsのサービスとして「Trac Lightning」が登録されます。 - 移行元から移行先に、以下ファイルをコピー
①TracLightningのインストールフォルダ¥svn
②TracLightningのインストールフォルダ¥trac
③TracLightningのインストールフォルダ¥svnauthz
④TracLightningのインストールフォルダ¥trac.htdigest - 移行先の以下の設定ファイルに移行元のパスが設定されているので、移行先パスに置き換え
C:¥TracLight¥projects¥trac¥xxx(移行するプロジェクトの名前)¥conf¥trac.ini
修正内容:移行元のパスが設定されているので、移行先パスに書き換え
①file = 移行元のパス
②repository_dir = 移行元のパス
- 移行先の以下の設定ファイルに移行元のパスが設定されているので、移行先パスに置き換え
C:¥TracLight¥CollabNetSVN¥httpd¥conf¥httpd.conf - SVNとリポジトリの同期を行う。
コマンドプロンプトを「管理者で実行」で起動し、以下のコマンドを入力
cd C:\TracLight
trac-admin C:\TracLight\projects\trac\xxx(移行先プロジェクト名) repository resync "(default)" -
移行先の以下batファイルに移行元のパスが設定されているので、移行先パスに置き換え 。
C:\TracLight\projects\svn\xxx(移行先プロジェクト) \hooks\post-commit.bat
以上です。
トラブルシューティング
移行作業中は、以下の問題が発生しました。
- Trac Lightning構築後、ブラウザで「localhost」に接続すると管理コンソールに接続ができる。
移行先のプロジェクトの管理画面の上部に「警告:リポジトリ"(default)"との同期ができません(D/TracLight/projectsvn/xxx(移行元プロジェクト)はSubVersionのリポジトリではないみたいです。)。詳細はTracのログを参照してください。」とのエラーメッセージが表示される
→移行先のSubVersionフォルダを認識できていませんでした。手順6の同期を行うと解消しました。
- 移行完了後、SVNを利用してコミットした際に「post-commit hook failed(exit code 1) with output: 指定されたパスが見つかりません。」とのエラーが表示される(コミット自体はできている)
→手順7を実施して解消しました。SVNコミット後に何らかの処理をしたいときにpost-commitとして処理を指定して追加できるのですが、そのbat内のパスが通っていないため上手く動作していないためエラーとなります。
【関連記事】
【注目記事】