CentOS 6.4 用の GitLab 自動インストールスクリプトを書いた

スポンサーリンク

(2015/02/11 追記)
Ansible の Playbook を用意した。

(2013/08/28 追記)
Ubuntu 用のスクリプトも用意した。


GitLab のインストールは結構な手間がかかり、「ちょっと入れてみようか」と思ったときに気軽に試せない。インストールできなくて挫折した人も少なくないのではなかろうか。

ということで、1ステップで CentOS 上に GitLab 5.2 5.3 6.0 環境を構築できる、自動インストールスクリプトを書いた。動作はさくらの VPS で確認している。


スポンサーリンク

前提

さくらの VPS 上で、標準 OS (CentOS 6 x86_64) を再インストールした直後の状態での利用を想定している。

# cat /etc/redhat-release
CentOS release 6.4 (Final)
# uname -r
2.6.32-358.11.1.el6.x86_64

Vagrantbox.es の Scientific Linux 6 64 minimal でも動くことを確認している。

準備

はじめにホスト名を設定しておく。

# hostname gitlab.example.com

この値は、レポジトリを作成したときのホスト名 (下図) などに反映される。

リポジトリ作成後の表示

リポジトリ作成後の表示

インストール

Gist GitHub に置いておいたインストーラを実行する。これだけ。 (※ 実行する場合は自己責任でお願いします)

# curl https://raw.githubusercontent.com/akagisho/gitlab-installer/master/centos6.sh | sudo bash 2>&1 | tee gitlab-installer.log

あとはしばし待機。さくらのVPS (v3) 2G で約20分かかった。最後に以下のように表示されれば成功している (はず)。

Administrator account created:

[email protected]
password......5iveL!fe

表示された初期ログイン情報で、下記 URL からログインする

http://(IP アドレス)/

※ 初回はログイン画面が表示されるのに少々時間がかかる。

ログイン画面

ログイン画面

スクリプトのポイント

インストール自動化のために、以下のような点を工夫した。

  • GitLab の設定ファイル (config/gitlab.yml) に hostname を自動設定する
  • nginx で server_name ~.* として、あらゆるホスト名でリクエストを受け付ける
  • bundle exec で yes/no の入力を求められるので、expect で自動的に yes を答える

さらっと書いたが、完成させるのには何度も試行錯誤を繰り返した。また数カ月後には入らなくなってるような気がする。余力が湧けば Chef で書いてみたい。

参考ページ


(2013/06/22 追記)
GitLab 5.3 が stable になったので、そちらを入れるようにした。ついでに ssh 経由だと使用できないという致命的な問題をこっそり修正した。

(2013/09/18 追記)
6.0 を入れるようにした。

コメント

  1. やま より:

    スクリプトありがとうごうざいます!

    GitLab 5.3 でプロジェクト作った時にリポジトリが作成されないってことないですか?
    3回に1回ぐらいは、xxx.gitのリポジトリができないんですよね。。

    GitLab便利なんですけどねぇ。

    • sho より:

      今のとこ遭遇してないですね。

      # grep -i error /home/git/gitlab/log/*
      でログに何か残ってるかも知れません。

  2. 匿名 より:

    こちらも是非GitLab6へ対応お願いします!

  3. てらだ より:

    すばらしいスクリプトです!
    さくらの試してみたのですが、インストール完了後、アクセスすると502 BAD GATEWAYとなり、下記のようなエラーが出ています。

    # cat /var/log/nginx/gitlab_error.log
    1590#0: *6 connect() to unix:/home/git/gitlab/tmp/sockets/gitlab.socket failed (2: No such file or directory) while connecting to upstream, client: xxx.xxx.xxx.xxx, server: ~.*, request: “GET / HTTP/1.1”, upstream: “http://unix:/home/git/gitlab/tmp/sockets/gitlab.socket:/”, host: “mydomain.com”

    たしかに、gitlab.socketがありませんでした。

    # ls /home/git/gitlab/tmp/sockets/gitlab.socket
    ls: cannot access /home/git/gitlab/tmp/sockets/gitlab.socket: そのようなファイルやディレクトリはありません

    当方、過去にまだ一度もGitlabのインストールに成功しておらず、理解も浅いため、直接お伺いしたものかどうか迷ったのですが、もし対策について検討がつくようでしたら、教えていただけると大変助かります。
    どうぞよろしくお願いいたします。

    <テスト環境:さくらVPS>
    # cat /etc/redhat-release
    CentOS release 6.4 (Final)
    # uname -r
    2.6.32-358.23.2.el6.x86_64

  4. てらだ より:

    お騒がせしました。自己解決しましたので、一応書き込ませていただきます。

    先ほどの状態から、

    # cp /home/git/gitlab/lib/support/init.d/gitlab /etc/init.d/gitlab && chmod 755 /etc/init.d/gitlab && /etc/init.d/gitlab start
    cp: `/etc/init.d/gitlab’ を上書きしてもよろしいですか(yes/no)? yes
    Starting the GitLab Unicorn web server…
    Starting the GitLab Sidekiq event dispatcher…
    The GitLab Unicorn webserver with pid 1861 is running.
    The GitLab Sidekiq job dispatcher with pid 1883 is running.
    GitLab and all it’s components are up and running.
    # sudo service nginx restart

    で、無事ブラウザからGitLabにアクセスできるようになり、動作も今のところ大丈夫そうです。
    こんなに簡単に、インストールできて感激です。
    ありがとうございました!

    • sho より:

      ご指摘ありがとうございます。現象が再現しました。
      ただご提示いただいた解決法だと自動起動できないみたいなので、もうちょっと調べて後日修正したいと思います。

  5. てらだ より:

    たびたびの書き込み失礼します・・・

    一応、参考にしたリンクも貼付けておきます。

    http://stackoverflow.com/questions/19432532/gitlab-upgrade-error-init-d-directory-or-file-issue

    よろしくお願いします。

  6. 匿名 より:

    これはsho様の問題ではありませんが,先日よりrubygemのダウンロードに失敗するため,Gitlabのインストールに失敗するようですね.
    https://rubyforge.org/frs/download.php/76729/rubygems-1.8.25.tgz

    上記URLにアクセスすると RubyForge Could Not Connect to Databaseと表示されます.
    とりあえずご報告まで.

  7. 匿名 より:

    ちなみに,rubygemsの部分の3行を

    curl -OL http://production.cf.rubygems.org/rubygems/rubygems-2.1.7.tgz || exit 1
    tar xvzf rubygems-2.1.7.tgz
    cd rubygems-2.1.7

    と変更して,最新版のrubygemsで試みたのですが,502 Bad Gatewayが発生してしまいました.

    そのときのエラーログは下記の通りです
    [error] 23406#0: *3 upstream prematurely closed connection while reading response header from upstream, client: xx.209.yyy.73, server: ~.*,
    request: “GET /users/sign_in HTTP/1.0”, upstream: “http://unix:/home/git/gitlab/
    tmp/sockets/gitlab.socket:/users/sign_in”, host: “gitlab.example.com”

    [root@example sockets]# grep -i error /home/git/gitlab/log/*
    /home/git/gitlab/log/unicorn.stderr.log:E, [2013-11-27T18:55:40.445536 #23338] ERROR — : worker=0 PID:23346 timeout (31s > 30s), killing
    /home/git/gitlab/log/unicorn.stderr.log:E, [2013-11-27T18:55:40.471040 #23338] ERROR — : reaped # worker=0

  8. 匿名 より:

    なんども申し訳ありません.
    あの後 service gitlab restart で再起動かけたところ,502のエラーは改善しました.
    その他への影響はまだ未確認ですが.

  9. Dora-kou より:

    こんにちは、便利なスクリプトありがとうございます。

    こちらで試してみたのですが、unicorn_railsがないと怒られてしまいます…。

    [vagrant@localhost gitlab]$ sudo /etc/init.d/gitlab start
    Starting the GitLab Unicorn web server…
    bundler: command not found: unicorn_rails
    Install missing gem executables with `bundle install`
    Starting the GitLab Sidekiq event dispatcher…
    GitLab is not running.

    /home/git/gitlab 配下でのbundle installはうまくいってるようです。
    (省略)
    Your bundle is complete!
    Gems in the groups development, test and postgres were not installed.
    It was installed into ./vendor/bundle

    grep -i error /home/git/gitlab/log/* も実行しましたが、何も出ませんでした。おそらくGitLabの実行まで行けてないと思います。

    GitLabはRailsの知識がないとインストールも大変ですね orz
    何か情報お持ちでしたら助かります。

タイトルとURLをコピーしました