CentOS6.2でGitLabのインストール
GitLabとは、自ホストにGitHubのようなリポジトリ管理サイトを構築することができるオープンソースツールです。
Gitを使いたいが外部サイトに依存するには抵抗がある場合は、自前のサイトでホストしてプロジェクト管理、タスク管理、ソース管理できるのでとても有用なプロダクトです。
ここではCentOS6.2(x86_64)にインストールする手順をメモしておきます。
■必要なパッケージの導入
epelをリポジトリに追加します。Rubyやgitolite、GitLabで使用するパッケージ群を入れます。無駄なものもあるかもです。
# rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm # vim /etc/yum.repos.d/epel.repo 【#enabled=0に変更】 # yum update # yum -y groupinstall 'Development Tools' 'Additional Development' --enablerepo=epel # yum -y install readline readline-devel ncurses-devel gdbm-devel glibc-devel tcl-devel openssl-devel curl-devel expat-devel db4-devel byacc gitolite sqlite-devel gcc-c++ libyaml libyaml-devel libffi libffi-devel libxml2 libxml2-devel libxslt libxslt-devel libicu libicu-devel system-config-firewall-tui python-devel --enablerepo=epel
■gitoliteインストール&ユーザー準備
gitolite管理用ユーザgitとgitlab実行用ユーザgitlabhqユーザを作成します。
また、gitlabhqユーザをgit グループにも所属させておきます。
# useradd git # useradd gitlabhq # usermod -G git gitlabhq
グループに所属するユーザからリポジトリを参照できるように、/home/git にグループに対するパーミッションを設定します。
# chmod g+rx /home/git
gitolite へ登録するための管理ユーザ用公開鍵を作成するため gitlabhq ユーザになります。
# su - gitlabhq
一旦localhostにssh接続を試み、/home/gitlabhq/.ssh/known_hostsが作成されlocalhostが登録されるところまで実行します。
$ ssh localhost
公開鍵を作成し、 git ユーザのホームディレクトリに移動させておきます。
$ ssh-keygen -t rsa -P "" -f ~/.ssh/gitadmin $ exit <span class="deco" style="color:#0000FF;"># root に戻ります</span> # mv /home/gitlabhq/.ssh/gitadmin.pub /home/git
Gitのホストとなるgitoliteを入れます。
git ユーザになり、gitoliteをgithubからcloneしインストールします。
# su - git $ git clone git://github.com/gitlabhq/gitolite $ gitolite/install $ gitolite/src/gitolite setup -pk /home/git/gitadmin.pub
/home/git/.gitolite.rcのUMASKを0077→0007へ変更。
#$REPO_UMASK = 0077; $REPO_UMASK = 0007;
gitlabhqユーザになり、~/.ssh/configを作成します。。
$ exit 【# gitlabhqユーザにsuするためrootに戻る】 # su - gitlabhq $ vim ~/.ssh/config
環境に合わせ、以下のような内容を記述します。
Host localhost HostName localhost User git IdentityFile ~/.ssh/gitadmin
作成したら権限を変更。
$ chmod 0600 ~/.ssh/config
gitlabhqユーザでのgitの初期設定を行っておきます。
$ git config --global user.email "gitadmin@example.com" $ git config --global user.name "gitadmin"
■Rubyのインストール
インストール済みの場合は飛ばしてください。
Rubyはrbenvを/usr/local/にインストールしてユーザグループ共通(ここではrubyist)で使うようにしました。
$ exit 【#root】 # cd /usr/local # git clone https://github.com/sstephenson/rbenv.git # mkdir rbenv/shims rbenv/versions rbenv/plugins # groupadd rubyist # chgrp -R rubyist rbenv # chmod -R g+rwxXs rbenv # cd rbenv/plugins # git clone git://github.com/sstephenson/ruby-build.git # cd ruby-build/ # ./install.sh # vi /etc/profile
PATHを追加します。ユーザグループ共通のRuby環境が不要であれば、.bashrcや.zshrcに追記でもいいと思います。
# vi /etc/profile
export RBENV_ROOT="/usr/local/rbenv" export PATH="/usr/local/rbenv/bin:$PATH" eval "$(rbenv init -)"
先ほどのPATHを反映させるために、再度ログインしてrbenvでRubyをインストールします。
# which rbenv # rbenv install #リスト表示 # rbenv install 1.9.3-p194 # rbenv rehash # rbenv global 1.9.3-p194 # gem update --system # gem update # gem install bundler --no-rdoc --no-ri # rbenv rehash
■Redisのインストール
# yum install -y python-devel python-pip redis libicu-devel --enablerepo=epel # pip-python install pygments # chkconfig redis on # service redis start
■MySQLのインストール
インストール済みの場合は飛ばしてください。
# yum install mysql-server # vim /etc/my.cnf # service mysqld start
■GitLabのインストール
# su gitlabhq $ git clone git://github.com/gitlabhq/gitlabhq.git $ cd ./gitlabhq $ bundle install --deployment --without development test
設定ファイルの雛形をコピーします。database.ymlのMySQLアカウントとgitlab.ymlのホスト名などは環境に合わせて変更してください。
$ cp config/database.yml.example config/database.yml $ cp config/gitlab.yml.example config/gitlab.yml $ vim config/database.yml $ vim config/gitlab.yml
Rakeコマンドを実行して初期データを投入します。
$ bundle exec rake db:setup RAILS_ENV=production $ bundle exec rake db:seed_fu RAILS_ENV=production
以下のように初期用のアカウントとパスワードが生成されます。
Administrator account created:
login………admin@local.host
password……5iveL!fe
以上で準備完了なので実行してみてください。なお、以下のコマンドで実行した場合はデフォルトで3000番ポートを使うので、iptablesの設定をしている場合は、3000番ポートの通信を許可してください。
$ bundle exec rails s -e production
ブラウザ経由でアクセスして、以下のように表示されれば、インストールは成功です。
■Apacheと連携設定
このままでは、手動で起動しなきゃいけないので、PassengerとApacheを利用するように設定します。
# su # gem install passenger # passenger-install-apache2-module
さきほどpassenger-install-apache2-moduleのインストール完了時に表示されたLoadModuleの設定を元に、/etc/httpd/conf.d/以下にgitlab.confを以下の内容で作成します。
# vim /etc/httpd/conf.d/gitlab.conf
LoadModule passenger_module /usr/local/rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/passenger-3.0.17/ext/apache2/mod_passenger.so PassengerRoot /usr/local/rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/passenger-3.0.17 PassengerRuby /usr/local/rbenv/versions/1.9.3-p194/bin/ruby RailsEnv production <VirtualHost *:80> ServerAdmin info@exmple.com ServerName gitlab.exmple.com DocumentRoot /home/gitlabhq/gitlabhq/public ErrorLog logs/gitlabhq_error_log CustomLog logs/gitlabhq_access_log common </VirtualHost>
ApacheからGitLabを見られるようにするための設定を行います。
Apache実行ユーザ(ここではapacheとします)が/home/gitlabhqにアクセスできるよう、gitlabhq グループに追加し、グループからのアクセスを許可するようパーミッションを設定します。
# usermod -G gitlabhq apache # chmod g+rX /home/gitlabhq
Apacheを再起動します。
# /etc/init.d/httpd restart
ブラウザでhttp://ホスト名/にアクセスしてみてください。
先ほどのログイン画面が表示されればインストール成功です。
けっこう大変ですね。
■おすすめサービス