Drowsy Dog's Diary

any note, any thought

AmazonEC2(Ubuntu 12.04 LTS)に GitLab をインストール。

| 1 Comment

なんかサーバ設定ばかりメモってる気がするが。

GitHub / GitLab

猫も杓子も GitHub。 もはやエンジニアはこれが使えなければ人に非ずな感じの昨今ですが、GitHub では無料アカウントではプライベートリポジトリを作ることができません。また、外部サーバに成果物が保存されることが業務利用上、問題になる場合も多いです。
(とはいえ、月額たった $7 で 5 つのプライベートリポジトリを作れるので、個人あるいは所属組織で問題なければこれで十分と言えそうですが)

そこでクローズド環境で GitHub ライクなサービスを独自で構築できるようにしたものが GitLab だそうです。これもまた GitHub でオープンソース公開されています。

 

以下、これを Amazon EC2 にインストールした際のメモ。

いや、結局外部サーバやん、って突っ込みは無しで。


 

0. 環境

サーバイメージは Ubuntu-12.04.1 LTS を選びます(単に、AMI も CentOS も試したんだけどどちらも行き詰まった結果。。)

ec2_image

 

容量やバックアップやスナップショットの取りやすさを考えてリポジトリはEBS上に作りたいので、ここで作っておきます。

 

ec2_ebs

 

あとは鍵とセキュリティポリシーを適当に設定して、Launch。
必要に応じて ElasticIP を attach させておきます。

 

1. 必要パッケージのインストール

ほとんどはオフィシャルのインストール手順を踏んでいくだけです。現時点の最新安定版は stable-4.2のようですが、インストールマニュアルが4-1前提のためそれに従います。4-1 を 4-2 に読み替えてやっても問題ないかも。しかし何箇所か躓いたので、メモ。更新は日々行われています。

 
まずはシステムを最新に。

vim でも emacs でも好きなエディタを準備して、依存パッケージをインストール。

2. Python インストール

現状 3.x はサポートされていないので必要に応じてバージョンを指定。
また python2 コマンドで呼べることを確認。

3. Ruby のビルドとインストール

Bundler Gem をインストール。

 

4. ユーザ作成

GitLab は共有リポジトリのユーザー管理やアクセス管理を行うためのツールとして Gitolite を使っています(以前は gitosis だったそうですがこちらは開発が止まっているらしい)。

GitLab, Gitolite はそれぞれデフォルトでは

/home/gitlab/

/home/git/

というユーザディレクトリにインストールされ、リポジトリもその下に作られるので、EBSのマウント先にこれらのホームディレクトリをシンボリックリンクさせる作戦でいってみます。

 
フォーマット&マウント。

git, gitlab ユーザを作成。/gitlab にマウントした EBS ボリュームをユーザディレクトリにしています。
EBS である必要がなければ普通に /home/ で良いかと。

GitLab用のユーザも作成。

/home からシンボリックリンク。

GitLab から Gitolite に接続できるように、git グループに所属させておく。

Gitolite の admin 用となる鍵を作成しておきます。

 

5. Gitolite のインストール

gitolite リポジトリを clone.

Note: ここでインストールされる Gitolite は GitLab 専用となります。Gitolite としての機能を他から使用することは想定されていません。

/usr/git/bin/ に gitolite がインストールされるので、PATH を通しておく。

user gitlab の鍵をコピー。これが Gitolite の admin 鍵となります。

# Gitolite コンフィグおよびリポジトリ用のディレクトリができているので、これらをユーザ git の配下に。

# known host にドメインを追加
とりあえず ElasticIP と AWS のドメイン追加しとけばいいだろうか。

# Gitolite のアクセスをテスト

ここで clone に失敗するようだと先に進めません。おそらく何かの設定に誤りがあります。だいたい鍵かパーミッションのことが多いです。(/home/git/.ssh/ に既存の known_hosts があるとか)

 

6. データベース

オフィシャルの別ドキュメントに設定ガイドがあります。ここでは推奨の MySQL を素直に使うことにします。

 

7. GitLab

ようやく GitLab 本体をインストール。

Note: 4-1-stable を master とすれば最新の bleeding edge version(すごいなこの表現)が試せます。

configディレクトリを整備。

エディタで gitlab.yml を編集。

gitlab: の “host: localhost” また、gitolite: の “ssh_host: localhost” を当該ドメイン名に変更しておきます。
これが外部から http あるいは ssh で git にアクセスするときのアドレスとなります。
また、Gitlab システムから送信されるメールの email_from および support_email を設定しておきます。

/home/gitlab/gitlab/gitlab.yml

また、unicorn.rb の設定を特に変えることは無いと思いますが、ここによるとデフォルトのタイムアウト時間は伸ばしておいた方が良いようです。

/home/gitlab/gitlab/config/unicorn.rb

さらに、DB の設定ファイルも example からコピーして、MySQL 接続用の username と password を適切に編集しておきます。

必要な Gems をインストール。

GitLab のコンフィグを設定します。

さらに GitLab のセットアップ。このへんは盲目的にマニュアルに従うのみ。。

ここまで来たら動作チェック。

すべて OK シグナルなら GitLab のインストールは完了です。が、ここで下記のエラーに遭遇。

指示通りに “sudo -u gitlab -H bundle exec rake sidekiq:start” しても同じエラーが出るのにかなり悩まされましたが、こちらに回答がありました。/home/gitlab/gitlab/tmp/pids/ が最初は無いとのこと。

OK!ならば GitLab サービスを開始します。

 

9. Nginx

あとひといき。nginx サーバをセットアップします。

 

以上!
ブラウザでアクセスして、ログイン画面が表示されたら成功です。
初期管理者用の
ID: admin@local.host
pass: 5iveL!fe
で、ログインしましょう。

ec2_gitlab

 
おつかれさまでした。


Author: kazoo

犬はさよならを言わないのだ。

One Comment

  1. Pingback: GitLab_CIによる継続的インテグレーション « tiny voices

コメントを残す

Required fields are marked *.