Установка простого просмоторщика git репозиториев - gitlist на CentOS 6 с Nginx
Понадобилось мне развернуть простейший web просмоторщик git репозиториев на сервере. Главными критериями выбора были лёгкость, простота и написанный на PHP без лишних зависимостей. Собственно, какое либо управление репозиторием было мне ни к чему. Выбор, увы был невелик и в итоге я остановился на gitlist.
Gitlist - это простой web просмоторщик git репозиториев. Написан на PHP. Выполняет собственно только одну задачу - позволяет просматривать git репозитории: коммиты, сам код. Есть подцветка синтаксиса и возможность скачать весь код одним архивом. Собственно то, что мне и было нужно.
Для начала подключим необходимые репозитории и установим nginx, php-fpm и git если не установлены:
cd /tmp
wget http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
rpm -ivh nginx-release-centos-6-0.el6.ngx.noarch.rpm
yum install nginx php5-fpm git
Далее необходимо добавить виртуальный хост. В зависимости от Ваших настроек файл может находится в разных местах, но в целом конфиг хоста должен выглядеть примерно так:
server {
server_name git.example.com;
error_log /var/www/git.example.com/log/error.log warn;
root /var/www/git.example.com/html/;
index index.php;
auth_basic "Auth";
auth_basic_user_file /var/www/git.example.com/.htpasswd;
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ~* ^/index.php.*$ {
fastcgi_pass 127.0.0.1:9000;
include fastcgi.conf;
}
location / {
try_files $uri @gitlist;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
add_header Vary "Accept-Encoding";
expires max;
try_files $uri @gitlist;
tcp_nodelay off;
tcp_nopush on;
}
location ~* \.(git|svn|patch|htaccess|log|route|plist|inc|json|pl|po|sh|ini|sample|kdev4)$ {
deny all;
}
location @gitlist {
rewrite ^/.*$ /index.php;
}
}
В gitlist нет никакой системы авторизации и любой желающий обладающей ссылкой может его посмотреть. Поэтому рекомендую использовать http basic авторизацию. В конфиге выше уже есть необходимые строчки. Осталось только добавить пользователя:
htpasswd -c /var/www/git.example.com/.htpasswd USERNAME
В дальнейшем, чтобы добавить пользователей - ключ "-c" не нужен. Он нужен для создания htaccess файла.
Переходим в директорию где будет gitlist и скачиваем последнюю стабильную версию:
cd /var/www/git.example.com/
wget https://s3.amazonaws.com/gitlist/gitlist-0.5.0.tar.gz
mv gitlist html
cd html
mv config.ini-example config.ini
mkdir cache
chmod -R 0775 cache/
Осталось немного подредактировать конфигурационный файл config.ini. Самое главное это указать путь к репозиториям и самому git:
client = '/usr/bin/git'
repositories[] = '/home/git/repositories/'
Проверьте, что у пользователя nginx есть права на чтение, иначе gitlist не сможет отобразить никакие репозитории.