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
Комментарии
и
и cрабатывают, но консоль не отпускают. сработало, но у меня есть сомнения в верности такого решения.Почему есть сомнения?
Как вариант - можешь запустить в скрине, или аналогичным способом
ну как-то, обычно всё само демонизируется, а так кажется у меня где-то ошибка.
как после этого отключить его? service fcgiwrap stop не помогает. в man fcgiwrap не густо с опциями вообще.
пока только kill'ом убиваю.
Ну при запуске храни его pid, а в stop() киляй по пиду, это нормально
Оставьте свой комментарий