Установка простого просмоторщика 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 не сможет отобразить никакие репозитории.


Понравилась статья? Поделись с друзьями!




Комментарии на этом сайте требуют включенного Javascript в вашем браузере. Вероятно, ваш браузер не поддерживает Javascript, или он был отключен по каким-то причинам. Если вы хотите прокомментировать пост, или просто почитать комментарии, то пожалуйста, включите Javascript или попробуйте открыть эту страницу другим браузером.