ちょっと前に「codebreak; 」からサービス終了の通知が来ていた。
プライベートリポジトリが無料で作れたため重宝していたのだけれど、やっぱりこういうWEBサービスは終了と隣り合わせなんですね・・・。
とは言え、サービスの終了となる来年の1月31日までにどこかに環境を移さないといけません。
そこで以前ちょっとだけ使って使うのをやめていたGitlabを再度使おうかと思った次第です。
前に構築した時よりも随分と簡単になっているようですし、ちょうどさくらのVPSを新しく借りた所だったのでそこに構築しようと思います。
Gitlabってなに?
そもそもGitlabというものがなんなのか・・・ですが、GitHubのようなサービスを自前で構築することの出来るオープンソースになります。
全ての人へ向けてリポジトリ開放するならGitHubで良いのですが、プライベートなソース管理がしたいのでこの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だけ既存の動いているものにしてあとはそのままな設定になっています。
あとはブラウザでアクセスしてみると、
こんな感じのログイン画面出てきます。
ID「root」、PW「5iveL!fe」にてログインして色々と設定して下さい。
codebreak;のリポジトリをそのまま持ってこよう!
さて、環境が整ったのでリポジトリ作りたいですが・・・今までのリポジトリをそのまま持ってきたいのでインポート元を指定してリポジトリを作ります。
codebreak;の場合は「ANY REPO BY URL」を選んで、
https://ユーザーID:パスワード@git.codebreak.com/hogehoge/hoge.git
このような形でURLを指定してあげると良いでしょう。
サーバースペックやリポジトリによって読み込み時間が変わるかと思いますが、ちゃんとインポートされています。
ローカルファイルにCloneあれば.git/configのurl変えてPushしても同じだと思いますが、ローカルに無いならこっちのほうが楽かも知れないですね。
Gitlabのアップデート
前に使った時はアップデートが面倒だった記憶がありますが、現在はアップデートも簡単ですね。
#Gitlabをアップデートする sudo yum update gitlab-ce
普通にyum使ってアップデート。これでファイルを取得してアップデートしてreconfigureしてrestartかかります。
念のためですが、アップデート行う前にバックアップ取ってたほうが良いでしょう。
Gitlabのバックアップとリストアに関してはこちらのページに書いてあるので確認して下さい。
とりとめのないまとめ
久々に使ってみたのですが、凄く進化してたんですね・・・。
アイコンもあのキモいユニークなものから変わってますし、何よりもインストールが楽になったのは嬉しいですね。
アップデートもストレス無く出来るようになり、嬉しい限りです。
なんといっても自前のサーバーで構築しているのでサービス終了に怯えることもありません!
ただ、その代わり運用しているサーバーがトラブった時等、色々と不安は尽きませんので当然ですが重要なものはちゃんと専用のサービスを使うことをオススメします^^