GitLab: миграция

Подготовка

Устанавливаем 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, чтобы команда срабатывала при запуске ОС.