codebreak; がサービス終了しちゃうのでGitlabでプライベートなGitサーバーを構築することにした!

ssimage_19

ちょっと前に「codebreak; 」からサービス終了の通知が来ていた。

プライベートリポジトリが無料で作れたため重宝していたのだけれど、やっぱりこういう WEB サービスは終了と隣り合わせなんですね・・・。

とは言え、サービスの終了となる来年の 1 月 31 日までにどこかに環境を移さないといけません。

そこで以前ちょっとだけ使って使うのをやめていた Gitlab を再度使おうかと思った次第です。

前に構築した時よりも随分と簡単になっているようですし、ちょうどさくらの VPS を新しく借りた所だったのでそこに構築しようと思います。

Gitlab ってなに?

そもそも Gitlab というものがなんなのか・・・ですが、GitHub のようなサービスを自前で構築することの出来るオープンソースになります。

全ての人へ向けてリポジトリ開放するなら GitHub で良いのですが、プライベートなソース管理がしたいのでこの Gitlab を使います。

Gitlab 環境の構築

gitlab

さて、Gitlab 環境を構築していきたいわけですが昔導入した感触で行くととても面倒だった記憶がありまして面倒故にバージョンアップするのすら嫌になり使わなくなりました。

しかしながら Gitlab は絶えず進化しているようで、インストールが格段に簡単になっているようです。

以下は私が導入した時の流れになります。

説明不足な部分もあるかと思いますが、参考になればと思います。

インストールするサーバーの環境は CentOS6.7 で Nginx だけ現在動かしているものを使用する事にします。

公式ページに書いてある方法でそのままインストール

公式の Download ページに書いてある方法にてインストールを行います。

OS によって手順が変わるためこの部分は公式ページの情報に合わせて行って下さい。

1sudo yum install curl openssh-server postfix cronie
2sudo service postfix start
3sudo chkconfig postfix on
4sudo lokkit -s http -s ssh

上記は完了したらリポジトリを追加してインストール

1curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
2sudo yum install gitlab-ce

ひとまずここまで正常に完了したら gitlab.rb を環境に合わせて編集します。

 1sudo vi /etc/gitlab/gitlab.rb
 2
 3#########gitlab.rb###########
 4#接続URLを変更(自分の環境に合わせる)
 5external_url 'http://gitlab.hoge.jp'
 6
 7#GitLab付属のUnicornを使う
 8unicorn['worker_timeout'] = 60
 9unicorn['worker_processes'] = 2
10
11## Advanced settings
12unicorn['listen'] = '127.0.0.1'
13unicorn['port'] = 8080
14unicorn['socket'] = '/var/opt/gitlab/gitlab-rails/sockets/gitlab.socket'
15unicorn['pidfile'] = '/opt/gitlab/var/unicorn/unicorn.pid'
16unicorn['tcp_nopush'] = true
17unicorn['backlog_socket'] = 1024
18# We do not recommend changing this setting
19# unicorn['log_directory'] = "/var/log/gitlab/unicorn"
20
21#GitLab付属のRedisを使う
22redis['enable'] = true
23redis['username'] = "gitlab-redis"
24redis['uid'] = nil
25redis['gid'] = nil
26
27#既存のNginxを使用するので付属のNginxは無効に
28nginx['enable'] = false
29
30#SSHのポートを変更している場合は下記
31gitlab_rails['gitlab_shell_ssh_port'] = 10022
32
33#########gitlab.rb###########

Nginx は既存のものを使用するようにしたので続けて Nginx の設定ファイルを弄ります。

 1sudo vi /etc/nginx/conf.d/gitlab.conf
 2
 3server {
 4listen 80;
 5server_name gitlab.hoge.jp;
 6
 7access_log /var/log/nginx/gitlab.access.log;
 8error_log /var/log/nginx/gitlab.error.log;
 9
10location = /robots.txt { access_log off; log_not_found off; }
11location = /favicon.ico { access_log off; log_not_found off; }
12
13### Reverse Proxy for Redmine on Unicorn
14location / {
15rewrite ^/(.*)$ /$1 break;
16proxy_set_header X-Real-IP $remote_addr;
17proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
18proxy_set_header Host $http_host;
19proxy_pass http://127.0.0.1:8080;
20}
21}
22
23#ここまで終わったら設定を反映させる。
24sudo gitlab-ctl reconfigure
25
26#状態を確認
27sudo gitlab-ctl status
28
29#再起動するとき
30sudo gitlab-ctl restart

特に問題なければこれで Gitlab の環境は出来ているかと思います。

問題になりそうなのは Nginx の部分だと思いますけど、既存のものがない状態であればデフォルトのままで大丈夫かと思います。

SSH のポート部分もハマるポイントかと思いますのでチェックが必要です。

この当たりの設定に関しては人によって様々になるようなので自分にあった設定にしましょう。

私はよくわからないから SSH のポート変更と Nginx だけ既存の動いているものにしてあとはそのままな設定になっています。

あとはブラウザでアクセスしてみると、

ssimage_16

こんな感じのログイン画面出てきます。

ID「root」、PW「5iveL!fe」にてログインして色々と設定して下さい。

codebreak;のリポジトリをそのまま持ってこよう!

さて、環境が整ったのでリポジトリ作りたいですが・・・今までのリポジトリをそのまま持ってきたいのでインポート元を指定してリポジトリを作ります。

ssimage_17

codebreak;の場合は「ANY REPO BY URL」を選んで、

https://ユーザー ID:パスワード@git.codebreak.com/hogehoge/hoge.git

このような形で URL を指定してあげると良いでしょう。

サーバースペックやリポジトリによって読み込み時間が変わるかと思いますが、ちゃんとインポートされています。

ssimage_18

ローカルファイルに Clone あれば.git/config の url 変えて Push しても同じだと思いますが、ローカルに無いならこっちのほうが楽かも知れないですね。

Gitlab のアップデート

前に使った時はアップデートが面倒だった記憶がありますが、現在はアップデートも簡単ですね。

1#Gitlabをアップデートする
2sudo yum update gitlab-ce

普通に yum 使ってアップデート。これでファイルを取得してアップデートして reconfigure して restart かかります。

念のためですが、アップデート行う前にバックアップ取ってたほうが良いでしょう。

Gitlab のバックアップとリストアに関してはこちらのページに書いてあるので確認して下さい。

とりとめのないまとめ

久々に使ってみたのですが、凄く進化してたんですね・・・。

アイコンもあのキモいユニークなものから変わってますし、何よりもインストールが楽になったのは嬉しいですね。

アップデートもストレス無く出来るようになり、嬉しい限りです。

なんといっても自前のサーバーで構築しているのでサービス終了に怯えることもありません!

ただ、その代わり運用しているサーバーがトラブった時等、色々と不安は尽きませんので当然ですが重要なものはちゃんと専用のサービスを使うことをオススメします^^