読者です 読者をやめる 読者になる 読者になる

write ahead log

ロールフォワード用

CentOS7にGitlabを構築する

インフラ

仮想マシンが用意できたので、CentOS7上にGithubクローンのGitLabを構築した.
入れたのは古いバージョンだけど, 新しいGitLabでもそれほど変わらないんじゃなかろうか.

バックアップスクリプトなんかも用意されていてとても便利だ.

完全にSubversionから乗り換えている.

今回はFTPサーバにバックアップを転送するスクリプトを作って,定時で転送する仕組みまで作っておいた.

この記事を公開時点では,GitLabのバージョンが最新に比べてかなり古い.
もし参考にする人がいたら注意してほしい.

ネットワーク関連

(元からつながってればやることはない)

$ nmcli dev
デバイス  タイプ    状態      接続
ens3      ethernet  接続済み  eth0
lo        loopback  管理無し  --

$ nmcli con
名前  UUID                                  タイプ          デバイス
eth0  94d762a4-ec7c-40c0-bd0c-ef78cfb8e094  802-3-ethernet  ens3

なっていなければ下記の様に設定.
不要なコネクションの削除

$ nmcli con delete 名前

コネクションの追加・設定

# nmcli con add type eth ifname ens3(<-ここはnmcli devで確認したデバイス名) con-name eth0
# nmcli con mod eth0 ipv4.method manual ipv4.addresses "[IPアドレス]/[サブネットの桁数]" ipv4.dns [DNSサーバのIP] ipv4.gateway [デフォルトゲートウェイのIP]
# nmcli c down eth0
# nmcli c up eth0

SSHの接続確認.

デフォルトでつながるはずだが、ダメならsshdの状態とファイヤーウォールを疑う.

ユーザの追加

# adduser user
# passwd user
# visudo

visudoでは以下コメント部を追記

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
user    ALL=(ALL)       ALL # <= 追記

パッケージアップデート

$ sudo yum check-update
$ sudo yum update

GitLabのインストール

  1. gitlab-7.3.2_omnibus-1.el7.x86_64.rpmダウンロード
    古いバージョンを入れたので(マイグレーション方法がわからなかったので)上記リンクもちょっと怪しいかも.
  2. インストール.以下を実行
$ sudo yum install openssh-server
$ sudo yum install postfix
$ sudo systemctl enable postfix
$ sudo systemctl start postfix
$ sudo rpm -i gitlab-7.3.2_omnibus-1.el7.x86_64.rpm
$ sudo yum install ftp
  1. URLの設定 以下を実行
$ sudo -e /etc/gitlab/gitlab.rb

利用する環境下のドメインに変更.
Unicornがすぐタイムアウトするのでタイムアウト時間を引き伸ばしておく.

# Change the external_url to the address your users will type in their browser
#external_url 'http://gitlab.example.com'
external_url 'http://hogehoge.com'
unicorn['worker_timeout'] = 180   # タイムアウト時間

再設定コマンドを実行

$ sudo gitlab-ctl reconfigure

ファイアーウォールに穴をあける

$ sudo firewall-cmd --permanent --add-service=http
$ sudo systemctl reload firewalld

gitlab用のbackupscriptの作成

$ su -
# mkdir /var/opt/gitlab/backup-script
# cd /var/opt/gitlab/backup-script
# vi ftptransport.bat  #下記にサンプル
# vi backup.sh         #下記にサンプル
# chmod +x backup.sh
# chmod +x ftptransport.bat

ftp転送のためのスクリプトを作成する 転送先の設定も確認してください.

ftptransport.bat

open [転送先FTPサーバIP]
user [ユーザID] [password]
bin
prompt

cd [FTP転送先サーバの保存先ディレクトリ]   # cdはリモート先でのcd
lcd ../backups # lcdはローカルでのcd
put *

bye

backup.sh

# backup gitlab data
gitlab-rake gitlab:backup:create    # gitlabのバックアップコマンド

# transport
ftp -n < /var/opt/gitlab/backup-script/ftptransport.bat

cronへ設定(毎日23:55に実行)

# crontab -e
MAILTO="twinbird_htn.hogehoge.jp"
55 23 * * * /var/opt/gitlab/backup-script/backup.sh

バックアップの実行確認

./backup.sh

上記までで一通り動く.SSHKeyの設定とかしてないけど, とりあえずは使い物になる.

FTPへ自動転送にしておくと,バックアップサーバやNASに自動で保存されるので良い.
(それくらいどこでもやってそうだけど,やっていない会社だってあるんですよね.....)