Настройка Сервера Репозитория На Базе Scm-Manager Под Debian

Я столкнулся с тем, что репозитории разбросаны по разным серверам с разными настройками без возможности централизованного управления и мониторинга.

Возникла идея сделать одно место хранения со следующими требованиями:

  • авторизация пользователя через Active Directory
  • уведомления по электронной почте о push-уведомлениях
  • управление и создание репозиториев, а также контроль доступа через веб-интерфейс
  • возможность размещать Mercurial, git, svn
  • простота развертывания
  • Поддержка SSL
Изучение Google и тестирование установок различного ПО привели меня к SCM-менеджеру, который позволил мне реализовать все требования практически из коробки.

Сервис реализован на Debian 8.3 x64. Ниже описан процесс установки и настройки:

1. Установка Mercurial и SCM-Manager

Установите Mercurial и доп.

пакеты:

  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
   

sudo apt-get install mercurial ca-certificates default-jre

Перейдем в директорию, куда будем устанавливать SCM-Manager:

cd .



Загрузите последнюю версию с Официальный веб-сайт :

sudo wget https://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm//scm-server/1.46/scm-server-1.46-app.tar.gz

Разархивируем:

sudo tar -xvf scm-server-1.46-app.tar.gz

Удалите скачанный архив:

sudo rm scm-server-1.46-app.tar.gz

Запускаем SCM-Менеджер:

sudo /opt/scm-server/bin/scm-server start

На данном этапе сервис полностью функционален и готов к работе в базовой конфигурации.

Веб-интерфейс доступен по адресу: локальный хост :8080. Логин и пароль администратора по умолчанию: scmadmin. Но продолжим настройку.



2. Автозагрузим SCM-Manager

Создайте файл /etc/init.d/scmserver:

sudo mcedit /etc/init.d/scmserver

В созданный файл введите следующее:

#!/bin/sh ### BEGIN INIT INFO # Provides: sscmserver # Required-Start: # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Seapine Surround SCM Server # Description: SCM Server init file ### END INIT INFO SCM_SERVER="<b><i>*path_to_install_directory*</i></b>/scm-server/bin/scm-server" start() { "$SCM_SERVER" start } stop() { "$SCM_SERVER" stop } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; *) echo $"Usage: $0 {start|stop|restart}" exit 2 esac

Исправим права, чтобы файл был исполняемым:

sudo chmod 755 /etc/init.d/scmserver

Добавить в автозагрузку:

sudo update-rc.d scmserver defaults



3. Перенос сервиса на другой порт

По умолчанию веб-интерфейс доступен по http на порту 8080. Для изменения необходимо выполнить следующие действия.

Отредактируйте файл server-config.xml:

sudo mcedit /***path_to_install_directory***/scm-server/conf/server-config.xml

Ищем раздел:

<set name="port"> <systemproperty name="jetty.port" default="<b>8080</b>"> </systemproperty></set>

Меняем его на нужный, сохраняем файл и перезагружаем сервис:

sudo /etc/init.d/scmserver restart



4. Добавьте SSL

Перейдем в директорию с конфигом:

cd /***path_to_install_directory***/scm-server/conf/

Формируем сертификат на 1 год:

sudo keytool -genkey -alias scm -validity 365 -keyalg RSA -keystore keystore.jks

Редактируем конфиг:

sudo mcedit /***path_to_install_directory***/scm-server/conf/server-config.xml

Раскомментируем строки SSL-коннектора и укажем пароль (вместо *пароль*) для хранилища ключей, который мы ввели при его создании, порт, на котором он будет прослушивать SSL («Порт»), а также укажем местоположение хранилища ключей:

<Call name="addConnector"> <Arg> <New class="org.eclipse.jetty.server.ssl.SslSelectChannelConnector"> <Arg> <!-- Exclude SSLv3 to avoid POODLE vulnerability. See https://groups.google.com/d/msg/scmmanager/sX_Ydy-wAPA/-Dvs5i7RHtQJ --> <New class="org.eclipse.jetty.http.ssl.SslContextFactory"> <Set name="excludeProtocols"> <Array type="java.lang.String"> <Item>SSLv2Hello</Item> <Item>SSLv3</Item> </Array> </Set> </New> </Arg> <Set name="Port"><b>443</b></Set> <Set name="maxIdleTime">30000</Set> <Set name="keystore"><SystemProperty name="basedir" default=".

" />/conf/keystore.jks</Set> <Set name="password">***password***</Set> <Set name="keyPassword"><b>***password***</Set> <Set name="truststore"><SystemProperty name="basedir" default=".

" />/conf/keystore.jks</Set> <Set name="trustPassword">***password***</Set> </New> </Arg> </Call>

При необходимости смотрим отпечатки пальцев:

keytool -list -keystore keystore.jks

В процессе настройки SSL столкнулся с проблемой, что при прошивке через ssl сервер упорно жаловался на SSL и не хотел проталкивать.

Проблема оказалась в том, что в Python 2.7.9 и более поздних версиях запрет на самоподписанные сертификаты был включен по умолчанию.

Чтобы отключить эту опцию, отредактируйте файл:

sudo mcedit /usr/lib/python2.7/ssl.py

Мы меняемся _create_default_https_context = create_default_context на _create_default_https_context = _create_unverified_context .

Перезагружаем сервис для применения изменений:

sudo /etc/init.d/scmserver restart

На этом настройка через консоль завершена и дальнейшая настройка продолжится через веб-интерфейс.



5. Настройка SCM-Manager через веб-интерфейс

Зайти в веб-интерфейс локальный хост :8080. Удалить анонимный доступ и сменить пароль на встроенный администратора.

В веб-интерфейсе зайдите в «Безопасность» — «Пользователи» -> удалить пользователя «аноним» -> сменить пароль пользователя «scmadmin».

Установка плагинов для авторизации через AD, отправки почты, отправки push-уведомлений.

В веб-интерфейсе заходим в «Конфиг» — «Плагины»: Для авторизации через AD установите: «scm-auth-ldap-plugin» Для отправки почты установите: «scm-mail-plugin» Для push-уведомлений установите: «scm-notify-plugin» Установка плагина для просмотра активности в репозиториях через веб-интерфейс: В веб-интерфейсе заходим в «Конфиг» — «Плагины».

Установите плагин: «scm-activity-plugin» Чтобы завершить установку плагинов, перезапустите службу:

sudo /etc/init.d/scmserver restart

Настройка плагина «LDAP Authentication».

В веб-интерфейсе перейдите в «Конфигурация» — «Основные» — раздел «Аутентификация LDAP».

Профиль: «Активный каталог» Базовый DN: дайте OU с пользователями для авторизации DN соединения: пользователь для авторизации SCM-Manager в AD Пароль подключения: (пароль пользователя для авторизации SCM-Manager в AD) URL-адрес хоста: IP и порт контроллера домена Включите группы объявлений Nester: нет Используйте StartTLS: нет (включить/отключить шифрование при подключении к AD) Давать возможность: да (включить/отключить плагин) После внесения настроек нажмите кнопку «Сохранить», чтобы сохранить их.

После внесения настроек вы можете протестировать настройки с помощью кнопки «Проверить соединение».

Теперь любой пользователь домена из указанного OU может войти в систему.

Но при этом по умолчанию у него нет прав нигде и он не сможет увидеть ни один репозиторий.

Администратору необходимо предоставить доступ пользователю, добавив его в список доступа репозитория или в группу, которой предоставлен доступ к необходимым репозиториям.

Настройка плагина для отправки почты: в веб-интерфейсе перейдите в «Конфигурация» — «Основные» — раздел «Настройка почты».

Установите следующие параметры: Хозяин: Адрес SMTP-сервера Порт: Порт SMTP-сервера Имя пользователя: логин для авторизации на SMTP сервере Пароль: пароль пользователя для авторизации на SMTP-сервере От: от кого придет письмо? Транспортная стратегия: SMTP_PLAIN (пароль в открытом виде) Префикс темы: (который будет вставлен в начале темы) Вы можете проверить сделанные настройки с помощью кнопки «Проверить конфигурацию».

Измените расположение репозиториев на сервере: в веб-интерфейсе перейдите в «Конфигурация» — «Типы репозиториев».

В разделах для SVN, Mercurial, Git пропишите свой путь в строках «Каталог репозитория».

Создание репозиториев: в веб-интерфейсе перейдите в «Основное» — «Репозитории», нажмите «Добавить».

В поле «Имя» укажите название репозитория, в поле «Тип» выберите тип репозитория.

Настройка push-уведомлений по электронной почте для репозиториев: в веб-интерфейсе зайдите в «Основное» - «Хранилища», выберите репозиторий, в котором хотите настроить push-уведомления по электронной почте, внизу появятся закладки, перейдите на вкладку «Уведомления» и заполните : Уведомить контактное лицо репозитория: нет Использовать автора как адрес отправителя :нет Электронная почта для каждого нажатия: нет Максимальное количество строк различия: 1000 (максимальное количество строк в письме, в котором будут показаны изменения, внесенные в файлы репозитория) Добавьте адрес электронной почты, на который будут приходить уведомления, нажав кнопку «Добавить».

Сохраните изменения, нажав кнопку «ОК».

На этом настройка конфигурации сервера по заданным условиям завершена и сервис готов к использованию.

SCM-Server позволяет импортировать репозитории с одним ограничением — он не может импортировать репозитории из мест, где требуется авторизация.

Теги: #настройка Linux #руководство #Debian #руководство #scm-manager

Вместе с данным постом часто просматривают: