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 # 感想 # 設定

    Comment