「その○」と銘打って続かないものが多々あって恐縮だが、無事 Windows Azure で Trac Lightning を動かすことが出来たのでTIPSを共有させて頂く。永続化部分等で考慮するべき点は多いが、Windows Azure 上で動作させるにはどんな手順が必要かを記載する。
Trac Lightning とは
私のブログを見に来るような方には説明が不要だと思うが、 http://sourceforge.jp/projects/traclight/ で公開されており、 Trac, Subversion, Maven の簡易インストーラとサンプルプロジェクトを提供するナイスプロジェクトだ。Trac Lightning のインストーラはGUIが主体だが、オプションしだいではサイレントインストールも可能となっている。
Windows Azure で動作させるには
手順はさほど複雑ではなく、以下を実施すれば良い。
- TracLightning のバイナリを入手し、BLOBストレージ上にパブリック権限で配置する
- Windows Azure の Workerロールプロジェクトを作成し、スタートアップタスクでTracLightningをセットアップする
次に、実際の作業手順を記載する。
TracLightning のバイナリを入手し、BLOBストレージ上にパブリック権限で配置する
こちらの手順は非常に単純だ。 http://sourceforge.jp/projects/traclight/ サイトから TracLightning-X.X.X.exe をダウンロードし、Windows Azure 上のBLOBストレージに配置する(今回は https://myaccountname.blob.core.windows.net/trac/TracLightning.exe と名前を変更して配置)。
Windows Azure の Workerロールプロジェクトを作成する
Visual Studio 2010 から、Windows Azure のプロジェクトを作成する(プロジェクト名は WATracLightning とした)。Workerロールを一つ作成する。
TracLightning ダウンロード用のスクリプトを配置する
以前紹介した 2011年12月 Windows Azure の大幅更新 〜Java編〜 id:waritohutsu:20111231:1325300990 に含まれる download.vbs を利用することで、大容量ファイルをBLOBストレージから同期的に取得することが可能だ。今回はこちらを WorkerRole1\Assets\download.vbs に配置し、プロパティウィンドウから [出力ディレクトリにコピー]を[新しい場合はコピーする]に設定する。
80番のエンドポイントを設定する
外部からWorkerロールにアクセスするため、エンドポイントを指定する。Visual Studio のウィンドウから、以下を指定する。
名前 | 種類 | プロトコル | パブリックポート | プライベートポート |
---|---|---|---|---|
Endpoint1 | Input | tcp | 80 | <指定無し> |
スクリプトを作成し、Workerロールプロジェクトに配置する
以下のスクリプトを WorkerRole1\setuptrac.cmd として配置し、 [出力ディレクトリにコピー]を[新しい場合はコピーする]に設定する。
@echo off if exist C:\TracLight\start.bat goto runtrac "%~dp0Assets\download.vbs" https://myaccountname.blob.core.windows.net/trac/TracLightning.exe "%~dp0TracLightning.exe" /VERYSILENT /LOG="mylog.txt" goto end :runtrac start C:\TracLight\start.bat :end
作成したスクリプトをStartup Taskで実行するように設定する
Windows Azure プロジェクト内の ServiceDefinition.csdef を以下のように修正する。
<?xml version="1.0" encoding="utf-8"?> <ServiceDefinition name="WATracLightning" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition"> <WorkerRole name="WorkerRole1" vmsize="Small"> <Imports> <Import moduleName="Diagnostics" /> <Import moduleName="RemoteAccess" /> <Import moduleName="RemoteForwarder" /> </Imports> <Runtime executionContext="elevated" /> <Startup> <Task commandLine="setuptrac.cmd" executionContext="elevated" taskType="simple" /> </Startup> <Endpoints> <InputEndpoint name="Endpoint1" protocol="tcp" port="80" /> </Endpoints> <ConfigurationSettings> <Setting name="StorageConnectionString" /> </ConfigurationSettings> </WorkerRole> </ServiceDefinition>
以上の作業を行うことで、Windows Azure 上で Trac Lightning を動作させることが可能になる。
残課題として
Trac Lightning を Windows Azure 上で動作させることができたが、永続化に関しては何も対策をしていない状態になっている。少なくとも、以下のファイルを永続化しないと Trac Lightning を Windows Azure上で運用できないだろう。
- アカウント情報
- c:\TracLight\projects\svnauthz
- c:\TracLight\projects\trac.htdigest
- SVNリポジトリ
- c:\TracLight\projects\svn
- Trac プロジェクト
- c:\TracLight\projects\trac 以下のプロジェクト
上記のうちで「trac-admin <プロジェクト名> resync」で解決できるものもあるが、対応を完全なものにするには検討が必要なものが残っている。