Mercurialをインストールし、Apacheで公開する(Debian-squeeze)

やってみたのでメモ。





mercurialのインストール




# apt-get install mercurial





バージョンを見てみると、1.6.4が入るようです。


# hg version
Mercurial - 分散構成管理ツール(バージョン 1.6.4)

著作権 (C) 2005-2010 Matt Mackall <mpm@selenic.com> 他
本製品はフリーソフトウェアです。頒布/改変の際はライセンス条項をお読み
ください。市場適合性や特定用途への可否を含め、本製品は無保証です。












リポジトリの作成



/opt/hgを作成し、このディレクトリ配下にリポジトリを作成することにします。


# mkdir /opt/hg




ちなみに、web経由からリポジトリの作成は行えないようなので、
事前に/opt/hg/sampleというリポジトリを作成しておきます。


# mkdir /opt/hg/sample
# cd /opt/hg/sample
# hg init




webで公開するので、所有者とアクセス権を変更しておきました。


# chown -R www-data:www-data /opt/hg
# chmod -R 775 /opt/hg












apacheとmod-wsgiのインストール




# apt-get install apache2 libapache2-mod-wsgi





念の為、wsgiモジュールがロードされているか確認。


# a2enmod wsgi
Module wsgi already enabled












hgweb.wsgiの公開



ここが一番はまりました。

aptでmercurialをインストールした時、web公開用のソースhgweb.wsgiは、
/usr/share/doc/mercurial-common/examples/hgweb.wsgi
ここにあります。


/var/www/hgを作成してコピーします。


# mkdir /var/www/hg
# cp /usr/share/doc/mercurial-common/examples/hgweb.wsgi /var/www/hg/hgweb.wsgi






コピーしたhgweb.wsgiの内容を編集します。

まず、

import os
os.environ["HGENCODING"] = "UTF-8"


を追記します。
これがないと日本語が文字化けしました。


次に、

config = "/var/www/hg/hgweb.config"


ここで設定ファイルのパスを指定します。



最終的なhgweb.wsgiは以下のようになるはずです。


# An example WSGI for use with mod_wsgi, edit as necessary
# See http://mercurial.selenic.com/wiki/modwsgi for more information

import os
os.environ["HGENCODING"] = "UTF-8"

# Path to repo or hgweb config to serve (see 'hg help hgweb')
config = "/var/www/hg/hgweb.config"

# Uncomment and adjust if Mercurial is not installed system-wide:
#import sys; sys.path.insert(0, "/path/to/python/lib")

# Uncomment to send python tracebacks to the browser if an error occurs:
#import cgitb; cgitb.enable()

# enable demandloading to reduce startup time
from mercurial import demandimport; demandimport.enable()

from mercurial.hgweb import hgweb
application = hgweb(config)






hgweb.wsgiで指定した設定ファイル「/var/www/hg/hgweb.config」を作成します。


# vi /var/www/hg/hgweb.config




内容は以下のとおり。


[web]
style = gitweb
allow_push = *
push_ssl = false

[paths]
/ = /opt/hg/**



pathsで作成したリポジトリのパスを指定します。











apacheの設定



一旦、defaultサイトを無効にします。


# a2dissite default




設定ファイルを編集


# vi /etc/apache2/sites-available/default




追記した箇所は以下のとおり。



<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>
        WSGIScriptAliasMatch /hg /var/www/hg/hgweb.wsgi
        <Directory /var/www/hg>
                Options ExecCGI FollowSymlinks
                AddHandler wsgi-script .wsgi
                AllowOverride None
                Order allow,deny
                Allow from all
        </Directory>

(略)






サイトを有効に


# a2ensite default




apacheをリスタート


# /etc/init.d/apache2 restart





ブラウザでhttp://(サーバー)/hg/にアクセスして、作成したsampleリポジトリが
見えていたら設定成功です。

93_001.png









eclipseからpush



せっかくリポジトリを作成したので、eclipseからpushしてみます。

以前、mercurialプラグインをインストールしたことがあるので、
このプラグインを使うことにしました。

EclipseにMercurialプラグインをインストールし、bitbucketにプッシュする



テスト用のプロジェクトを作成し、適当にソースファイルを作成します。
プロジェクト名を右クリックし、[チーム]-[プロジェクトの共用]を選択。

93_002.png



複数のプラグインをインストールしている場合は、どのリポジトリータイプを使用するか
選択画面が表示されます。
Mercurialを選択して次へ。

93_003.png



プロジェクトのパスが正しいことを確認して完了。

93_004.png


これで、一旦ローカルにMercurialのリポジトリが作成されました。

プロジェクト名を右クリックし、[チーム]-[コミット]を選択します。

93_005.png


コミット時のメッセージを入力し、コミットするファイルを選択。
OKをクリックします。

93_006.png



これでローカルへのリポジトリ作成とコミットが終わりました。
ローカルのリポジトリをサーバーにpushしてやります。

プロジェクト名を右クリックし、[チーム]-[Push]を選択します。

93_007.png


リポジトリロケーションには、
http://(サーバー名)/hg/(リポジトリ名)
を指定してやります。

ちなみに、/hg/はこの名前でapacheの設定ファイルを記載しているからで、
環境により異なります。

ユーザー名は、debianにいるユーザー名、パスワードを入力します。

93_008.png



登録の確認画面です。完了を押してpushを実行します。

93_009.png








登録の確認



ちゃんとpushされたかブラウザから確認してみます。

http://(サーバー)/hg/を表示し、pushしたリポジトリ名をクリック。

93_010.png



何か登録されています。

93_011.png


ちゃんと作成したソースがコミットされていました。

93_012.png





【参考URL】

Setup Mercurial on Debian 5 with Apache
http://www.chenit.com.au/blog/setup-mercurial-1-31-on-debian-5-with-apache/

hgweb.cgiでmercurialのリポジトリポータルを作ったよ
http://heartbeats.jp/hbblog/2012/04/hgwebcgimercurial.html

Mercurial設定 -Debian
http://www.devsite.jankh.net/desetmercurial.html

hgweb の見た目を変更する
http://blog.santalinux.net/?p=393

Publishing Repositories with hgwebdir.cgi
http://mercurial.selenic.com/wiki/HgWebDirStepByStep/
関連記事

コメント

非公開コメント

プロフィール

Author:symfo
blog形式だと探しにくいので、まとめサイト作成中です。
Symfoware まとめ

PR




検索フォーム

月別アーカイブ