読者です 読者をやめる 読者になる 読者になる

アルパカDiary Pro

はてなブログProではありません

続・GitHubクローンのGitLabを5分でインストールした

Gitlab

前回の記事(GitHubクローンのGitLabを5分でインストールした)
思いのほかブクマされてしまったので補足記事を書くことにしました。
インストールした後に設定したほうが良い項目とミドルウェア競合検証、
その他Tipsなど書いてみました。

公式ドキュメント

以下、記事で書いていることはほぼすべてドキュメントにも書いてあります。
ご参照下さい。
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md#configuration

コンフィグファイル準備

事前に /etc/gitlab/gitlab.rb を用意しておきます。
このファイルはGitLabをインストールする前に手動で作ってしまって構いません。*1

sudo mkdir -p /etc/gitlab
sudo touch /etc/gitlab/gitlab.rb
sudo chmod 600 /etc/gitlab/gitlab.rb

そして、コンフィグ設定後に

sudo gitlab-ctl reconfigure

すると、GitLabに反映するようです。



設定すべきコンフィグ値

GitLab URL

きちんとサイトのURLと合わせておきましょう。

external_url "http://gitlab.example.com/"
SMTP

メール通知などに使います。

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.server"
gitlab_rails['smtp_port'] = 456
gitlab_rails['smtp_user_name'] = "smtp user"
gitlab_rails['smtp_password'] = "smtp password"
gitlab_rails['smtp_domain'] = "example.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true

その他コンフィグ値

HTTPS設定

URLのHTTPS化/証明書パスなどを追記します。

external_url "https://gitlab.example.com"

nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.key"
Google, Twitter, GitHub login設定

Omniauth設定を行うことにより、外部認証することが可能です。

gitlab_rails['omniauth_enabled'] = true
gitlab_rails['omniauth_providers'] = [
  {
    "name" => "google_oauth2",
    "app_id" => "YOUR APP ID",
    "app_secret" => "YOUR APP SECRET",
    "args" => { "access_type" => "offline", "approval_prompt" => "" }
  }
]

ちなみに弊社では、Redmine Omniauth
Redmineアカウントでログイン出来るようにしています。



ミドルウェア混在環境での検証結果

※ 2014/10/10追記分:既存のミドルウェアを利用する方法
そもそも、omnibus-installでミドルウェアをインストールせずに、
既存の環境を使いまわすことも出来るようです。
たとえば、Nginxが既にインストール済みであれば
omnibus-installではインストールせずに
既存のNginxコンフィグを追加するだけで動かすことが出来ます。

ex) 既にインストール済みのPostgresqlを利用する場合

1. /etc/gitlab/gitlab.rb に以下を追記します。

# postgresインストールを無効にする
postgresql['enable'] = false
# 他のミドルウェアをインストール回避する時はこんな感じ
#nginx['enable'] = false
#redis['enable'] = false
#postgresql['enable'] = false

# postgresの情報を入力
gitlab_rails['db_adapter'] = 'postgresql'
gitlab_rails['db_encoding'] = 'unicode'
gitlab_rails['db_database'] = 'gitlabhq_production'
gitlab_rails['db_host'] = '127.0.0.1'
gitlab_rails['db_port'] = '5432'
gitlab_rails['db_username'] = 'git' # Database owner.
gitlab_rails['db_password'] = 'git' # Database owner's password.

2. sudo gitlab-ctl reconfigure を実行してgitlabに反映
3. sudo gitlab-rake gitlab:setup を実行して、初期データを投入


これで、既存の環境にgitlabのDB環境の設定が完了です。*2

ボート競合を回避する方法

前回の記事でも触れましたが、GitLabをRPMインストールすると
NginxやらRedisやらも一緒に同梱されます。
ロケーションは別*3になるので問題ないのですがポートは競合してしまいます。

ただし、それを回避する設定をコンフィグに追記すれば大丈夫そうです。
以下にサンプルを用意しました。
nginx(88)/postgresql(15432)/redis(16379)/unicorn(18080) のポートを指定しています。

redis['port'] = 16379
postgresql['port'] = 15432
unicorn['port'] = 18080

external_url "http://gitlab.example.com:88/"

実際に検証してみましたが、
元からインストールされているミドルウェアに影響させずに
GitLabを起動することが出来ました。



まとめ

取り急ぎですが、前回の補足記事でした。
コンフィグに指定しているキーは
このattributesを変更しているようなので
このファイルを見てキーを確認すれば好きにカスタマイズできそうですね。
では良いGitLabライフを!

*1:というか reconfigure する前には作っておきましょう

*2:参考: http://stackoverflow.com/questions/23580268/gitlab-omnibus-configuration-for-postgres

*3:/opt/gitlab/配下