GitLab CEのインストールと設定

Linux

はじめに

この記事では、GitLab Community Edition (GitLab CE) のインストールと設定の方法を紹介します。
GitLabのホームページに掲載されている方法は、Enterprise Edition (GitLab EE) なので、eeをceに修正する必要があります。

Download and install GitLab
Download, install and maintain your own GitLab instance with various installation packages and downl...

環境

・Debian buster 64bit
・GitLab Community Edition (GitLab CE)

インストール

GitLabの公式ホームページを参考にインストールします。
公式ホームページでは「gitlab-ee」となっているので「gitlab-ce」に修正します。
postfixのインストール時にタイプを尋ねられるのでインターネットサイト(Internet Site)とします。

sudo apt-get update
sudo apt-get install -y curl openssh-server ca-certificates perl
sudo apt-get install -y postfix
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash


署名には有効期限があります。
最新の署名にアップデートするための下記コマンドは、定期的に実行した方が良いです。

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

パソコンのIPアドレス、またはホスト名を指定してインストールします。
今回は内部用なのでhttpで暗号化していません。
例えばホスト名が「xxxxx.com」でポート81番を使用し、ディレクトリを「gitlab」とすると以下のようになります。

ポート番号を指定しない場合は80番ポートで「http://xxxxx.com/gitlab」となります。
今回は無料のCE版を使うので「gitlab-ce」を指定します。

sudo EXTERNAL_URL="http://xxxxx.com:81/gitlab" TIME_ZONE="Asia/Tokyo" apt-get install gitlab-ce

Webブラウザで「http://xxxxx.com:81/gitlab」にアクセスしてrootのパスワードを設定します。
「/etc/gitlab/gitlab.rb」でtime_zoneを「Asia/Tokyo」に設定し、GitLabを再構築します。

sudo vi /etc/gitlab/gitlab.rb

gitlab_rails['time_zone'] = 'Asia/Tokyo'

sudo gitlab-ctl reconfigure

GitLabデータの移行

パソコンを入れ替える場合、それまで運用していたGitLabサーバからデータを移行します。

旧サーバでバックアップする

バックアップするとファイルは「/var/opt/gitlab/backups/」に作成されます。
ファイル名は「xxxxxx_2021_07_01_14.0.1_gitlab_backup.tar」のように乱数、日付、GitLabのバージョンから付けられます。

sudo /opt/gitlab/bin/gitlab-rake gitlab:backup:create

バックアップしたファイルをSambaやFTP、USBメモリなどを使って旧サーバのデータを新サーバに移動します。
「/etc/gitlab/gitlab-secrets.json」の「db_key_base」の値をメモします。

新サーバでリストアする

旧サーバから持ってきたバックアップを以下の場所にコピーまたは移動します。

sudo cp /tmp/xxxxxx_2021_07_01_14.0.1_gitlab_backup.tar /var/opt/gitlab/backups 

旧サーバの「/etc/gitlab/gitlab-secrets.json」にある「db_key_base」の値を新サーバに入力します。

sudo vi /etc/gitlab/gitlab-secrets.json

"db_key_base" = "xxxxxxxxxxxxxxxxxxxxxxxxx"

GitLabを再構築します。

sudo gitlab-ctl reconfigure

データをリストアする前にプログラムを停止します。。

sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq

リストア途中で現在のユーザデータを削除するなどの質問が出るので、全て「yes」とします。
「BACKUP=」で指定するのはバックアップファイルの「xxxxxx_2021_07_01_14.0.1_gitlab_backup.tar」から「_gitlab_backup.tar」を除いた「xxxxxx_2021_07_01_14.0.1」となります。

sudo gitlab-rake gitlab:backup:restore BACKUP=xxxxxx_2021_07_01_14.0.1
gitlab-rake gitlab:check SANITIZE=true

プログラムを起動します。

sudo gitlab-ctl start sidekiq
sudo gitlab-ctl start unicorn

Webブラウザで「http://xxx.xxx.xxx.xxx:81/gitlab」にアクセスして確認します。

GitLabのバックアップ設定(リポジトリとデータベース)

バックアップするコマンドは以下です。
バックアップファイルは「/home/gitlab/backups/」に保存されます。

/opt/gitlab/bin/gitlab-rake gitlab:backup:create

cronで毎朝5時にバックアップする場合はcrontabで指定します。

sudo crontab -e

00 05 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1

保険のためにautofsで外付けUSBハードディスクを「/mnt/usb」にマウントし、「/mnt/usb/basckup/gitlab/」を作成してrsyncで差分コピーします。

sudo mkdir -p /mnt/usb/basckup/gitlab/
cd /home/gitlab/
sudo vi backup-gitlab.sh
sudo chmod 755 backup-gitlab.sh

スクリプトは以下のようにします。

#!/bin/sh
RSYNC="/usr/bin/rsync"
DIR="/home/gitlab/backup"

$RSYNC -vac /var/opt/gitlab/backups/ $DIR > /home/gitlab/log.txt
chmod 755 $DIR

cronで毎朝6時に実行します。

crontab -e

00 06 * * * /home/gitlab/backup-gitlab.sh

Comments