Gitblit - это веб-интерфейс для работы с репозиториями git. Приложение написано на языке Java и поэтому его довольно легко запустить как под управлением Unix-системы, так и под управлением операционной системы Windows.
Скачиваем и распаковываем архив:
$ 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
Судя по содержимому файла 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. Нужно:
На официальной странице проекта по ссылке 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
Для создания пользователя gitblit выполним команду:
# useradd -M -r gitblit
Создадим каталог приложения вручную:
# 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 *
Создаём файл /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/
Создадим файл /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
Если 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
Для первого входа в веб-интерфейс gitblit используется учётная запись admin с паролем admin.