Установка GITLAB на ARM-платформу (BananaPI M2)

В процессе эксплуатации GIT-хранилища RhodeCode я пришел к мнению, что надо с него мигрировать и благо, что я на него не сильно пока залез. Главная причина по которой я решил с него мигрировать, это его прожорливость и если на одной из клиентских платформ с выделенным сервером он вполне себе прижился, то на моем небольшом VPS он потребляет катастрофически много ресурсов и периодически по этому поводу залезает в swap, после чего скорость его работы падает на столько, что остается только материться. Сегодня будем пробовать не менее прожорливого монстрика GITLAB, но устанавливать его будем на наше файловое хранилище которое как наверное помните по моим предыдущим заметкам построено на ARM-платформе BabanaPI M2.

 
 
Логотип GITA-DEV

Автор: Черноусов Антон aka Gita-Dev
Опубликовано: 17 Май 2018 (последние правки 3 месяца)

admin apt-get aptitude compile debian dev email git gitlab install live mysql rhodecode ubuntu

Установка GitLab на платформу ARM не особо отличается от установки другого ПО для которого имеется официальный репозиторий и сводится к следующим типовым этапам:

  1. Установка необходимого ПО
  2. Подключения репозитория
  3. Установка
  4. Дополнительная настройка

Идея я думаю понятна и мы можем начинать.

ARM система на базе BananaPI M2

Загружаем ключи и подключаем репозиторий

# curl -L https://packages.gitlab.com/gitlab/raspberry-pi2/gpgkey | sudo apt-key add -
# apt-get update
# apt-get install debian-archive-keyring
# apt-get install -y apt-transport-https
# curl -sS https://packages.gitlab.com/install/repositories/gitlab/raspberry-pi2/script.deb.sh | sudo bash
# apt-get update

Устанавливаем GitLab

# aptitude install gitlab gitlab-shell python3-gitlab

Мастер установки довольно дружелюбный и вам необходимо только подтвердить домен который будет использоваться для работы с GitLab, определиться будем ли мы использовать HTTPS в работе и задать тип сертификата который мы собираемся использовать (самоподписанный или Let's encrypt).

Сертификат для Lets encrypt устанавливается автоматически

Но стоит отметить, что не все так гладко и процесс установки у меня завершился с ошибкой:

Could not find gem 'devise-two-factor (~> 2.0.0)'

Решение этого вопроса нашлось довольно быстро и пришлось лишь установить несколько дополнительных пакетов и проверить, что ruby-gems собираются корректно:

# sudo apt-get install cmake libmysqlclient-dev automake autoconf autogen libicu-dev
# cd /usr/share/gitlab
# bundler

Устранение ошибки Could not find gem

Если все прошло корректно, то просто перезапустите установку пакета командой:

# dpkg --configure -a

Если все прошло удачно, то вы увидите подобное сообщение:

Administrator account created:
login.........root
password......5iveL!fe

Возможно, что вы получите ошибку:

/lib/posix_spawn_ext.so: undefined symbol: rb_fix2int

В этом случае вам понадобится обновить ваш Ruby-интерпретатор, но в Ubuntu Linux для ARM платформы это не очень просто и придется пересобрать его из исходных кодов. Исходный код интерпретатора Ruby доступен по адресу https://www.ruby-lang.org/en/downloads/, а компилируется он обычным configure -> make -> make install (я думаю с этим больших проблем у вас не будет).

Возможно вы конечно захотите использовать несколько версий ruby и для этого вы можете воспользоваться механизмом update-alternatives:

# update-alternatives --install /usr/bin/ruby ruby /usr/bin/ruby2.3 500
# update-alternatives --install /usr/bin/ruby ruby /usr/local/bin/ruby 0
# update-alternatives --config ruby

Для нового интерпретатор устанавливаем свой bundler:

# gem install bundler

Естественно, что все rubby-gems потребуется пересобрать:

# cd /usr/share/gitlab
# bundle

Но, по поводу этой же ошибки может иметь место и другая ситуация если у вас 32-х битная система, то вам потребуется провести даунгрэйд библиотеки posix-spawn до версии 0.3.12:

# gem install posix-spawn:0.3.12
# gem uninstall posix-spawn

Select gem to uninstall:
 1. posix-spawn-0.3.12
 2. posix-spawn-0.3.13
 3. All versions
> 2
Successfully uninstalled posix-spawn-0.3.1

Вот собственно это все нестандартные ситуации на которые я натолкнулся при установка GitLab на ARM-платформу. Можно конечно использовать и версию загруженную из GIT-репозитория, но естественно, что у вас в этом случае не будет удобного мастера установки и вам придется проделать очень много операций в консоли.

Описание установки есть на официальном сайте: https://docs.gitlab.com/ee/install/installation.html (я попробовал инструкция рабочая, но времени на установку и настройку ушло очень много).

Установка GIT-LAB из исходных кодов

При установке из исходных кодов я получил ошибку:

ActionView::Template::Error (Could not load compiled manifest from /opt/gitlab-ce/public/assets/webpack/manifest.json - 
have you run `rake webpack:compile`? (original error No such file or directory @ rb_sysopen - /opt/gitlab-ce/public/assets/webpack/manifest.json)):

И тут все понятно, но в документации этот момент упущен почему-то, просто выполните предложенную команду в виде:

# sudo -u git -H bundle exec rake webpack:compile RAILS_ENV=production NODE_ENV=production

После того как все сервисы запустились в штатном режиме, можно авторизоваться в GitLab с логином и паролем полученном при установке системы, по адресу который мы указали мастеру установки.

Запустил

Как мы видим, GitLab в отличие от RhodeCode можно запустить на ARM и даже на довольно слабом ARM (RhodeCode при попытке установки на ARM говорит, что архитектура не поддерживается).

Сброс пароля администратора GitLab

В дополнение, бонусом расскажу как сбросить пароль администратора:

# cd /home/git/gitlab
# sudo -u git -H bundle exec rails console production
> user = User.find(1)
=> #<User id:1 @root>
irb(main):004:0> user.password = 'Password'
=> "Password"
irb(main):005:0> user.password_confirmation = 'Password'
=> "Password"
irb(main):006:0> user.save
Enqueued ActionMailer::DeliveryJob (Job ID: 7d180716-d41d-4723-a700-7b4b7383bf9f) to Sidekiq(mailers) with arguments: "DeviseMailer", "password_change", "deliver_now", gid://gitlab/User/1
=> tru

Как вы видите метод сброса пароля немного непривычный и после смены пароля таким методом, вы дополнительно получите письмо подтверждение.

Похожие статьи

Как установить GITLAB (пошаговое руководство)

Как установить GITLAB (пошаговое руководство)

И еще одна небольшая инструкция по установке web-приложения на Linux-сервер (точнее на Ubuntu Server 16.04). В рамках одного из текущих проектов мне потребовалось развернуть GITLAB на сервер заказчика и естественно мне на этот шаг работы (как в принципе и на весь проект) необходимо подготовить документацию, а так как инструкция по установке внутреннего git-репозитария GITLAB особой коммерческой тайны не представляет, я могу поделиться с вами этим пошаговым руководством.


HTTPS-защита подключений к GITLAB

HTTPS-защита подключений к GITLAB

Как я уже говорил в заметке про установку GITLAB, этот комбайн тащит за собой набор софта включающий в себя Nginx, Postgresql и т.п., а сегодня мы будет отключать использование встроенного в GITLAB Nginx и будем использовать наш центральный Front Nginx, что позволит установить параллельно с GITLAB на одном сервере еще ряд приложений. Одной из побочных задач такого решения служит настройка HTTPS-защиты подключений к нашему внутреннему GIT-репозитарию.


GITLAB - перенос интегрированной базы Postgresql в штатную базу операционной системы

GITLAB - перенос интегрированной базы Postgresql в штатную базу операционной системы

GitLab, это отличный GIT-репозитарий для использования внутри компании с богатым функционалом и простой установкой, как его устанавливать я уже рассказывал и вы наверное обратили внимание, что этот продукт рекомендуется использовать на отдельном хосте и он поставляется полностью со своей инфраструктурой программ окружения. Как отвязать его от использования встроенного Nginx я вам уже рассказал и сегодня мы будем отвязывать его от встроенного сервера Postgresql.


GITLAB - резервное копирование и восстановление

GITLAB - резервное копирование и восстановление

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


Отзывы и комментарии