вторник, 29 сентября 2015 г.

Перенос GitLab

Описание перенос GitLab с версии 6.7.3 (установленного изначально из source code) на версию 7.12.2 (omnibus). Перенос осуществлялся с машины Ubuntu 12 (MySQL) на Ubuntu 14.04.3 (Postgree) (64bit).

Подготовка архива для переноса.

На машине со старым GitLab. 

Заходим под root (или sudo пользователем), переходим в папку с установленным GitLab:

# cd /home/git/gitlab

Выключаем сервис GitLab

# service gitlab stop

Запускаем создание архива (в зависимости от наполнения репозиториями, времени может занять много)

# sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production

По умолчанию архив создастся в tmp/backups/1443309741_gitlab_backup.tar, где 1443309741 - временная печать архива (может со временем в следующих архивах меняться).
После этого подготавливаем дамп MySQL базы для переноса:

# sudo -u git -H mysqldump --compatible=postgresql --default-character-set=utf8 -r 

gitlabhq_production.mysql -u root gitlabhq_production -p
Итого, у нас получиться два файла для переноса на новый сервер:
  • 1443309741_gitlab_backup.tar
  • gitlabhq_production.mysql
После перетягивания на новый GitLab сервер этих двух файлов можно тушить старый GitLab

На машине с новым GitLab.

Устанавливаем omnibus версию GitLab, причём номер её должен совпадать с переносимой версией, в нашем случае, это 6.7.3.

# apt-get update && apt-get upgrade -y
# apt-get install vim mc  curl openssh-server ca-certificates postfix
# wget https://downloads-packages.s3.amazonaws.com/gitlab_6.7.3-omnibus.3-1.ubuntu.12.04_amd64.deb
# dpkg -i gitlab_6.7.3-omnibus.3-1.ubuntu.12.04_amd64.deb

Архивы старых версий: https://about.gitlab.com/downloads/archives/

# gitlab-ctl reconfigure
# gitlab-ctl restart

В случае ошибок установки можно проверить что пошло не так:

# gitlab-ctl status
# gitlab-rake gitlab:check SANITIZE=true

В нашем архиве (1443309741_gitlab_backup.tar) имеется дамп MySQL базы GitLab, который необходимо заменить на обработанный и подготовленный для Postgree.
Переходим в рабочую папку GitLab:

# cd /var/opt/gitlab
# sudo -u git -H mkdir -p tmp/backups/postgresql
# cd tmp/backups/postgresql

Копируем в данную папку наши два файла архива. Не забываем им дать права для git пользователя:

# chown git *

Тащим gitlab конвертер:
# sudo -u git -H git clone https://github.com/gitlabhq/mysql-postgresql-converter.git -b gitlab

Примечание: если git клиент не установлен, тогда выполняем:

# apt-get install git

После установки, приступаем к конвертированию дампа базы:

# sudo -u git -H mkdir db
# sudo -u git -H python mysql-postgresql-converter/db_converter.py gitlabhq_production.mysql db/database.sql
# sudo -u git -H ed -s db/database.sql < mysql-postgresql-converter/move_drop_indexes.ed
# sudo -u git -H tar --delete -f 1443309741_gitlab_backup.tar db/da*
# sudo -u git -H tar rf 1443309741_gitlab_backup.tar db/database.sql

Перетаскиваем "пересобранный архив" в папку c резервными копиями по пути:
# mv 1443309741_gitlab_backup.tar /var/opt/gitlab/backups/

Всё готово для развёртывания резервной копии

Развертывание резервной копии

После того, как мы "пересобранный архив" уложили в папку с резервными копиями GitLab, восстанавливаем:

# gitlab-rake gitlab:backup:restore RAILS_ENV=production
# gitlab-ctl restart

После этого через web интерфейс GitLab проверяем восстановление. Вводим имя пользователя и пароль администратора от старого сервера. 
Если будут ошибки, то можно попробовать: 

# gitlab-ctl reconfigure
В выдаче будут ошибки и рекомендации по их исправлению. Можно выполнить:

# sudo -u git -H /opt/gitlab/embedded/service/gitlab-shell/bin/create-hooks
# gitlab-rake db:migrate RAILS_ENV=production
# gitlab-ctl reconfigure
# gitlab-ctl restart

Обновление до последней версии

Первый вариант - скачиваем (https://packages.gitlab.com/gitlab/gitlab-ce/) и устанавливаем:

# wget https://packages.gitlab.com/gitlab/gitlab-ce/packages/ubuntu/precise/gitlab-ce_7.12.2~omnibus.1-1_amd64.deb/download
# mv download gitlab-ce_7.12.2~omnibus.1-1_amd64.deb
# dpkg -i gitlab-ce_7.12.2~omnibus.1-1_amd64.deb

Второй вариант - обновляемся из репозитория

# curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
# apt-get install gitlab-ce

Также с версии 7.10 в gitlab есть команда обновления:

# gitlab-ctl upgrade

Дополнительно
Создание саттелитов
root@git:~# gitlab-rake gitlab:satellites:create RAILS_ENV=production
Редактирование timeout
Если ruby ест много CPU, то
root@git:~# vim /etc/gitlab/gitlab.rb
#увеличиваем timeout для unicorn (снимаем комментарий и редактируем строки)
unicorn['worker_timeout'] = 300
unicorn['worker_processes'] = 4
root@git:~# gitlab-ctl reconfigure
root@git:~# gitlab-ctl restart

Ссылки







1 комментарий:

  1. Записки: Перенос Gitlab >>>>> Download Now

    >>>>> Download Full

    Записки: Перенос Gitlab >>>>> Download LINK

    >>>>> Download Now

    Записки: Перенос Gitlab >>>>> Download Full

    >>>>> Download LINK

    ОтветитьУдалить