Как стать автором
Поиск
Написать публикацию
Обновить

Поднимаем собственный git сервер GitBlit на хостинге Openshift

Время на прочтение4 мин
Количество просмотров26K


Привет, Хабр!
Все программисты делятся на тех, кто использует систему контроля версий, и тех кто ещё ёё не использует. Одной из самых популярных на сегодняшний день, является git. И хотя его структура направлена на децентрализованное хранение данных, все мы пользуемся github, assembla, bitbucket или githost. Главный недостаток этих хостингов, в том, что это чужие проекты, которые в любой момент могут прикрыть ваш аккаунт или слить данные налево. И тут на сцене появляется GitBlit! Git сервер на Java, полностью контролируемый вами, с множеством плюшек и веб-интерфейсом. Сегодня будем запускать его на бесплатном хостинге от Redhat.



Преамбула, можно не читать


Узнав в начале лета про бесплатный хостинг от Redhat, сразу захотел что-нибудь там разместить, однако была проблемка: веб-разработкой не занимаюсь, проектов нет и вроде как ни какой хостинг мне не нужен. Наиболее падок человек на халяву, а это была именно халява, поэтому мой мозг выдал идею: «А давай сделаем свой собственный git сервер!». После гугления я обнаружил только один git сервер на Java, который не только активно разрабатывался, но и мог, по заверениям автора, работать на хостинге openshift. После тестов и введения в активное пользование появилось жгучие желание рассказать о нем всем в округе. Сразу было написано полстатьи, но вдруг наступило лето, и, как следствие, все проекты были заморожены до осени. Осень наступила, я наконец дописал статьи и представляю её на ваш суд.

Чуть-чуть теории, основные особенности.


Описание возможностей честно содрано с сайта и переведено на наш великий и могучий.

Четыре типа конфигураций контроля доступа для каждого хранилища:
  • Анонимный просмотр, клонирование и загрузка в репозиторий
  • Авторизованная загрузка в репозиторий
  • Авторизованные клонирование и загрузка в репозиторий
  • Авторизованные просмотр, клонирование и загрузка в репозиторий
  • Заморозка репозитория (только для чтения)


Основные плюшки:
  • Основано на JGit SmartHTTP сервлете
  • Возможность объединения с другими серверами Gitblit
  • RSS / JSON RPC интерфейс
  • Кроссплатформенный Java Gitblit-менеджер
  • Веб-интерфейс адаптированный для телефонов, планшетов и обычных компьютеров
  • Использование groovy скриптов в хуках перед загрузкой на сервер и после; можно задать действие хуков для отдельного репозитория или глобально, для всех
  • Уведомления по электронной почте после загрузки на сервер (через скрипт sendmail.groovy)
  • Индексация Lucene ветвей репозитория
  • Администраторы могут создавать, редактировать, переименовывать или удалять репозитории, пользователей и группы через веб-интерфейс или интерфейс RPC(менеджер)
  • Владельцам репозитория доступно редактирование через веб-интерфейс
  • Администраторы и владельцы репозитория могут установить главную ветвь через веб-интерфейс или интерфейс RPC
  • LDAP аутентификации и дополнительный LDAP список пользователей
  • Интеграция с gravatar
  • Поддерживается отображения Git тегов
  • Поддерживается отображения GH-страниц (Jekyll не поддерживается)
  • Поддерживается отображения файлов Markdown
  • Статистика ветвей (используется Google Charts)
  • RSS каналы ветвей
  • Поддерживается использование часового пояса браузера при отображении даты и времени
  • Поддерживается скрытие e-mail адресов автора и коммиттера
  • Регистронезависимый поиск по сообщениям коммитов, авторам и коммиттерам
  • Подсветка синтаксиса исходного кода
  • Дополнительные утилиты
  • Страница документации, содержащая все Markdown файлы репозитория
  • Страница Ticgit (на основе последнего выпуска MIT bf57b032 2009-01-27)


Языки:
  • Английский
  • Японский
  • Испанский
  • Польский

Есть желание перевести на Великий и Могучий?
Добро пожаловать на www.getlocalization.com/gitblit

Скриншоты: gitblit.com/screenshots.html
Демо сервер: demo-gitblit.rhcloud.com

Теперь переходим к практике


Установка


Регистрируемся на openshift
Создаём JBoss Application Server https://openshift.redhat.com/app/console/application_types/jbossas-7
Дальше, следуя инструкциям, добавляем свой ssh-ключ и выполняем git clone.
У меня, например так:
git clone ssh://461e96291a2d2fb96b4423a0a329c7@habr-dark008.rhcloud.com/~/git/habr.git/

Переходим в папку приложения:
cd habr/

Очищаем папку от стандартной заглушки:
rm -R *

Скачиваем gitblit:
wget https://gitblit.googlecode.com/files/express-1.1.0.zip

Разархивируем в папку habr и удаляем архив:
unzip express-1.1.0.zip && rm express-1.1.0.zip


Настраиваем конфиг по адресу: habr/deployments/ROOT.war/WEB-INF/web.xml
Устанавливаем значения true:
web.enableRpcManagement
web.enableRpcAdministration

А у web.forwardSlashCharacter на !

Как здравомыслящие параноики перенаправляем весь трафик через https.
Создаём файл jboss-web.xml в этой же папке (WEB-INF) со следующим содержанием:

<jboss-web>  
      <security-domain>jboss-web-policy</security-domain>  
      <valve>  
        <class-name>org.jboss.web.rewrite.RewriteValve</class-name>  
      </valve>  
</jboss-web>


Создаём файл rewrite.properties в этой же папке (WEB-INF) со следующими правилами переадресации:

RewriteCond %{HTTP:X-Forwarded-Proto} http  
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R,L]


На этом настройка серверной части закончена.
Заливаем данные на сервер, выполняя сакральное:

git add .
git commit -m 'Init git server'
git push


Теперь последний этап настройки.


Скачиваем менеджер для удалённого администрирования gitblit: gitblit.googlecode.com/files/manager-1.1.0.zip

Подключаемся к нашему серверу habr-dark008.rhcloud.com, логин и пароль стандартные: admin, admin.
Необходимо лишь сменить пароль администратора, остальные настройки на ваше усмотрение.

Сервер так же можно настроить через веб-интерфейс, но автор советует использовать менеджер: в нём больше настроек, меньше глюков.
Более тонкая настройка: gitblit.com/setup.html

Ссылки


Исходники: github.com/gitblit или code.google.com/p/gitblit/source/list
Баг-трекер: code.google.com/p/gitblit/issues/list
Обсуждение: groups.google.com/group/gitblit
Google+: plus.google.com/114464678392593421684

Спасибо Суворову Андрею за рецензирование текста.
Теги:
Хабы:
Всего голосов 33: ↑29 и ↓4+25
Комментарии24

Публикации

Ближайшие события