GitLab: Миграция

В связи с резко возвросшей активностью в Git было решено мигрировать на более мощное железо.

Подготовка

Устанавливаем GitLab на новом железе и проверяем совпадают ли версии. Если не совпадают, то обновляем версии до актуальной. Создаем резервную копию и переносим конфигурации:

$ gitlab-rake gitlab:backup:create
$ tar cvf gitlab.tar /etc/gitlab
$ scp gitlab.tar /opt/backups/<backup_id>_gitlab_backup.tar <username>@<new-git-ip>:

Развертка GitLab

Логинимся на новое железо и раскидываем файлы по директориям:

$ mkdir /opt/{backups,git-data}
$ tar xvvf gitlab.tar
$ mv -f gitab/gitlab* /etc/gitlab/
$ chown root:root /etc/gitlab -R
$ mv <backup_id>_gitlab_backup.tar /opt/backups
$ gitlab-ctl reconfigure

Восстанавливаем резервную копию и тестируем:

$ gitlab-ctl stop unicorn
$ gitlab-ctl stop sidekiq
$ gitlab-rake gitlab:backup:restore BACKUP=<backup_id>
$ chmod -R ug+rwX,o-rwx /opt/git-data/repositories
$ chmod -R ug-s /opt/git-data/repositories
$ find /opt/git-data/repositories -type d -print0|xargs -0 chmod g+s
$ gitlab-ctl start
$ gitlab-rake gitlab:satellites:create
$ gitlab-rake gitlab:check SANITIZE=true

Добавляем задачу резервного копирования в планировщик задач:

$ crontab -e
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1

Настройка Redis

Чтобы избежать потери данных при большом количестве занятой памяти добавляем в /etc/sysctl.conf параметр «vm.overcommit_memory = 1» и применяем изменения командой «sysctl -p».
Чтобы избежать больших задержек при работе с памятью выполняем «echo never > /sys/kernel/mm/transparent_hugepage/enabled» и вписываем в /etc/rc.local, чтобы команда срабатывала при запуске ОС.

Предлагаю также почитать пост про настройку GitLab Pages.

Порт старой статьи.