Установка Gitblit

Gitblit - это веб-интерфейс для работы с репозиториями git. Приложение написано на языке Java и поэтому его довольно легко запустить как под управлением Unix-системы, так и под управлением операционной системы Windows.

1. Скачивание репозитория

Скачиваем и распаковываем архив:

$ wget http://dl.bintray.com/gitblit/releases/gitblit-1.8.0.tar.gz
$ tar xzvf gitblit-1.8.0.tar.gz
$ cd gitblit-1.8.0

2. Разработка плана развёртывания

Судя по содержимому файла service-ubuntu.sh, запуск приложения происходит при помощи команды:

/usr/bin/java --chuid $GITBLIT_USER --chdir $GITBLIT_PATH -- $ARGS

По умолчанию настройки имеют следующие значения:

GITBLIT_PATH=/opt/gitblit
GITBLIT_BASE_FOLDER=/opt/gitblit/data
GITBLIT_USER="gitblit"
source ${GITBLIT_PATH}/java-proxy-config.sh
ARGS="-server -Xmx1024M ${JAVA_PROXY_CONFIG} -Djava.awt.headless=true -jar gitblit.jar --baseFolder $GITBLIT_BASE_FOLDER --dailyLogFile"

В файле java-proxy-config.sh можно настроить прокси-сервер, на случай если система, на которой будет развёрнуто приложение, не имеет прямого выхода в Интернет. Будем считать, что нас такой случай не интересует. Если понадобится, можно будет просто соответствующим образом поменять значение ARGS.

Наша задача подготовить окружение для работы приложения и создать service-файл для запуска и остановки приложения через systemd. Нужно:

  1. Установить java
  2. Создать пользователя gitblit, который указан в переменной GITBLIT_USER
  3. Создать каталоги для приложения и его данных и задать значения переменных GITBLIT_PATH и GITBLIT_BASE_FOLDER
  4. Подготовить файл с настройками переменных окружения /etc/default/gitblit
  5. Подготовить service-файл для управления gitblit через systemd
  6. Настроить проксирование запросов к gitblit через nginx

3. Установка Java

На официальной странице проекта по ссылке http://gitblit.com/, в разделе «Java Runtime Requirement» написано, что Gitblit требует для работы Java 7 Runtime Environment (JRE) или Java 7 Development Kit (JDK). Разработкой мы заниматься пока не собираемся, поэтому обойдёмся JRE. В дистрибутиве Debian Stretch имеется только Java версии 8. Установим соответствующий пакет:

# apt-get install openjdk-8-jre-headless

4. Создание пользователя

Для создания пользователя gitblit выполним команду:

# useradd -M -r gitblit

5. Создание каталогов

Создадим каталог приложения вручную:

# mkdir -p /opt/gitblit
# chown gitblit:gitblit /opt/gitblit
# chmod o= /opt/gitblit

Скопируем в него распакованные файлы и проставим права доступа к ним:

# cd /opt/gitblit
# cp -R /home/stupin/gitblit/gitblit-1.8.0/* .
# chown gitblit:gitblit -R *
# chmod o= -R *

6. Создание файла /etc/default/gitblit

Создаём файл /etc/default/gitblit со следующим содержимым:

ARGS="-server -Xmx1024M -Djava.awt.headless=true -jar /home/gitblit/gitblit.jar --baseFolder /home/gitblit/data --dailyLogFile"

В файле /home/gitblit/data/default.properties меняем следующие настройки:

web.canonicalUrl = https://stupin.su/git/
server.contextPath = /
server.httpPort = 8080
server.httpsPort = 0
server.httpBindInterface = 127.0.0.1
server.httpBindInterface = 127.0.0.1

С этими настройками приложение будет принимать подключения по протоколу HTTP на порт 8080 на локальном петлевом интерфейсе. На этот порт мы будем пробрасывать запросы, поступающие в nginx на адрес https://stupin.su/git/

7. Создание service-файла

Создадим файл /etc/systemd/system/gitblit.service со следующим содержимым:

[Unit]

Description=Managing, viewing, and serving Git repositories

[Service]
Type=simple
EnvironmentFile=/etc/default/gitblit
WorkingDirectory=/opt/gitblit
User=gitblit
ExecStart=/usr/bin/java $ARGS
Restart=always

[Install]
WantedBy=multi-user.target

Включим автозапуск сервиса при старте системы и запустим его вручную:

# systemctl enable gitblit
# systemctl start gitblit

8. Настройка проксирования через nginx

Если nginx ещё не установлен, то установить его можно при помощи следующей команды:

# apt-get install nginx-light

Впишем в конфигурацию nginx (в моём случае это файл /etc/nginx/sites-enabled/root) в секцию server следующий блок:

# Gitblit
location /git/ {
  rewrite /git/(.*) /$1 break;
  proxy_redirect off;
  proxy_bind 127.0.0.1;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_pass http://127.0.0.1:8080/;
}

Все запросы, поступающие на адрес https://stupin.su/git/ передаются на обработку на адрес http://127.0.0.1:8080. При этом из адреса URL вырезается базовый каталог /git и запросы поступают в корневой каталог приложения.

И перезагрузим настройки nginx:

# systemctl reload nginx

9. Начальная настройка gitblit

Для первого входа в веб-интерфейс gitblit используется учётная запись admin с паролем admin.

10. Использованные материалы

Install Gitblit On Ubuntu / Fedora / CentOS

Написать автору