Установка и настройка GitLab в ArchLinux

Здравствуйте. Захотелось мне однажды необычного. Установить gitlab под ArchLinux. Однако нашелся только один официальный мануал и тот только для Ubuntu/Debian GitLab Installation. Он не совсем подходил — поэтому я решил написать эту статью которая вам помжет установить gitlab. (Возможно, этот мануал подойдет и для других дистрибутивов например gentoo.)

1. Подготовка и установка пакетов.

Для правильной работы gitlab нам потребуется установить git, ruby, redis, icu, openssh, libxml2, libxslt, curl, logrotate, libffi, gdbm, readline, zlib, libyaml.
В качестве web-сервера рекомендуют использовать nginx, значит установим и его.
Так-же нам понадобится база данных. Я использовал по рекомендациям postgresql.
Поэтому выполняем:
# pacman -S postgresql nginx git ruby redis icu openssh libxml2 libxslt curl logrotate libffi gdbm readline zlib libyaml

Запускаем redis и добавляем в автозагрузку
# systemctl start redis
# systemctl enable redis

В ArchLinux — ruby и git свежий. Поэтому компиляция из исходников отменяется.

Чтобы работала отправка почты нужно установить mail server. Например postfix:
# pacman -S postfix


2. Добавление пользователя

Добавим пользователя для GitLab. Рекомендуется добавить пользователя git. Можно и другое имя использовать, однако тогда вам придется поменять много путей в конфигах.
# useradd -m -s /usr/bin/bash git

Так-же установим пароль:
# passwd git

Настроим права для домашнего каталога для правильной работы nginx.
# chmod 751 /home/git


3. Установка GitLab shell

Для удобства зайдем под новым пользователем.
Вводим
# su git

Установим bundler для ruby
$ gem install bundler

И добавим в переменную PATH путь к установленным бинарникам в .bashrc
$ nano ~/.bashrc
export PATH="`ruby -e 'puts Gem.user_dir'`/bin:$PATH"

Переходим в домашний каталог
$ cd ~

Клонируем gitlab-shell
$ git clone gitlab.com/gitlab-org/gitlab-shell.git -b v1.9.3

Переходим в каталог
$ cd gitlab-shell

Копируем конфиг, после чего открываем любимым редактором ( я использовал nano )
$ cp config.yml.example config.yml
$ nano config.yml

В нем меням gitlab_url на свой.
Запускаем установку
$ ./bin/install


3. Настройка базы данных

Инициализируем postgresql
# su — postgres
$ initdb --locale en_US.UTF-8 -E UTF8 -D '/var/lib/postgres/data'
$ exit

Запускаем и включаем автозагрузку
# systemctl start postgresql
# systemctl enable postgresql

Заходим опять под пользователя postgres для создания пользователя и базы
# su — postgres
$ psql -d template1
template1=# CREATE USER git;
template1=# CREATE DATABASE gitlabhq_production OWNER git;
template1=# \q
$ exit

Проверяем подключение под новым пользователем (git).
$ psql -d gitlabhq_production


4. Установка GitLab

Переходим в домашний каталог и клонируем GitLab (на момент написания версия была 6-8)
$ cd /home/git
$ git clone gitlab.com/gitlab-org/gitlab-ce.git -b 6-8-stable gitlab
$ cd gitlab

Настраиваем. В конфиге нужно будет поменять localhost на ваш адрес (например example.com)
$ cp config/gitlab.yml.example config/gitlab.yml
$ nano gitlab.yml

Создаем специальные директории и назначаем права
$ mkdir /home/git/gitlab-satellites
$ chmod u+rwx,g+rx,o-rwx /home/git/gitlab-satellites

Копируем конфиг Unicorn
$ cp config/unicorn.rb.example config/unicorn.rb

В нем можно включить режим кластера если у вас высоконагруженный сервер.
Также можно увеличить количество воркеров.
Копируем еще один конфиг
$ cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb

И настраиваем сам git
$ git config --global user.name «GitLab»
$ git config --global user.email «gitlab@localhost»
$ git config --global core.autocrlf input

Далее настраиваем конфиги отвечающие за подключение к базе данных:
$ git cp config/database.yml.postgresql config/database.yml

И запрещаем всем кроме юзера git их читать и записывать.
$ chmod o-rwx config/database.yml

Устанавливаем Gems
$ cd /home/git/gitlab
$ bundle install --deployment --without development test mysql aws

Инициализируем базу данных и активируем дополнительные возможности
bundle exec rake gitlab:setup RAILS_ENV=production

Введите yes чтобы создать нужные таблицы.
Если все прошло успешно появится надпись:
Administrator account created:

Установка инит скрипта. Т.к. в archlinux своя инит система (systemd) этот шаг можно пропустить. Однако чтобы проверка работы gitlab отрабатывала корректно лучше все-таки скопировать этот скрипт (впрочем можно и systemd unit написать, который будет запускать этот скрипт)
# cp lib/support/init.d/gitlab /etc/init.d/gitlab

Копируем конфиг logrotate
# cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab

Выполняем проверку статуса приложения
$ bundle exec rake gitlab:env:info RAILS_ENV=production

Компилируем ассеты
$ bundle exec rake assets:precompile RAILS_ENV=production

Запускаем gitlab
$ lib/support/init.d/gitlab start

5. Настройка Nginx

Тут все просто. Копируем файл с настройками сервера
# cp lib/support/nginx/gitlab /etc/nginx/gitlab

Правим конфиг nginx
# nano /etc/nginx/nginx.conf

В нем комментируем дефолтный сервер. И добавляем в конец http секции:
include /etc/nginx/gitlab;

Включаем nginx и добавляем в автозагрузку
# systemctl start nginx
# systemctl enable nginx

Готово!
Теперь вы можете проверить работу всей системы запустив
$ cd /home/git/gitlab
$ bundle exec rake gitlab:check RAILS_ENV=production

Если все хорошо — можете логиниться на ваш сайт:
root
5iveL!fe


Заключение

В целом все достаточно не сложно. Еще некоторая информация есть по ссылке, которую я давал вначале. Если есть вопросы или что-то не выходит спрашивайте.
Tags:
git, archlinux, linux, gitlab

You can't comment this post because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author's username will be hidden by an alias.