仮想マシンが用意できたので、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のインストール
- gitlab-7.3.2_omnibus-1.el7.x86_64.rpmをダウンロード
古いバージョンを入れたので(マイグレーション方法がわからなかったので)上記リンクもちょっと怪しいかも. - インストール.以下を実行
$ 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
- 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に自動で保存されるので良い.
(それくらいどこでもやってそうだけど,やっていない会社だってあるんですよね.....)