GitLab — веб-приложение для управления проектами, создаваемыми на основе git-репозитория. Помимо своих основных функций, эта программа позволяет через веб интерфейс управлять пользователями, правами доступа и многим другим.
Системные требования и подробная инструкция по установке и настройке инструментария есть на официальном сайте. Ниже приведен последовательный список команд с некоторыми комментариями, следуя которым приложение было успешно установлено и протестировано в Debian Squeeze. В процессе установки по официальным мануалам возникают проблемы с невыполненными требованиями или неудовлетворенными зависимостями. В листинге ниже они учтены и исправлены.
Первым делом необходимо заменить устаревшие репозитории Debian по умолчанию на что-то более свежее, например DotDeb (описание добавления здесь). Обновим список пакетов и установим необходимый для начальных операций минимум:
apt-get update apt-get install -y build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl git-core redis-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev
Для работы GitLab требуется Python версии между 2,5 и 3.0, поэтому спокойно ставим содержащийся в стандартном репозитории Debian python 2.7:
apt-get install -y python
Проверяем, что имеются символические ссылки между python и python2:
python --version python2 --version
В случае их отсутствия (разные версии) исправляем:
ln -s /usr/bin/python /usr/bin/python2
Добавляем дополнения с необходимыми утилитами:
apt-get install python-docutils
А вот ruby требуется старше 1.9.3 и вплоть до 2.0.0, поэтому проверяем имеющуюся и при необходимости обновляем вручную:
ruby --version mkdir /tmp/ruby && cd /tmp/ruby curl --progress ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.tar.gz | tar xz cd ruby-2.0.0-p247 ./configure make make install
Устанавливаем gem и инструмент усправления ими bundler:
apt-get install gem gem install bundler --no-ri --no-rdoc
Самое время создать нового пользователя для работы с git и запретить использовать имя для входа в систему:
adduser -disabled-login -gecos 'GitLab' git
Переходим к установке GitLab Shell для доступа к репозиторию по SSH:
cd /home/git apt-get install sudo sudo -u git -H git clone https://github.com/gitlabhq/gitlab-shell.git cd gitlab-shell sudo -u git -H git checkout v1.7.0
Копируем файл конфигурации и вносим изменения в gitlab_url, где указываем доменное имя для будущего репозитория, например ‘http://domain.com/’
sudo -u git -H cp config.yml.example config.yml sudo -u git -H mcedit config.yml
Устанавливаем:
sudo -u git -H ./bin/install
Теперь необходимо создать базу данных для GitLab, который поддерживает PostgreSQL и MySQL. Рассмотрим установку (если нет) и настройку MySQL. Устанавливаем требуемые пакеты (в процессе установки потребует пароль пользователя root для доступа к базе данных):
apt-get install -y mysql-server mysql-client libmysqlclient-dev
Входим в СУБД с ранее указанным паролем:
mysql -u root -p
Создадим нового пользователя для GitLab.Не нужно вводить ‘mysql>’ — это строка приветствия сеанса MySQL, вместо password вводим новый пароль:
mysql> CREATE USER 'gitlab'@'localhost' IDENTIFIED BY 'password';
Создадим базу данных для GitLab:
mysql> CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
Предоставим доступ новому пользователю к только что созданной базе данных:
mysql> GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production`.* TO 'gitlab'@'localhost';
Завершаем сеанс:
mysql> \q
Пробуем войти в новую базу данных под новым пользователем:
sudo -u git -H mysql -u gitlab -p -D gitlabhq_production
Если получаем строку приветствия ‘mysql>’, все настроено верно. Можно выходить:
mysql> \q
Переходим к установке самого GitLab:
cd /home/git/ sudo -u git -H git clone https://github.com/gitlabhq/gitlabhq.git gitlab cd /home/git/gitlab sudo -u git -H git checkout 6-0-stable
Копируем файл конфигурации, снова вводя вместо localhost реальное доменное имя для будущего репозитория:
sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml sudo -u git -H mcedit config/gitlab.yml
Устанавливаем права доступа для git на запись логов и временных файлов:
chown -R git log/ chown -R git tmp/ chmod -R u+rwX log/ chmod -R u+rwX tmp/
Создаем папку под сателлиты:
sudo -u git -H mkdir /home/git/gitlab-satellites
Создаем папки под сокеты и PID, выставляем права доступа:
sudo -u git -H mkdir tmp/pids/ sudo -u git -H mkdir tmp/sockets/ chmod -R u+rwX tmp/pids/ chmod -R u+rwX tmp/sockets/
Для корректной работы с резервными копиями создаем папку uploads с соответствующими правами доступа:
sudo -u git -H mkdir public/uploads chmod -R u+rwX public/uploads
Копируем файл конфигурации Unicorn и при наличии более 2ГБ RAM увеличиваем количество рабочих процессов (workers):
sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb sudo -u git -H mcedit config/unicorn.rb
Задаем глобальные настройки для git:
sudo -u git -H git config --global user.name "git" sudo -u git -H git config --global user.email "git@localhost" sudo -u git -H git config --global core.autocrlf input
Настраиваем БД, для этого копируем файл конфигурации и вводим данные авторизации для доступа к недавно созданной БД:
sudo -u git cp config/database.yml.mysql config/database.yml sudo -u git -H mcedit config/database.yml sudo -u git -H chmod o-rwx config/database.yml
Устанавливаем bundle, обратите внимание на указанную опцию ‘—without … postgres’ (довольно длительный процесс):
cd /home/git/gitlab gem install charlock_holmes --version '0.6.9.4' sudo -u git -H bundle install --deployment --without development test postgres aws
Инициализируем БД:
sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production
Устанавливаем init-скрипт для автозапуска:
cp lib/support/init.d/gitlab /etc/init.d/gitlab chmod +x /etc/init.d/gitlab update-rc.d gitlab defaults 21
Проверяем конфигурацию:
sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production
Если все позиции окрашены зеленым цветом, можно пробовать запускать:
/etc/init.d/gitlab start
Повторно проверяем, в случае ошибки задания глобальных параметров, повторяем ввод команд:
sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production sudo -u git -H git config --global user.name "GitLab" sudo -u git -H git config --global user.email "gitlab@localhost"
Последняя проверка:
sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production
Находим порт, на котором unicorn.rb разместил веб интерфейс (как правило, 8080):
netstat -ntlp
Переходим в браузере по адресу, указанному при настройке, и порту выше, например, http://domain.com:8080. Вводим в форму авторизации логин admin@local.host и пароль 5iveL!fe, заданные по умолчанию.
Для комфортной работы можно установить nginx в роли фронтенда с проксированием на необходимый порт gitlab, для этого устанавливаем веб-сервер (если нет):
apt-get install nginx
Скачиваем конфигурацию виртуального сервера и включаем её с помощью символической ссылки:
curl --output /etc/nginx/sites-available/gitlab https://raw.github.com/gitlabhq/gitlabhq/master/lib/support/nginx/gitlab ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab
При необходимости вносим изменения в файл конфигурации и перезапускаем веб-сервер для принятия изменений:
mcedit /etc/nginx/sites-available/gitlab /etc/init.d/nginx restart
Репозиторий теперь доступен по прямому доменному имени без ввода порта.
Замечание:Если в процессе работы потребовалось сменить доменное имя для рабочего git-сервера, необходимо внести изменения в конфиги nginx, а также файлы, измененные в процессе установки gitlab (они лежат в домашней директории пользователя). После всех процедур перезапустить nginx и gitlab (проверить остановку и повторный запуск процесса unicorn.rb).
Ссылки: