G
IT
L
AB
6 セットアップ
構築環境
Macbook pro OS X Mountain Lion 10.8.5
はじめに
以降の記載内容は、筆者の環境で必要だったものを特にイン
ストール効率等を意識せず記したものです。設定等が上手く
いかずあれこれ試したりもしていたので誤りもあるかもしれ
ません。また、ご使用中のマシン環境によっては、記載のあ
るアプリケーションがインストール済であったり、記載され
たアプリケーション以外に必要となるものがあったりするか
もしれませんので参考程度に見ていただければと思います。
GitLab6の環境構築をするにあたり、やたらとGitと付いた名
前が登場しますが、簡単に説明すると「
Git = 分散型バージ
ョン管理システム」「
GitLab = Gitのリポジトリ管理ツー
ル」「
Git Shell =Git作業用の制限付きシェル」となります。
Gitに関する詳しい説明や使用方法は参考サイト等が沢山あり
ますのでそちらをご参考になさってください。(筆者もまだ
まだ勉強中です)
∼
GitLab6 の環境構築で必要となるアプリ一覧 ∼
・
Xcode
・
Homebrew
・
rbenv
・
ruby-build
・
Ruby(Ruby on Rails)
・
icu4c
・
MySQL
・
Redis
・
Git
・
GitLab Shell
・
GitLab
・
charlock_holmes
・
python2(Macに既存のものを利用)
・
SSH( Macに既存のものを利用)
M
AC
で作業
1.
App Store より Xcode をインストールします。
2.
Xcodeを起動します。
3.
Xcodeのメニューバーより「Xcode → Preferences」
を選択します。
4.表示された画面より「
Downloads」のタブを選択し
ます。
5.
Command Line Tools のインストールボタン(➡)を
押します。
6.
Xcodeを終了します。
Xcodeのインストール
∼
1の画面イメージ ∼
∼
3・4・5の画面イメージ ∼
M
AC
で作業
1.システム環境設定を開きます。
2.「共有」を選択します。
3.リモートログインのチェックをつけます。
リモートログインの有効化
∼
1・2の画面イメージ ∼
∼
3の画面イメージ ∼
Mac上でリモートログインを有効化しておきます。ターミナルで作業
1.ターミナルウィンドウを起動します。
2.
「ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"」を実行しインストール。この際、
root権限になった
り
sudoを使用せず、一般ユーザで実行します。
3.「
brew -v」 を実行しバージョンを確認します。
Homebrewのインストール
∼
2のコマンドは
2について ∼
http://brew.sh
のWEBサイトのInstall Homebrew 欄
に記載のあるコマンド。バージョン更新等でコマンドが変更されてい
る可能性があるので
WEBサイトをチェックしてください。
∼
3について ∼
必須ではありませんが、インストールしたバージョンをどこかに控え
ておく場合などに行ってください。
執筆時点のHomebrewのバージョ
ンは
0.9.4です。
HomebrewとはMacにUnixのツールをインストールするためのパッケージ管理 システムです。RubyやPerlといったオープンソース言語や各種ライブラリ等を 簡単にインストール・管理することができます。ターミナルで作業
1.ターミナルウィンドウを起動します。
2.「
brew update」 を実行し最新状態とします。
3.「
brew install rbenv」 を実行しインストール。
4.「
brew install ruby-build」 を実行しインストール。
5.「
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile」
を実行しパスを通しておきます。
6.「
. ~/.bash_profile」を実行し、5の内容を有効化
します。
7.「
rbenv -v」を実行しバージョンを確認します。
rbenvとruby-buildのインストール
∼
必須ではありませんがパスが通っていることを確認する意味で行うこ
7について ∼
とをオススメします。
執筆時点のrbenvのバージョンは0.4.0です。
rbenvとはRubyのバージョン切替ツールです。ruby-buildとはrbenvと組み合わ せて使用されるRubyのインストールツールです。ターミナルで作業
1.ターミナルウィンドウを起動します。
2.「
rbenv install -l」 を実行しインストール可能な
Rubyのリストを表示させます。
3.「
rbenv install 2.0.0-p247
」を実行しインストール。
4.「
rbenv global 2.0.0-p247
」
を実行し通常使用する
旨を宣言します。
5.「
ruby -v」を実行しバージョンを確認します。
6.「
gem install bundler」を実行しbundlerパッケージ
をインストール。
7.「
rbenv rehash」を実行しrbenvのshimsにRubyを登
録します。
Rubyのインストール
∼
執筆時点の最新安定版のRubyのバージョンは2.0.0-p247です。
2・3・4について ∼
※GitLab6は Ruby 1.8x では動作しないようなのでご注意ください。 Rubyとは手軽で軽量なオブジェクト指向スクリプト言語です。
ターミナルで作業
1.ターミナルウィンドウを起動します。
2.「
gem update」 を実行しRubyのパッケージ管理を
更新します。
3.「
gem install rails --no-ri --no-rdoc」を実行しイン
ストール。
4.「
rbenv rehash」を実行します。
5.「
rails -v」を実行しバージョンを確認します。
Ruby on Railsのインストール
∼
表題は「
留意 ∼
Ruby on Railsのインストール」となっていますが、本章で実
際にインストールするのは
Railsのみです。(Rubyは前章でインストー
ル済) また、
GitLab6を使用するにあたってRailsをインストールす
る必要はありません。筆者がついでなのでインストールしておきたい
と思っただけです。
∼
2について ∼
gem = Rubyのパッケージ管理システム。
∼
3について ∼
「
--no-ri --no-rdoc」を指定することで、ドキュメント類のインストー
ルが省略されるため、インストール時間が短縮されます。インストー
ル後に「
gem rdoc --all --ri」を実行することでドキュメントをインス
トールすることができます。
∼
5について ∼
執筆時点のRailsのバージョンは4.0.0です。
ターミナルで作業
1.ターミナルウィンドウを起動します。
2.「
brew update」 を実行し最新状態とします。
3.「
brew install icu4c」 を実行しインストール。
4.「
brew link icu4c --force」を実行しシンボリックリ
ンクを作成します。
icu4cのインストール
∼
icu4cはGitLab6に必要なcharlock_holmesというライブラリで使用さ
補足 ∼
れています。筆者環境には
icu4c-51.1のバージョンがインストールされ
ていますが、
執筆時点の最新版はicu4c-51.2のようです。
※charlock_holmesのインストールについては以降の章で後述しています。 ICU(4cはC言語版の意)とはクロスプラットフォームのUnicodeベースのグロ ーバリゼーションライブラリです。ロケール依存の文字列の比較、日付/時刻/ 番号/通貨/メッセージ形式、テキスト境界検出、文字セット変換とのサポート が含まれます。ターミナルで作業
1.ターミナルウィンドウを起動します。
2.「
brew update」 を実行し最新状態とします。
3.「
brew install mysql」を実行しインストール。
4.以下の手順で自動起動の設定をします。
cd ~/Library/LaunchAgents
cp /usr/local/Cellar/mysql/5.6.13/homebrew.mxcl.mysql.plist .
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
MySQLのインストール
∼
筆者の環境にインストールされたバージョンは
4について ∼
mysql-5.6.13です。
インストールされたバージョンによって、ディレクトリパス中の
「
5.6.13」の箇所は変更されると思いますのでご留意ください。
MySQLとはオープンソースのデータベースです。Gitのグループ管理、ユーザ管 理で使用されます。
ターミナルで作業
1.ターミナルウィンドウを起動します。
2.「
brew update」 を実行し最新状態とします。
3.「
brew install redis」を実行しインストール。
4.以下の手順で自動起動の設定をします。
cd ~/Library/LaunchAgents
cp /usr/local/Cellar/redis/2.6.16/homebrew.mxcl.redis.plist .
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.redis.plist
Redisのインストール
∼
筆者の環境にインストールされたバージョンは
4について ∼
redis-2.6.16です。
インストールされたバージョンによって、ディレクトリパス中の
「
2.6.16」の箇所は変更されると思いますのでご留意ください。
Redisとはキー・バリューペアの形式でメモリにデータ保存をおこなう永続化 対応のメインメモリデータベースです。
ターミナルで作業
1.ターミナルウィンドウを起動します。
2.「
brew update」 を実行し最新状態とします。
3.「
brew install git」を実行しインストール。
Gitのインストール
∼
筆者の環境にインストールされたバージョンは
補足 ∼
0.9.5です。
ターミナルで作業
1.ターミナルウィンドウを起動します。
2.グループID(GroupID)の調査
下記のコマンドを実行し、Gitのグループに割当てるための空き GroupIDを調査します。
「dscl . -list /Groups PrimaryGroupID | sort -k 2 -n」
コマンドの実行結果として見えているIDは使用中のIDとなりますので 見えているID以外の番号を使用します。 尚、500番以下はdaemon(_で始まる名前のもの)で使用するという のが一般的な慣例となっているようです。 3.Gitのグループを作成( 筆者はグループIDを「1000」としました。) 下記のコマンドを実行し、Gitのグループを作成します。
「sudo dscl . -create /Groups/git PrimaryGroupID 1000」 作成後、手順2のコマンドを再度実行し「git 1000」のグループが作成 されていることを確認します。 4.ユーザID(UniqueID)の調査 下記のコマンドを実行し、Gitのユーザに割当てるための空きUniqueID を調査します。
Git用のグループとユーザの作成
Gitで使用するグループとユーザをMac上に作成します。グループIDやユーザ ID、パスワード等はご使用の環境に合うように適切に変更してください。 尚、筆者はグループ名とユーザ名を「git」としており、この名前を前提に各説 明を記載しております。「dscl . -list /Users UniqueID | sort -k 2 -n」
コマンドの実行結果として見えているIDは使用中のIDとなりますので
見えているID以外の番号を使用します。
5.Gitのユーザを作成( 筆者はユーザIDを「504」としました。)
下記のコマンドを実行し、Gitのユーザを作成します。
「sudo dscl . -create /Users/git UniqueID 504」
「sudo dscl . -create /Users/git PrimaryGroupID 1000」 「sudo dscl . -create /Users/git UserShell /bin/bash」 「sudo dscl . -create /Users/git NFSHomeDirectory /Users/git」 「sudo dscl . -create /Users/git Password "<パスワード>”」 「sudo mkdir /Users/git」
「sudo chown -R git:git /Users/git」
作成後、手順4のコマンドを再度実行し「git 504」のユーザが作成さ れていることを確認します。
6.GitLabのユーザを作成
5と同様の手順でGitLabのユーザを作成します。5の手順との違いは
「504 ➡ 505」「git ➡ gitlab」となります。但し最後の chown コマ ンドは「git:git ➡ gitlab:git」となりますのでご注意ください。
7.Gitユーザのプロファイルを作成
以下の手順でGitユーザのプロファイルを作成します。 「cd /Users/git」「sudo -u git vi .bash_profile」 vi エディタ上で以下の内容を貼付け保存します。 「export PATH="/usr/local/bin:$PATH"」
「if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi」
ターミナルで作業
1.ターミナルウィンドウを起動します。
2.「sudo -i -u git」を実行し、Git用のユーザに切替え、「cd ~」でGit用 ユーザのHomeディレクトリに移動します。
3.「git clone https://github.com/gitlabhq/gitlab-shell.git」を実行し、 GitLab Shellを取得します。 4.「cd gitlab-shell」で3で取得したディレクトリへ移動します。 5.「vi /Users/git/gitlab-shell/lib/gitlab_config.rb」でファイルを開き、 「/home/git」となっている箇所を「/Users/git」に変更します。 6.「more VERSION」でバージョン確認をおこない、VERSIONファイル に記述されているバージョンを以下のようにチェックアウトします。 (執筆時点では1.7.1でした) git checkout v1.7.1 git checkout -b v1.7.1
GitLab Shellのインストール
GitLab ShellとはGit作業用の制限付きシェルです。GitへのSSHアクセスやリポ ジトリ管理に使用します。 8.7で開いた config.ymlを以下のように修正し保存します。 gitlab_url: "http://0.0.0.0:3000/" repos_path: "/Users/git/repositories" auth_file: "/Users/git/.ssh/authorized_keys" 9.別のターミナルウィンドウを起動し「cd /Users/git/gitlab」でGitLabの インストールディレクトリに移動します。「bundle exec rails s -e production」を実行し、GitLabサーバを起動し ます。(GitLabサーバは “control+c”で終了できます) 10.もとのターミナルウィンドウ(=/Users/git/gitlab-shellがカレント ディレクトリになっているウィンドウ)で「./bin/check」を実行し エラーがないことを確認します。もしここの段階でエラーが表示され ている場合は当該エラーをすべて適切に修正してください。 エラーがなければ以下の表示がされます。 Check GitLab API access: OK
Check directories and files: /Users/git/repositories: OK /Users/git/.ssh/authorized_keys: OK 11.「./bin/install」を実行しGitLab Shellをインストールします。 ∼ 補足 ∼ 10の作業が重要となります。この段階できちんとエラーをなくしておかな いと以降の作業で思わぬトラブルに遭遇する可能性がありますのでご注意 ください。筆者はこのチェックのことを知らずに以降の手順へと進み、以 降のどこかしらで「./bin/install:3: undefined method `require_relative' for main:Object (NoMethodError)」といったエラーなどが出たりして何度か失 敗しました。その際、あれこれ調べたり対処したりしてみましたが、結局 のところ、ここの段階できちんと対処していないことが原因だったようで す。また、このエラーへの対処は、以下の通りRubyのインストールをし直 すことで解決しました。ご参考まで。 sudo -i -u git
ターミナルで作業
1.ターミナルウィンドウを起動します。
2.「mysql_secure_installation」を実行しパスワードの設定を行います。 以下を参考にプロンプトの指示に従ってください。
Enter current password for root (enter for none): <空打ち> Set root password? [Y/n] <Y>
New password:<パスワードを入力します>
Re-enter new password:<もう一度パスワードを入力します> Remove anonymous users?<Y>
Disallow root login remotely? <Y>
Remove test database and access to it?<Y> Reload privilege tables now?<Y>
3.「mysql -u root -p」を実行しMySQLにログインします。
4.「CREATE USER 'gitlab'@'localhost' IDENTIFIED BY 'パスワード';」 を実行しGitLab用のユーザを作成します。※下記SQLは必要に応じて使用。 登録済ユーザの確認用SQL:SELECT User, Host FROM mysql.user; 登録済ユーザの削除用SQL:DROP USER 'gitlab'@'localhost';
MySQLの環境構築
MySQLにGitLab用のユーザ作成、データベース作成、権限設定を行います。
5.「CREATE DATABASE `gitlabhq_production`
DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;」
を実行しプロダクション用のデータベースを作成します。
6.「GRANT
SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER
ON `gitlabhq_production`.* TO 'gitlab'@'localhost';」 を実行しGitLab用のユーザに権限を付与します。
7.「quit;」を実行しMySQLを終了します。
8.「sudo -u git -H mysql -u gitlab -p -D gitlabhq_production」
を実行し、1∼7の手順で作成したGitLab用のユーザでMySQLに接続 できるかどうかを確認します。もし接続できないようであれば1∼7 の手順を見直してください。
ターミナルで作業
1.ターミナルウィンドウを起動します。
2.以下の手順でGitLabを取得します。 sudo -i -u git
cd ~
git clone https://github.com/gitlabhq/gitlabhq.git giltlab 3.以下の手順でGitLabの使用準備を行います。
mkdir /Users/git/gitlab-satellites
sudo -u git -H git config --global user.name "GitLab"
sudo -u git -H git config --global user.email "gitlab@localhost"
sudo chown -R gitlab /Users/git/gitlab/log sudo chmod -R u+rwX /Users/git/gitlab/log sudo chown -R gitlab /Users/git/gitlab/tmp sudo chmod -R u+rwX /Users/git/gitlab/tmp sudo chown -R gitlab /Users/git/gitlab-satellites
GitLabのインストール①
GitLabとはGitのリポジトリ管理ツールです。 4.以下の手順でsidekiqを取得、設定します。 (sidekiqとは非同期実行を おこなうためのgemです) sudo -i -u git cd /Users/git/gilt mkdir tmp/pids exitsudo -u git -H bundle exec rake sidekiq:start RAILS_ENV=production 5.以下の手順でGitLabの設定ファイルを準備します。 cp config/gitlab.yml.example config/gitlab.yml cp config/database.yml.mysql config/database.yml cp config/unicorn.rb.example config/unicorn.rb 6.「vi config/gitlab.yml」で設定ファイルを以下の通り変更します。 ・user: git のコメントを解除。 ・gitlab: の「host: localhost」はそのまま。 ・git: の「bin_path: /usr/bin/git」はそのまま。 ・satellites: の「/home/git/gitlab-satellites/」を 「/Users/git/gitlab-satellites」に変更。 ・gitlab_shell: の repos_Path: の「/home/git/repositories/」を 「/Users/git/repositories/」に変更。 ・gitlab_shell: の hooks_Path: の「/home/git/gitlab-shell/hooks/」を 「/Users/git/gitlab-shell/hooks/」に変更。 7.「vi config/database.yml」で設定ファイルを以下の通り変更します。 ・production: の「username:」「password:」にそれぞれMySQLの環 境構築のときに作成した「gitlab」と「パスワード」を設定する。 ・「host: localhost」のコメントを解除し有効化する。 ・「socket: /tmp/mysql.sock」のコメントを解除し有効化する。 8.「config/unicorn.rb」の変更は必要ありません。
ターミナルで作業
1.ターミナルウィンドウを起動します。
2.以下の手順でGitLab用のライブラリを取得します。
sudo -i -u git cd gitlab
bundle install --deployment --without development test postgres gem install charlock_holmes
rbenv rehash
下記のような表示がされればインストール成功です。 [email protected]
password...5iveL!fe
もし「Access denied for user 'root'@'localhost' (using password: YES)」のような メッセージで失敗(= rake aborted)する場合、MySQLの環境構築で 作ったGitLab用のユーザ+パスワードと、gitlabのconfig/database.yml に記述しているusername+passwordとが一致していない可能性が高い と思われます。
3.「sudo -i -u git」の状態で「cd /Users/git/gitlab」へ移動します。 「bundle exec rake gitlab:check RAILS_ENV=production」を実行し GitLabの設定が正しいかをチェックします。もしエラーが表示された 場合は適切に対処してください。
GitLabのインストール②
GitLabとはGitのリポジトリ管理ツールです。 4.以下の手順で起動用スクリプトを作成します。 sudo su mkdir /etc/init.d cd /Users/git/gitlabsudo cp lib/support/init.d/gitlab /etc/init.d/gitlab sudo chmod +x /etc/init.d/gitlab
∼ 補足 ∼ 筆者はGitLabインストール①の3にある python2へのシンボリックリンク や4にあるsidekiqの設定などをせずに、GitLabのインストール②の3をお こないエラーが発生してしまったことがありました。もし何かしらのエラ ーが発生してしまった方で、適切に対処したにも関わらずエラーが消えない 場合は、2の手順のライブラリインストールをやり直すことで改善される かもしれません。
ターミナルで作業・ブラウザで作業
1.ターミナルウィンドウを起動します。 2.以下の手順でSSHの設定ファイルを変更します。 sudo vi /etc/sshd_config でファイルを開きます。 「RSAAuthentication yes」のコメントを解除し有効化します。 「ubkeyAuthentication yes」 のコメントを解除し有効化します。 「PermitRootLogin no」 のコメントを解除し有効化します。 「PermitUserEnvironment yes」 のコメントを解除し有効化します。 3.以下のコマンドを実行しSSHで使用するRubyを設定ファイルに書込 みます。「env | grep -E "^(GEM_HOME|PATH|RUBY_VERSION|MY_RUBY_HOME|GEM_PATH)=" > /var/tmp/tempenv」
「sudo -u git -H cp /var/tmp/tempenv /Users/git/.ssh/environment」 4.以下の手順でSSHの公開 を作成します。
SSHの設定
SSHとは、データの暗号化を施した状態で別のコンピュータにログインした り、遠隔地のコンピュータでコマンドを実行したりするためのツールです。 5.4を実行したウィンドウとは別にターミナルウィンドウを起動し、以 下のコマンドを実行しGitLabサーバを起動します。(4のウィンドウは 表示したまま閉じないでください) sudo -i -u git cd /Users/git/gitlabbundle exec rails s -e production
6.ブラウザを起動し、URLに5の実行結果中にあるURLを指定します。 (URL: http://0.0.0.0:3000) 7.GITLAB6のサインイン画面が表示されますので、GitLabインストール の成功メッセージで表示されたユーザ名とパスワードでサインインし ます。(ユーザ名:[email protected] パスワード:5iveL!fe) サインインが成功すると新しいパスワードの設定が促されますので指 示に従い設定してください。新パスワード設定後、再度サインインする と「Welcome to GitLab!」の画面が表示されます。 8.ブラウザに表示されているGITLAB6の設定画面にて、4のウィンドウ に表示されている内容(=id_rsa.pubの内容)を以下の手順で登録しま す。
・Profile画面に遷移し、[ Add SSH Key ] ボタンを押します。 ・Title欄に「ssh」を入力します。(任意の名前で構いません) ・Key欄に4のウィンドウに表示されている内容を貼付けます。 ・[ Add Key ] ボタンを押します。 ∼ 補足 ∼ 筆者は3の設定の必要性に中々 り着けず苦労しました。筆者環境で3の 設定がされていない状態では「/Users/git/gitlab-shell/bin/gitlab-shell:8: undefined method `require_relative' for main:Object (NoMethodError)」と いうエラーが発生していました。またこのエラーへの対処のつもりで、 which ruby や which gem などでパス確認をし、$PATHの値を調整したりし ましたが「unless: command not found」や「puts: command not found」
ブラウザで作業
1.ブラウザとターミナルウィンドウを起動します。
2.ターミナルウィンドウにて以下の手順で GitLabサーバを起動します。
sudo -i -u git
cd /Users/git/gitlab
bundle exec rails s -e production
3.ブラウザで http://0.0.0.0:3000 にアクセスし、GITLAB6にサインイン します。次に以下の手順で新規プロジェクトを作成します。 ・[ New Project ] ボタンをクリックします。
GitLabを試す①
前述までの説明でGITLAB6の環境が構築されています。(筆者が未熟なため、 もしかしたら不備等があるかもしれません)ここでは「ブラウザからの新規プ ロジェクトの作成」をやっています。 ・Project name is の入力欄にプロジェクト名を入力します。 ・Namespaceはgitlabのままとします。 ・Descriptionの入力欄にプロジェクトの説明を入力します。 ・[ Create project ] ボタンをクリックします。 下の画面が表示されれば新規プロジェクトの作成完了です。ターミナルで作業
1.ターミナルウィンドウを起動します。 2.「sudo -i -u git」でGitユーザに切替えます。 2.「cd /Users/git/repositories/root」へ移動します。 3.以下の手順でGitプロジェクトを複製します。 mkdir clone_test cd clone_testgit clone git@localhost:root/sample_project.git
これで複製が完了です。・・・とは言え空プロジェクトなので sample_project というディレクトリができるだけですが・・・笑 ∼ 補足 ∼ 「 git@localhost:root/sample_project.git」はGITLAB6(ブラウザ)で作成 したプロジェクトのプロジェクト画面の一番上に表示されている内容です。