Mercurial on IIS

Windows Server 2003 R2 (x86) で Mercurial Server を立てました。


IISの導入

Windows Server 2003 R2 で IIS を動作させます。

1. アプリケーションサーバーの役割の追加

サーバーの役割管理を起動する。[役割を追加または削除します] をクリックします。


[次へ(N)>] ボタンをクリックします。


[ブロックを解除する(U)] ボタンをクリックします。


[アプリケーションサーバー(IIS、ASP.NET)] を選択し、[次へ(N)>] ボタンをクリックします。


アプリケーション サーバーのオプションは選択せず、[次へ(N)>] ボタンをクリックします。


[次へ(N)>] ボタンをクリックします。


2枚目のCD-ROMをドライブに入れて[OK]ボタンをクリックします。


[このサーバーはアプリケーション サーバーになりました]と表示されます。[完了]ボタンをクリックしウィザードを終了します。


インターネットエクスプローラで http://localhost/ へアクセスし、デフォルトのページが表示されることを確認してください。

2. Windows ファイアウォールの設定

デフォルトの設定では外部のネットワークよりウェブサイトへの接続ができません。Windows ファイアウォールを設定したまま、IIS のサービス提供を有効にする方法を参考にファイアウォールの設定を行い、外部より接続できるようにします。

[設定(T)]ボタンをクリックします。


[Webサーバー(HTTP)] をチェックします。[編集(T)]ボタンをクリックします。


コンピューターの名前を確認します。



使用するプログラムの準備

http://www.python.org/download/releases/2.6.6/ より Windows x86 MSI Installer (2.6.6) をダウンロードしてインストールします。

http://mercurial.selenic.com/wiki/Download より Mercurial-2.1.2 (32-bit py2.6) をダウンロードしてインストールします。

http://mercurial.selenic.com/release/ より http://mercurial.selenic.com/release/mercurial-1.8.2.tar.gz をダウンロードします。圧縮ファイルの中から hgweb.cgi を取り出します。


hgweb.cgi の修正と hgweb.config ファイルの作成

IIS で公開するフォルダを作成します。デフォルトの C:\Inetpub\wwwroot の中に hg フォルダを作成します。

次に、作成した hg フォルダの中に hgweb.cgi をコピーします。(コピーすればファイルのアクセス権を設定しなおさなくても良くなります)。

同じフォルダに hgweb.config という名前のテキストファイルを作成します。hgweb.config で公開する hg リポジトリを指定します。

以下は C:\hg\project のリポジトリを公開する場合の例です。
[paths]
project = /hg/project

リポジトリは複数指定できます。

特定のフォルダ以下を公開する場合、次のような設定が可能です。以下は hg フォルダ以下を全て公開する場合です。
[paths]
/ = /hg/*

hgweb.cgi をテキストエディタで修正し、hgweb.config を指定します。
# Path to repo or hgweb config to serve (see 'hg help hgweb')
config = "/Inetpub/wwwroot/hg/hgweb.config" 

IIS の設定

「インターネット インフォーメーション サービス (IIS) マネージャ」を起動します。

「規定の Web サイト」をクリックし、「コンテキストメニュー」か「操作(A)」メニューより「新規作成(N)」「仮想ディレクトリ(V)...」を選択します。


仮想ディレクトリのエイリアスを指定します。


先に作成した web 公開するフォルダを指定します。


「ISAPI アプリケーションや CGI などを実行する(E)」にチェックを付けます。


「完了」ボタンをクリックします。


今作成した仮想ディレクトリのプロパティを開きます。「構成(G)...」を押してアプリケーションの構成ダイアログを開きます。


「追加(D)...」をクリックします。


「執行可能ファイル(X):」に 「c:\python\2.6\python.exe -u "%s %s"」を指定します。

「拡張子(E):」に「cgi」を指定します。

「ファイルの存在を確認する(V)」のチェックをはずします。

「OK」ボタンを押してアプリケーションの構成を完了します。


「インターネット インフォーメーション サービス (IIS) マネージャ」の「Web サービス拡張」を選択します。

「新しい Web サービス拡張を追加...」をクリックします。

「拡張名(X):」に「Python 2.6」を指定します。(なんでもよい)。

「追加(D)...」をクリックして「C:\python\2.6\python.exe -u "%s %s"」を追加します。

「拡張の状態を許可済みに設定する(S)」にチェックを付けます。

「OK」をクリックして設定を反映します。


以上で完了です。

http://localhost/hg/hgweb.cgi にアクセスしてリポジトリが表示されることを確認します。

リポジトリへのアクセス制限をかける。

簡単なリポジトリへのアクセス制限は IIS の機能を使用します。

hg 仮想ディレクトリのプロパティを開き、「ディレクトリ セキュリティ」のタブをクリックします。「認証とアクセス制御」の「編集(E)...」をクリックします。


「匿名アクセスを有効にする(A)」のチェックをはずします。
「基本認証(パスワードはクリア テキストで送信)(S)」をチェックします。
「OK」をクリックします。


以上で IIS の動作しているサーバーのローカルユーザーの権限でユーザー認証されるようになります。

ただし、リポジトリへの書き込みを行うにはリポジトリフォルダのローカルユーザーの書き込みアクセス権が必要です。

リポジトリへの Push を可能にする。

hgweb.config もしくはリポジトリフォルダ以下の .hg/hgrc に以下の記述を追加すると誰でも Push が可能になります。

[web]
allow_push = *
push_ssl = false

参考 http://mercurial.selenic.com/wiki/PublishingRepositories

スタイルの変更

hgweb.config もしくはリポジトリフォルダ以下の .hg/hgrc の [web] セクションで style を指定すると表示スタイルを変更できます。

[web]
style=monoblue

以上です。おつかれさまでした。




コメント

このブログの人気の投稿

バイナリーファイルを C 言語の配列で出力

Python を使って文字コード変換