Gitlabをubuntuにインストールする方法

GitlabをUbuntuにインストールしてみました。
構成は以下の通りです。

  • Ubuntu12.04 64bit(Server Edition)
  • Ruby1.9.3-p392
  • nginx + unicorn
  • gitlab5.0

最新のgitをインストール

Gitlabのソース取得や、Gitlab内部の処理でgitが必要になるので、
ひとまずgitを最新にしておきます。

sources.listファイルを編集し、リポジトリを追加します。

1
# vi /etc/apt/sources.list

以下を追記します。

1
2
deb http://ppa.launchpad.net/git-core/ppa/ubuntu precise main
deb-src http://ppa.launchpad.net/git-core/ppa/ubuntu precise main

gitをインストールします。

1
2
# apt-get update
# apt-get install git-core

rubyのインストール

rbenvを使ってrubyをインストールします。
まずは、rbenvをインストールします。

1
2
3
4
5
6
# cd /usr/local
# git clone git://github.com/sstephenson/rbenv.git rbenv
# mkdir rbenv/shims rbenv/versions
# git clone git://github.com/sstephenson/ruby-build.git ruby-build
# cd ruby-build
# ./install.sh

rbenvが有効となるように、設定ファイル作成します。

1
# vi /etc/profile.d/rbenv.sh
1
2
3
export RBENV_ROOT="/usr/local/rbenv"
export PATH="/usr/local/rbenv/bin:$PATH"
eval "$(rbenv init -)"

rbenvを手動で有効にします。

1
# source /etc/profile.d/rbenv.sh

rbenvでインストールできるrubyのバージョンを確認します。

1
# rbenv install --list

ruby-1.9.3-p392をインストールします。

1
2
3
# apt-get install build-essential libreadline-dev libssl-dev zlib1g-dev
# rbenv install 1.9.3-p392
# rbenv global 1.9.3-p392

gemコマンドで、bundlerを入れておきます。

1
# gem install bundler

Gitlab用のユーザー作成

Gitlab用のユーザーを作成します。

1
# adduser --disabled-login --gecos 'GitLab' git

上記のgitユーザーを使ってGitlabを動かすため、
Gitlabのソースファイルや、gitリポジトリは
gitユーザーが読み書き可能な設定にする必要があります。

*gitユーザーで実行*
1
$ vi /home/git/.profile

以下の内容で作成します。(rbenvの設定読込)

1
source /etc/profile.d/rbenv.sh

Gitlab-shellをインストール

gitlab-shellのソースファイルを取得します。

*gitユーザーで実行*
1
$ git clone https://github.com/gitlabhq/gitlab-shell.git

設定ファイルを変更します。

*gitユーザーで実行*
1
2
3
$ cd gitlab-shell
$ cp config.yml.example config.yml
$ vi config.yml

自分の環境に合わせて、config.ymlを編集します。

config.yml
1
2
3
4
5
6
7
8
9
10
11
# GitLab user. git by default
user: git

# Url to gitlab instance. Used for api calls
gitlab_url: "http://gitlab.ogatomo.com/"

# Repositories path
repos_path: "/home/git/repos"

# File used as authorized_keys for gitlab user
auth_file: "/home/git/.ssh/authorized_keys"

インストールスクリプトを実行します。

*gitユーザーで実行*
1
$ ./bin/install

リポジトリ用のディレクトリを作成します。

*gitユーザーで実行*
1
$ mkdir /home/git/repos

Gitlab用のデータベース作成

MySQLサーバーと、GitlabからMySQLを使うために必要なライブラリ類をインストールします。

1
# apt-get install -y mysql-server mysql-client libmysqlclient-dev

データベース作成を作成します。

1
# mysql -u root -p
1
2
3
4
mysql> CREATE USER 'gitlab'@'localhost' IDENTIFIED BY 'gitlab';
mysql> CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production`.* TO 'gitlab'@'localhost';
mysql> \q

Gitlabのインストール

githubからGitlabのソースコードをgitコマンドで取得します。

*gitユーザーで実行*
1
2
$ cd /home/git
$ git clone https://github.com/gitlabhq/gitlabhq.git gitlab

取得し終わったら、Gitlabの設定ファイルを作成しておきます。

*gitユーザーで実行*
1
2
3
4
5
$ cd /home/git/gitlab
$ cp config/unicorn.rb.example config/unicorn.rb
$ cp config/gitlab.yml.example config/gitlab.yml
$ vi config/gitlab.yml
$ diff config/gitlab.yml.example config/gitlab.yml

メールアドレス(email_from,support_email)とホスト名(host)など、
自分の環境に合わせて変更します

続けて、unicornの設定ファイルと、データベースの接続設定を行います。

*gitユーザーで実行*
1
2
3
$ cp config/unicorn.rb.example config/unicorn.rb
$ cp config/database.yml.mysql config/database.yml
$ vi config/database.yml

設定ファイルの準備が出来たら、Gitlabに必要なパッケージをインストールします。

1
2
3
# apt-get install libicu-dev  libxml2-dev libxslt-dev
# gem install charlock_holmes --version '0.6.9'
# apt-get install -y redis-server postfix 
*gitユーザーで実行*
1
2
3
4
$ bundle install --deployment --without development test postgres
$ bundle exec rake db:setup RAILS_ENV=production
$ bundle exec rake db:seed_fu RAILS_ENV=production
$ bundle exec rake gitlab:setup RAILS_ENV=production

Gitlabが使用する作業ディレクトリを作成します。

*gitユーザーで実行*
1
2
$ mkdir ~/gitlab-satellites
$ mkdir ~/gitlab/pids

nginxのインストール

最後に、nginxをインストールします。

1
2
3
4
# apt-get install nginx
# curl --output /etc/nginx/sites-available/gitlab https://raw.github.com/gitlabhq/gitlab-recipes/master/nginx/gitlab
# ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab
# service nginx restart

Comments