siteTitleImage

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

Author Image

Enzo

· 2015/12/04 · 9 min read
TopImage
INDEX

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

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

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

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

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

Gitlab ってなに?

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

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

The most-comprehensive AI-powered DevSecOps platform | GitLab

Gitlab 環境の構築

gitlab

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

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

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

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

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

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

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

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

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

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

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

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

sudo vi /etc/gitlab/gitlab.rb

#########gitlab.rb###########
#接続URLを変更(自分の環境に合わせる)
external_url 'http://gitlab.hoge.jp'

#GitLab付属のUnicornを使う
unicorn['worker_timeout'] = 60
unicorn['worker_processes'] = 2

## Advanced settings
unicorn['listen'] = '127.0.0.1'
unicorn['port'] = 8080
unicorn['socket'] = '/var/opt/gitlab/gitlab-rails/sockets/gitlab.socket'
unicorn['pidfile'] = '/opt/gitlab/var/unicorn/unicorn.pid'
unicorn['tcp_nopush'] = true
unicorn['backlog_socket'] = 1024
# We do not recommend changing this setting
# unicorn['log_directory'] = "/var/log/gitlab/unicorn"

#GitLab付属のRedisを使う
redis['enable'] = true
redis['username'] = "gitlab-redis"
redis['uid'] = nil
redis['gid'] = nil

#既存のNginxを使用するので付属のNginxは無効に
nginx['enable'] = false

#SSHのポートを変更している場合は下記
gitlab_rails['gitlab_shell_ssh_port'] = 10022

#########gitlab.rb###########

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

sudo vi /etc/nginx/conf.d/gitlab.conf

server {
listen 80;
server_name gitlab.hoge.jp;

access_log /var/log/nginx/gitlab.access.log;
error_log /var/log/nginx/gitlab.error.log;

location = /robots.txt { access_log off; log_not_found off; }
location = /favicon.ico { access_log off; log_not_found off; }

### Reverse Proxy for Redmine on Unicorn
location / {
rewrite ^/(.*)$ /$1 break;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:8080;
}
}

#ここまで終わったら設定を反映させる。
sudo gitlab-ctl reconfigure

#状態を確認
sudo gitlab-ctl status

#再起動するとき
sudo 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 のアップデート

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

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

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

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

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

とりとめのないまとめ

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

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

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

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

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

# Linux # 感想 # 設定