私は、仕事で(プライベートでも?)よくGitlistっていう便利なgitビューワを使っています。
正直、自分一人だったら要らないんですが、共同作業するなら、必ず一人はいますよね。「わたしgit使えないんで(キリッ」みたいな訳の分からないことをいう人が。
まぁ事情はともかく、Gitllistは、Gitビューワとして非常にシンプルで最低限の機能はあるものなので、いろいろなサーバに建てるために
git clone https://github.com/klaussilveira/gitlist.gitくらいは、いつでもコピペできるようにしてあったりします。
cd gitlist/
curl -s http://getcomposer.org/installer | php
php composer.phar install
chmod 777 cache/
sudo a2enmod rewrite
sudo /etc/init.d/apache2 restart
環境によっては
sudo a2enmod userdirも必要ですね。まぁそれくらいは誤差の範囲です。
sudo /etc/init.d/apache2 restart
ただ、最近になって、Ubuntu 14.04のサーバを手にしたのですが、「アレッ?」ってなりました。
最終的には
http://aoba.web-hack.org/gitlist/
にあるように、ちゃんと動いたのですが、ユーザディレクトリでRewriteがなかなか動かなくてちょっと戸惑いました。
Directory /home/*/public_html/ > AllowOverride Allとか書く場所は…
正直、これだけで躓きました。他はフィーリングで行けます。今まで(Apache 2.2)だと、/etc/apache2/sites-available/defaultあたりに、それっぽい記載があったので、真似して
<Directory /home/*/public_html>
AllowOverride All
</Directory>
とかてきとーに書いていました。(セキュリティの云々はともかくとして…)
しかし、Apache 2.4になって、/etc/apache2/sites-available/defaultは見当たりません。
一体どこに行ったのか・・・。
じつは/etc/apache2/apache2.confにそれっぽい記載があります。
でも、本家confに書いちゃうのって微妙ですよね…。
というわけで、いろいろ試してみたところ、
/etc/apache2/conf-available/rewritable-userdir.conf
<Directory /home/*/public_html>こんなかんじで1ファイル作って、
AllowOverride All
</Directory>
sudo a2enconf rewritable-userdirってやれば、本家のconfigをオーバーライドする感じで、設定が出来ました。(confにするかsiteにするかは悩ましいところですが…)
sudo /etc/init.d/apache2 restart
Apache2で「あれ?AllowOverrideの設定箇所どこ行った??ユーザディレクトリでRewrite効かないぞ?!」ってなった方は、ぜひお試しあれ。
(参考)
以下、完全に個人的な趣向の問題ですが、Gitlistをちょっとだけ手直しして使ってます。
nano src/GitList/Config.php
public static function fromFile($file)
{
if (!file_exists($file)) {
die(sprintf('Please, create the %1$s file.', $file));
}
$data = parse_ini_file($file, true);
+ $repo = parse_ini_file($file.".repos.inc");
+ $data["git"]["repositories"] = $repo["repositories"];
$config = new static($data);
$config->validateOptions();
return $config;
}
これで、
config.ini
[git]
client = '/usr/bin/git' ; Your git executable path
default_branch = 'master' ; Default branch when HEAD is detached
;repositories[] = '/home/git/repositories/' ; Path to your repositories ★←コメントアウト
; If you wish to add more repositories, just add a new line
; WINDOWS USERS
;client = '"C:\Program Files (x86)\Git\bin\git.exe"' ; Your git executable path
;repositories[] = 'C:\Path\to\Repos\' ; Path to your repositories
config.ini.repos.inc
;QAEP
repositories[] = /home/yi01/mirror/LA.BF64.1.1-00110-8x94.0/
;AOSP
;repositories[] = /home/yi01/mirror/android-5.0.0_r2/
こうすることで、純粋なconfigと、リポジトリのメンテを別ファイルで行うことができるようになります。