CentOSにGitLabをInstallして設定

gitlab前回前々回でRedmineのインストールまで出来たので、今回はGitLabをインストール。

環境: CentOS 6.6 x86_64, Ruby 2.2.2, Git 2.4.1, GitLab 7.10.4

 

目次

  1. GitLabのインストール
  2. 設定:接続URLを変更
  3. 設定:Google Appsアカウントでログイン出来るようにする(omniauth)
  4. 設定:MariaDBを使う。GitLab付属のPostgreSQLを使う
  5. 設定:メール送信はGoogle Appsアカウント経由にする
  6. 設定:GitLab付属のUnicornを使う
  7. 設定:GitLab付属のRedisを使う
  8. 既存のNginxからプロキシする
  9. GitLab再設定、起動

 


1.GitLabのインストール

公式ページを参考に。

必要なパッケージのインストール
# yum install openssh-server postfix cronie

全てインストール済み。postfixも起動している状態。

GitLabのレポジトリを追加
# curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | bash

YUM経由でインストール
# yum install gitlab-ce

設定
# gitlab-ctl reconfigure

エラー

[2015-05-14T18:40:00+09:00] ERROR: Running exception handlers
Running handlers complete
[2015-05-14T18:40:00+09:00] ERROR: Exception handlers complete
[2015-05-14T18:40:00+09:00] FATAL: Stacktrace dumped to /opt/gitlab/embedded/cookbooks/cache/chef-stacktrace.out
Chef Client failed. 81 resources updated in 23.560077797 seconds
[2015-05-14T18:40:00+09:00] ERROR: Chef::Exceptions::MultipleFailures
[2015-05-14T18:40:00+09:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)

どうやら設定が必要らしい。

/etc/gitlab/gitlab.rbを読みながら編集していく。

 


2.設定:接続URLを変更

external_url 'http://gitlab.hoge.jp'

 

 


3.設定:Google Appsアカウントでログイン出来るようにする(omniauth)

ドキュメントを参考にapp_idとapp_secretを取得する

gitlab_rails['omniauth_enabled'] = true
gitlab_rails['omniauth_allow_single_sign_on'] = true
gitlab_rails['omniauth_block_auto_created_users'] = true
gitlab_rails['omniauth_providers'] = [
  {
    "name" => "google_oauth2",
    "app_id" => "123-abc.apps.googleusercontent.com",
    "app_secret" => "****",
    "args" => { "access_type" => "offline", "approval_prompt" => "", "hd" => "hoge.jp" }
  }
]

 

「hd」はログインを制限するGoogle Appsドメインを指定する。

「omniauth_block_auto_created_users」は、登録後Block状態となるので、rootで「Unblock」する必要がある。

 


4.設定:MariaDBを使う。GitLab付属のPostgreSQLを使う

インストール済みのMariaDBを使うように設定する。

と思ったけど、MySQLを使えるのはEnterprise EditionだけでCommunity EditionはPostgreSQLだけだった。

postgresql['enable'] = true
postgresql['listen_address'] = nil
postgresql['port'] = 5432
postgresql['data_dir'] = "/var/opt/gitlab/postgresql/data"
postgresql['shared_buffers'] = "512MB"

 

 


5.設定:メール送信はGoogle Appsアカウント経由にする

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.gmail.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "info@hoge.jp"
gitlab_rails['smtp_password'] = "pass"
gitlab_rails['smtp_domain'] = "smtp.gmail.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
# gitlab_rails['smtp_tls'] = false
# gitlab_rails['smtp_openssl_verify_mode'] = 'none'

 


6.設定:GitLab付属のUnicornを使う

RedmineのUnicornを使いまわそうか迷ったけど、とりあえず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"

 


7.設定:GitLab付属のRedisを使う

redis['enable'] = true
redis['username'] = "gitlab-redis"
redis['uid'] = nil
redis['gid'] = nil

 


8.既存のNginxからプロキシする

GitLab付属のnginxは起動しないように設定。

nginx['enable'] = false

既存のNginx設定ファイルを編集
# vi /etc/nginx/conf.d/04_gitlab.conf

server {
    listen       80;
    server_name  gitlab.firstsec.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;
    }
}

再読み込み
# /etc/rc.d/init.d/nginx configtest
# /etc/rc.d/init.d/nginx reload

Basic認証で制限をかける

 


9.GitLab再設定、起動

今までの設定を反映させる。
# gitlab-ctl reconfigure

状態を確認
# gitlab-ctl status

再起動するとき
# gitlab-ctl restart

ブラウザでアクセスして確認。

まずはrootでログイン。パスワードは「5iveL!fe」。

パスワードを設定して再ログイン。Emailアドレスを変えておく。

なぜかOverviewに表示されているRubyのバージョンが違う。

image

 

次は既存のSubversionをGitに移行

 

< Related Posts >