30 апреля 2012 г. Debian FreeBSD Git Gitweb Linux fcgiwrap

Debian. Установка и настройка Gitweb + Nginx

Продолжаем обсуждение инструментария для git-репозиториев, сегодня расскажу про GitWeb, он представляет из себя простую веб-морду для визуализации репозиториев Git'а, в ней можно будет лицезреть свои проекты, историю и т.д., вообщем всё что необходимо.

Пользователем Mercurial внешний вид уже знаком, так как его предоставлял hgweb:
[web]
# стиль gitweb
style = gitweb

Установка

Собирать буду частично из исходников, так как нам понадобится вменяемый fcgiwrap (в Debian очень старая версия 1.0, которая нам просто не подойдет). Нам понадобится fcgiwrap 1.0.3 для запуска "gitweb/index.cgi".

sudo apt-get install libfcgi-dev gitweb

cd ~/Downloads
git clone git://github.com/gnosek/fcgiwrap.git
cd fcgiwrap/
autoreconf -i
./configure 
make && sudo make install

fcgiwrap выбран потому что он уже использовался у меня на сервере и я решил найти ему очередное применение. На странице GitWeb на GitHub'е есть инструкция для gunicorn.

Настройка

Я переписал оригинальный (читать старый из Debian) init-скрипт fcgiwrap'a, который можете взять тут.
Скопируйте его в "/etc/init.d".

Без скрипта можете запустить так:

fcgiwrap -s tcp:127.0.0.1:8088 -f

Со скриптом так:

service fcgiwrap start

Теперь перейдем к Nginx. Отредактируйте "/etc/nginx/nginx.conf":

upstream gitweb {
    server 127.0.0.1:8088;
}

И ваш файл виртуального хоста:

server {
    listen 80;
    server_name gitweb.example.org;
    root /usr/share/gitweb;

    location ~* \.(jpg|txt|jpeg|gif|png|ico|css|zip|js|swf)$ {
        expires 0;
    }

    location / {
        fastcgi_pass gitweb;
        fastcgi_param QUERY_STRING $query_string;
        fastcgi_param REQUEST_METHOD $request_method;
        fastcgi_param REQUEST_URI $request_uri;
        fastcgi_param SCRIPT_FILENAME $document_root/index.cgi;
    }
}

Откройте файл "/etc/gitweb.conf" и укажите путь до репозиториев:

# path to git projects (<project>.git)
$projectroot = "/home/git/repositories";

...

Перезагружаем Nginx и наслаждаемся!

nginx -s reload

А какже git-instaweb?

Простой обозреватель вашего репозитория на основе GitWeb, но когда репозиториев несколько. Минус у этого решения один - он не преднозначен для запуска на нескольких репозиториях. Точнее вам придется запускать копию для каждого репозитория на разных портах и проксировать на них.

git instaweb --httpd=webrick [--start | --stop | --restart]
# --httpd поддерживает apache2, lighttpd, mongoose и webrick (по умолчанию lighttpd).
# --local слушает только локальный интерфейс (127.0.0.1)
# --port можно указать нужный порт (по умолчанию 1234)

Также вы можете указать в ".gitconfig" нужные настройки для instaweb:

[instaweb]
httpd=webrick

Ещё можно почитать:
Pro Git 4.6 Git on the Server GitWeb
How To: Install and Configure GitWeb

Комментарии

и

fcgiwrap -s tcp:127.0.0.1:8088 -f
и
service fcgiwrap start
cрабатывают, но консоль не отпускают.

fcgiwrap -s tcp:127.0.0.1:8088 -f &
сработало, но у меня есть сомнения в верности такого решения.

Почему есть сомнения?

Как вариант - можешь запустить в скрине, или аналогичным способом

Почему есть сомнения?

ну как-то, обычно всё само демонизируется, а так кажется у меня где-то ошибка.

fcgiwrap -s tcp:127.0.0.1:8088 -f &

как после этого отключить его? service fcgiwrap stop не помогает. в man fcgiwrap не густо с опциями вообще.
пока только kill'ом убиваю.

Ну при запуске храни его pid, а в stop() киляй по пиду, это нормально

Оставьте свой комментарий

Markdown