ねこ元帥の中の人@リウマチ

日々の覚書など。ブログ名はオンラインゲームのアカウント名をいつも「ねこ元帥」にしているから。そして、2013年11月リウマチと診断されたとです。(2012年11月から時々手足に原因不明の痛みが発生、2013年9月以降は足の痛みが常態化、2013年12月30日からMTX服用開始、4月過ぎるころにはわずかの痛みが残る程度まで回復して現在に至る。)

fossilリポジトリをapacheで公開する

個人作業用のITSとして使うのにfossilを調べている。
ノートPC内にリポジトリファイルを保管しておくだけでなく、サーバ上に公開してどこからでもアクセスできるようにしておいたほうが便利だけど、リポジトリ毎にポートを別にするのはアクセスするのに面倒なので、apacheからまとめてアクセスできるようにする方法を調べた。
手順は以下の通り。

  1. リポジトリベースのディレクトリを作成する
  2. リポジトリ公開用のcgiスクリプトを作成する
  3. 作成したcgiスクリプトを呼び出すようにapacheの設定を変更する
  4. リポジトリファイルを作成する

リポジトリベースのディレクトリを作成する

sudo mkdir /var/repos
sudo mkdir /var/repos/fossils

リポジトリ公開用のcgiスクリプトを作成する

ファイルをあちこちに置くとバックアップが面倒なので、リポジトリベースのディレクトリ内にcgiスクリプトファイルを置くことにした。

sudo vi /var/repos/fossils/fossil.cgi

リポジトリベースのディレクトリ以下にあるリポジトリファイル (*.fossil) を公開するように設定する。存在しないリポジトリを指定した場合のURLを用意するの面倒なので、ホームページに戻すようにしてある。

#!/usr/bin/fossil
directory: /var/repos/fossils
notfound: http://HOSTNAME/

作成したcgiファイルに実行権限を付与する。

sudo chmod a+x /var/repos/fossils/fossil.cgi

作成したcgiスクリプトを呼び出すようにapacheの設定を変更する

使用しているapacheはパッケージ導入したもので、/etc/httpd/conf.dに設定ファイルを置けば勝手に読み取ってくれる。

sudo vi /etc/httpd/conf.d/fossil.conf

とりあえず使えるように以下のように設定した。
※昔apacheのポケットリファレンスとか買ったけど、まともに読んでいないしapacheの設定自体やったことがない。これから勉強せねば。

ScriptAlias /fossil "/var/repos/fossils/fossil.cgi"
<Location /fossil">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Location>

apacheサービスを再起動する。

sudo /etc/init.d/httpd restart

リポジトリファイルを作成する

リポジトリファイルを作成して、ファイルの所有権をapacheに変更する。
リポジトリ作成時に管理者ユーザと初期パスワードが表示されるのでメモしておく。

sudo fossil init /var/repos/fossils/test.fossil
sudo chown -R apache:apache /var/repos/fossils

パスワード忘れたら以下のコマンドでパスワードを再設定する。

sudo fossil user password USERNAME -R /var/repos/fossils/test.fossil

管理者ユーザ名はリポジトリ作成したときのOSアカウント名になっているはずだが、それも分からない場合は以下のコマンドで作成して権限を付与する。

sudo fossil user new USERNAME -R /var/repos/fossils/test.fossil
sudo fossil user capabilities USERNAME -R /var/repos/fossils/test.fossil


以下のURLでfossilリポジトリのWEBページにアクセスできるようになった。

http://HOSTNAME/fossil/test/

ついでに、以下のコマンドでリポジトリのクローンを作成することができる。

fossil clone http://HOSTNAME/fossil/test/ test_clone.fossil