Здравствуйте. Захотелось мне однажды необычного. Установить gitlab под ArchLinux. Однако нашелся только один официальный мануал и тот только для Ubuntu/Debian GitLab Installation. Он не совсем подходил — поэтому я решил написать эту статью которая вам помжет установить gitlab. (Возможно, этот мануал подойдет и для других дистрибутивов например gentoo.)
Для правильной работы gitlab нам потребуется установить git, ruby, redis, icu, openssh, libxml2, libxslt, curl, logrotate, libffi, gdbm, readline, zlib, libyaml.
В качестве web-сервера рекомендуют использовать nginx, значит установим и его.
Так-же нам понадобится база данных. Я использовал по рекомендациям postgresql.
Поэтому выполняем:
Запускаем redis и добавляем в автозагрузку
В ArchLinux — ruby и git свежий. Поэтому компиляция из исходников отменяется.
Чтобы работала отправка почты нужно установить mail server. Например postfix:
Добавим пользователя для GitLab. Рекомендуется добавить пользователя git. Можно и другое имя использовать, однако тогда вам придется поменять много путей в конфигах.
Так-же установим пароль:
Настроим права для домашнего каталога для правильной работы nginx.
Для удобства зайдем под новым пользователем.
Вводим
Установим bundler для ruby
И добавим в переменную PATH путь к установленным бинарникам в .bashrc
Переходим в домашний каталог
Клонируем gitlab-shell
Переходим в каталог
Копируем конфиг, после чего открываем любимым редактором ( я использовал nano )
В нем меням gitlab_url на свой.
Запускаем установку
Инициализируем postgresql
Запускаем и включаем автозагрузку
Заходим опять под пользователя postgres для создания пользователя и базы
Проверяем подключение под новым пользователем (git).
Переходим в домашний каталог и клонируем GitLab (на момент написания версия была 6-8)
Настраиваем. В конфиге нужно будет поменять localhost на ваш адрес (например example.com)
Создаем специальные директории и назначаем права
Копируем конфиг Unicorn
В нем можно включить режим кластера если у вас высоконагруженный сервер.
Также можно увеличить количество воркеров.
Копируем еще один конфиг
И настраиваем сам git
Далее настраиваем конфиги отвечающие за подключение к базе данных:
И запрещаем всем кроме юзера git их читать и записывать.
Устанавливаем Gems
Инициализируем базу данных и активируем дополнительные возможности
Введите yes чтобы создать нужные таблицы.
Если все прошло успешно появится надпись:
Установка инит скрипта. Т.к. в archlinux своя инит система (systemd) этот шаг можно пропустить. Однако чтобы проверка работы gitlab отрабатывала корректно лучше все-таки скопировать этот скрипт (впрочем можно и systemd unit написать, который будет запускать этот скрипт)
Копируем конфиг logrotate
Выполняем проверку статуса приложения
Компилируем ассеты
Запускаем gitlab
Тут все просто. Копируем файл с настройками сервера
Правим конфиг nginx
В нем комментируем дефолтный сервер. И добавляем в конец http секции:
Включаем nginx и добавляем в автозагрузку
Готово!
Теперь вы можете проверить работу всей системы запустив
Если все хорошо — можете логиниться на ваш сайт:
В целом все достаточно не сложно. Еще некоторая информация есть по ссылке, которую я давал вначале. Если есть вопросы или что-то не выходит спрашивайте.
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
Заключение
В целом все достаточно не сложно. Еще некоторая информация есть по ссылке, которую я давал вначале. Если есть вопросы или что-то не выходит спрашивайте.