Trac Lightningを使用していると結構DISK容量を使います。
当社でも使用している Trac Lightning のサーバのDISK容量がなくなってしまい、SVNに新しくコミットするとエラーがでるようになってしまいました。
そこで、急遽DISKを足し Trac Lightning の引っ越しをおこなうことになりました。
※当社で使用しているTrac Lightningは
AWSのEC2で稼働しています。
現在Cドライブの直下にTrac Lightningのフォルダがありますが、新設したDドライブに移行していきます。
1、データの移行
2、設定ファイルの修正
3、同期
1、Cドライブの次のファイルをDドライブに移動します。
※Dドライブで動くことが確認できるまでは、CドライブにTrac Lightningのプロジェクトファイルを残しておくことをお勧めします。
コピー元 | コピー先 | 備考 |
C:\TracLight\projects\trac | D:\TracLight\trac | tracプロジェクト |
C:\TracLight\projects\svn | D:\TracLight\svn | svnリポジトリ |
C:\TracLight\projects\trac.htdigest | D:\TracLight\trac.htdigest | Trac/SVNのユーザ認証情報ファイル |
C:\TracLight\projects\svnauthz | D:\TracLight\svnauthz | SVNの認証設定ファイル |
※今回はtracとSVNが移動対象です。
2、設定ファイルの修正
次の設定ファイルを修正します。
2-1 httpd.confの修正
”C:\TracLight\CollabNetSVN\httpd\conf\httpd.conf”のプロジェクトファイル等のパスを変更
・trac.htdigest
httpd.confを開き、”trac.htdigest”で検索しましょう。一か所だけではありませんので、検索に該当した箇所はすべて目を通し、適宜修正しましょう。
例:
<LocationMatch "^/trac/[^/]+/login($|/)">
AuthType Digest
AuthName trac
AuthUserFile "C:\TracLight\projects\trac.htdigest"→"
D:\TracLight\trac.htdigest"
Require valid-user
</LocationMatch>
下記に関するパスの設定を適宜修正します。
・svnauthz
・/trac
・/svn
2-2 trac.iniの修正
”D:/TracLight/trac/<プロジェクト名>/conf/trac.ini” 移動先の各プロジェクトのtrac.iniファイルを修正します。プロジェクトが複数ある場合、面倒ですがすべて修正する必要があります。
[trac]
authz_module_name = Display-System
repository_dir = C:\TracLight\projects/svn/<プロジェクト名>→ D:\TracLight/svn/<プロジェクト名>
3、同期
Tracのコマンドプロンプトを開き以下のようにコマンドを実行します。
C:\TracLight\bin>trac-admin D:\TracLight\trac\<プロジェクト名> repository resync ""
どうもうまくいかなかった場合…
Apacheのエラーログに以下のようなエラーはでていませんか?
──────────────────────────────────────
[error] [client xxx.xxx.xxx.xxx] mod_wsgi (pid=1108): Exception occurred processing WSGI script 'C:/TracLight/CollabNetSVN/httpd/cgi-bin/trac.wsgi'.
[error] [client xxx.xxx.xxx.xxx] Traceback (most recent call last):
[error] [client xxx.xxx.xxx.xxx] File "C:\\TracLight\\python\\lib\\site-packages\\trac-0.12.4.ja1-py2.6.egg\\trac\\web\\main.py", line 422, in dispatch_request
[error] [client xxx.xxx.xxx.xxx] env_paths)
[error] [client xxx.xxx.xxx.xxx] File "C:\\TracLight\\python\\lib\\site-packages\\trac-0.12.4.ja1-py2.6.egg\\trac\\web\\main.py", line 691, in send_project_index
[error] [client xxx.xxx.xxx.xxx] for env_name, env_path in get_environments(environ).items():
[error] [client xxx.xxx.xxx.xxx] File "C:\\TracLight\\python\\lib\\site-packages\\trac-0.12.4.ja1-py2.6.egg\\trac\\web\\main.py", line 744, in get_environments
[error] [client xxx.xxx.xxx.xxx] paths = dircache.listdir(env_parent_dir)[:]
[error] [client xxx.xxx.xxx.xxx] File "C:\\TracLight\\python\\lib\\dircache.py", line 28, in listdir
[error] [client xxx.xxx.xxx.xxx] mtime = os.stat(path).st_mtime
[error] [client xxx.xxx.xxx.xxx] WindowsError: [Error 2] \x8ew\x92\xe8\x82\xb3\x82\xea\x82\xbd\x83t\x83@\x83C\x83\x8b\x82\xaa\x8c\xa9\x82\xc2\x82\xa9\x82\xe8\x82\xdc\x82\xb9\x82\xf1\x81B: 'C:\\\\TracLight\\\\projects\\\\trac'
──────────────────────────────────────
私どもはログの内容から、
C:\TracLight\CollabNetSVN\httpd\cgi-bin の trac.wsgi ファイルの次のディレクトリ部分を新しいパスに修正することで、解決させることができました。
──────────────────────────────────────
os.environ['TRAC_ENV_PARENT_DIR'] = 'D:\\TracLight\\trac'
──────────────────────────────────────
※正しい解決方法なのかお約束することはできませんで、本記事はあくまで参考程度としてご利用くださいますようお願い致します。