highlight.pack.js

2014年2月27日木曜日

GitlabをUbuntuに導入

https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/install/installation.md にある情報を自分なりにアレンジし、備忘録的に書き留めておきます。

二次情報なので、英語が読める方は上記の説明を読みながら行うか、 https://gitlab.com/gitlab-org/gitlab-ce/blob/master/README.md#installation を参照して別な方法を試してみるのも良いと思います。

マニュアルで最新版 (6.7) の GitLab をインストールする方法を書いています。 英語が何の問題もなく読める方は本家のページを読みながらの導入をおすすめしますが、 あまり英語が得意でない方の参考になれば幸いです。

GitLab とは

Github のような機能を提供する Ruby on Rails 上に構築されたオープンソースな Git 管理ソフトです。 Git の bare リポジトリを提供し、Web インターフェースよりバージョン管理を可視化します。

GitLab の更新日

GitLab は毎月22日に新しいバージョンがリリースされるようになっています。 簡単に更新できるので定期的に確認して常に最新版を使うようにしましょう。

利用するソフトウェア

  • ruby 1.9.3+
  • git 1.7.10+
  • redis 2.0+
  • MySQL or PostgreSQL
  • その他様々な ruby のモジュール

公式には PostgreSQL が推奨されているので、そちらの説明を書きますが、 私の手元の環境では MySQL を利用しています。

GitLab の導入手順

以下の流れで作業を行います。

  1. apt の更新及び依存ソフトウェアの導入
  2. ruby の導入
  3. GitLab の導入
  4. Nginx の設定
  5. 動作の確認

apt の更新及び依存ソフトウェアの導入

Ubuntu のバージョンによっては Git のバージョンが古い場合があるので ppa で最新版を導入出来るようにしておきましょう。

sudo apt-get install -y python-software-properties
sudo add-apt-repository ppa:git-core/ppa

まずは、apt の更新を行います。

sudo apt-get update -y
sudo apt-get upgrade -y

終わったら、必須パッケージを導入します。

sudo apt-get install -y build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl openssh-server redis-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev logrotate

Git の導入も同様にして行います。

# Git をインストールします。
sudo apt-get install -y git-core

# Git のバージョンが 1.7.10 以上であることを確認して下さい。
git --version

メール通知機能を使用するためには、メールサーバーをインストールしておく必要があります。 メールサーバーとして postfix を使用する場合は以下のコマンドを利用します。

sudo apt-get install -y postfix

インストール時には、「Internet Site」を選択し、あとはデフォルトで問題ありません。 必要な場合は適宜カスタマイズを行ってください。

ruby の導入

最新版の ruby を導入します。執筆時の最新バージョンは ruby 2.1.1 でしたのでこれを利用します。 ppa があれば良かったのですが、見つけることが出来なかったので、ソースからコンパイルします。

まずは、古い ruby を削除しておきます。インストールされていない場合は、この作業は必要ありません。

sudo apt-get remove ruby1.8

次に新しい ruby をダウンロード、インストールし、Bundler もインストールしておきます。

mkdir ~/workspace && cd ~/workspace
curl --progress http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.1.tar.gz | tar xz
cd ruby-2.1.1
./configure --disable-install-rdoc
make
sudo make install
sudo gem install bundler --no-ri --no-rdoc

GitLab の導入

まずは GitLab で使用するユーザー git を作成します。

sudo adduser --disabled-login --gecos 'GitLab' git

ssh でアクセスできるようにするためにシェルスクリプト群をインストールします。

# git ユーザーのホームディレクトリに移動します。
cd /home/git

# gitlab shell をクローンします。
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-shell.git -b v1.8.0

cd gitlab-shell

sudo -u git -H cp config.yml.example config.yml

# 設定ファイルの gitlab_url を 'http://domain.com/' のようにサイト URL に変更します。
sudo -u git -H vi config.yml

# セットアップを行います。
sudo -u git -H ./bin/install

次に PostgreSQL にユーザーの追加とデータベースの追加を行います。

# PostgreSQL 関係のパッケージを導入します。
sudo apt-get install -y postgresql-9.1 postgresql-client libpq-dev

# PostgreSQL にログインします。
sudo -u postgres psql -d template1

# GitLab 用のユーザーを作成します。
template1=# CREATE USER git;

# Gitlab の production 用データベースを作成し、すべての権限を git に与えます。
template1=# CREATE DATABASE gitlabhq_production OWNER git;

# セッションを終了します。
template1=# \q

# git ユーザーでデータベースへの接続ができるかを確認します。
sudo -u git -H psql -d gitlabhq_production

git ユーザーのホームディレクトリ以下に GitLab をインストールします。

cd /home/git
# GitLab をクローンします。
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 6-6-stable gitlab

# GitLab ディレクトリに移動します。
cd /home/git/gitlab

量が多いですが設定ファイルの編集を行います。

# GitLab の設定ファイルをコピーします。
sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml

# "localhost" を GitLab を提供するサーバーの FQDN に変更してください。
sudo -u git -H vi config/gitlab.yml

# 適切なパーミッションをそれぞれのフォルダに与ええます。
sudo chown -R git log/
sudo chown -R git tmp/
sudo chmod -R u+rwX  log/
sudo chmod -R u+rwX  tmp/

# サテライト用のディレクトリを作成します。
sudo -u git -H mkdir /home/git/gitlab-satellites

# sockets や pid を GitLab が書き込めるようにディレクトリを作成します。
sudo -u git -H mkdir tmp/pids/
sudo -u git -H mkdir tmp/sockets/
sudo chmod -R u+rwX  tmp/pids/
sudo chmod -R u+rwX  tmp/sockets/

# public/uploads ディレクトリを作成します。
sudo -u git -H mkdir public/uploads
sudo chmod -R u+rwX  public/uploads

# Unicorn 用の設定ファイルをコピーします。
sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb

# 予想される負荷状況やサーバースペックに合わせて、設定を変更してください
sudo -u git -H vi config/unicorn.rb

# Rack attack の設定フアィルをコピーします。
sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb

# git ユーザーの設定を変更します。
# user.email は gitlab.yml に書いた設定に合わせてください。
sudo -u git -H git config --global user.name "GitLab"
sudo -u git -H git config --global user.email "gitlab@localhost"
sudo -u git -H git config --global core.autocrlf input

gitlab.yaml と unicorn.rb を適切に設定することを忘れないようにしてください。 コメントに設定の意味が書いてあるので、じっくり取り組みましょう。

次にデータベースへの接続に関する設定を行います。

# PostgreSQL
sudo -u git cp config/database.yml.postgresql config/database.yml

# 'config/database.yml' のユーザー名とパスワードを書き直します。 
# 最初のパートの production の部分の設定を行うだけで問題ありません。
# git ユーザーのパスワードを設定している場合は 'secure password' の部分に、
# そのパスワードを入力してください。
# ダブルクォート(")で囲まれた文字列の部分を該当パスワードで置換します。
sudo -u git -H vi config/database.yml

# 'config/database.yml' を git ユーザーのみ読めるようにします。
sudo -u git -H chmod o-rwx config/database.yml

次に Ruby の Gem のインストールを行います。

cd /home/git/gitlab

#  PostgreSQL 用なので mysql 関係の gem は除外します。
sudo -u git -H bundle install --deployment --without development test mysql aws

データーベースの初期化処理を行います。

sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production

# 'yes' とタイプしてデーターベースのテーブルを作成します。

正常に終了すれば 'Administrator account created:' と表示されます。

次に、 init スクリプトの配置を行います。

sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab

起動時に GitLab が自動的に起動するようにします。

sudo update-rc.d gitlab defaults 21

Logrotate の設定ファイルをコピーします。

sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab

GitLab の設定が正しく行われているのかを、以下のコマンドで確認します。

sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production

GitLab を開始します。エラーメッセージが表示されていないことを確認して下さい。

sudo service gitlab start

GitLab が使うアセットのコンパイルを行います。

sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production

Nginx の設定

Nginx のインストールを行います。

sudo apt-get install -y nginx

ベースとなるサイトファイルをコピーして、有効化します。

sudo cp lib/support/nginx/gitlab /etc/nginx/sites-available/gitlab
sudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab

勿論、環境に合わせて設定が必要です。 必要に応じて設定を書き換えてください。

# YOUR_SERVER_FQDN を GitLab をホストするサーバーの FQDN にしてください。
sudo vi /etc/nginx/sites-available/gitlab

設定が終わったら Nginx を再起動します。

sudo service nginx restart

動作の確認

何かコマンドの実行し忘れがないか、設定ファイルに問題がないかをチェックすることが出来ます。以下のコマンドで確認します。

sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production

もし何も問題ないようならば、GitLab の導入は成功です。早速ブラウザで確認してみましょう。

管理者アカウントが作成されたら、ユーザー名:root、パスワード:5iveL!fe でログインしてみましょう。 ログインが終わったらユーザー名やパスワードの変更を忘れないで行ってください。

以上で、導入は完了です。

0 件のコメント:

コメントを投稿