モーグルとカバとパウダーの日記

モーグルやカバ(EXカービング)山スキー(BC)などがメインの日記でした。今は仕事のコンピュータ系のネタが主になっています。以前はスパム対策関連が多かったのですが最近はディープラーニング関連が多めです。

CentOS5にGitLab5をインストールする

はじめに

いろいろな理由からCentOS5系(CentOS5.7)にGitLab5系(GitLab5.2)をインストールしなければならなくなり、だいぶはまったがなんとかインストールすることができた。
GitLabのインストールはいろいろはまりどころがあるが、CentOS6系でなら比較的容易だし最近のUbuntuに入れるならもっと簡単だ。
しかし、CentOS5系に入れようと思うと情報も少なく、いろいろなものを手で入れなければならないのでなかなか大変だ。
出来ればUbuntuかCentOS6に入れることをおすすめしたいが、自分のようにどうしてもCentOS5に入れたい場合に参考にして欲しい。


shellのコマンド入力は「$」から始まっている行で、rootで作業する場所はプロンプトを「#」として表記した。

参考にしたエントリー

GitLab本体以前の環境構築やnginxまわりの設定などはこちらを主に参考にした。

CentOS 5.2 に GitLab をインストール - 人生いきあたりばったりで生きてます@はてな
http://moqada.hatenablog.com/entry/20120503/1335999910


GitLab5のインストールについては公式のインストール文書を主に参考にした。

gitlabhq/doc/install/installation.md at master / gitlabhq/gitlabhq
https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/installation.md


またいろいろなはまりどころについてはこちらも参考になった。

comolog: CentOS 6.4 に GitLab 5.0.0 をインストールしてはまったこと
http://comolog.blogspot.jp/2013/03/centos-64-gitlab-500.html

Ruby-2.0をインストール

少なくともruby-1.9系以上でないと動かないのでruby-2.0系最新をインストールする。
ruby-1.8系が入っているとそちらを使ってしまってうまく動かない例が多いので、問題なければyum removeして2.0系だけにしておく。

ruby-2.0系最新をダウンロード
http://www.ruby-lang.org/ja/downloads/

$ wget ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.tar.gz
$ tar zxf ruby 2.0.0-p247.tar.gz
$ cd ruby 2.0.0-p247
$ ./configure
$ make
# make install

rubyとgemのバージョン確認

$ ruby -v
ruby 2.0.0p247 (2013-06-27 revision 41674) [i686-linux]
$ gem-v
2.0.3


(参考)
CentOS 5にruby 2.0.0をインストール - weblog of key_amb
http://keyamb.hatenablog.com/entry/2013/06/11/201827

python-2.7をインストール

python-2.7系でないと動かないので2.7系最新をインストールする。

python-2.7系最新をダウンロード
http://www.python.org/download/releases/2.7/

# yum install tk-devel tcl-devel sqlite-devel bzip2-devel readline-devel ncurses-devel gdbm-devel
$ wget http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tgz
$ tar zxf Python-2.7.5.tgz
$ cd Python-2.7.5
$ ./configure --enable-shared
$ make
# make install
# ln -s /usr/local/lib/libpython2.7.so.1.0 /usr/lib/

pythonのバージョン確認

$ python -V
Python 2.7.5

ちなみに bsddb185 と sunaudiodev は使わないので無視した。


(参考)
CentOS5.8にPython2.7.3をインストール - SUGI製作所
http://d.hatena.ne.jp/sugi770/20120528/1338209430

gitを入れる

rpmforgeから入るのだがgitのバージョンは1.7.11

# yum install git

githubへのhttps接続で失敗するのに対処

git clone https://github.com/〜 が証明書関連で失敗するので対処しておく

$ wget --no-check-certificate -P /tmp https://www.digicert.com/testroot/DigiCertHighAssuranceEVRootCA.crt
# cat /tmp/DigiCertHighAssuranceEVRootCA.crt >> /etc/pki/tls/certs/ca-bundle.crt


(参考)
GitHubhttps経由cloneに失敗する場合の対応(EV SSLルート証明書追加) - Qiita [キータ]
http://qiita.com/n_morioka/items/ce224813b58b975d39c1

redisを入れる

redisを入れるために先にepelを入れる(これはi386用)

$ wget http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/5/i386/epel-release-5-4.noarch.rpm
# rpm -ivh epel-release-5-4.noarch.rpm
# yum install redis
# /sbin/chkconfig --add redis
# /sbin/chkconfig -redis on
# /etc/init.d/redis start

rubyのライブラリを入れる

icuというUTFを扱うライブラリが必要だがyumで入るバージョンが古いため手で入れる。
yumで入るicu,libicu-develは3.6でcharlock_holmesで必要なicuのバージョンは4.2以上とのこと。今回は最新のものを入れた。
またcharlock_holmesはバージョン指定をしたほうが良いらしい。

# yum install gcc-c++ libxslt-devel python-setuptools
$ wget http://download.icu-project.org/files/icu4c/51.2/icu4c-51_2-src.tgz
$ tar zxf icu4c-51_2-src.tgz
$ cd icu/source
$ ./configure
$ make
# make install
# gem install charlock_holmes --version '0.6.9.4'
# easy_install -ZU pygments
# gem install bundler


(参考)
unable to compllie 0.6.9.4 on RHEL / Issue #37 / brianmario/charlock_holmes
https://github.com/brianmario/charlock_holmes/issues/37

MySQLの設定

MySQLPostgreSQLが必要になる。自分はMySQLでインストールした。

# yum install mysql
CREATE USER 'gitlab'@'localhost' IDENTIFIED BY '【パスワード】';
CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production`.* TO 'gitlab'@'localhost';

gitlab用アカウントの追加

# /usr/sbin/adduser git
# su git

ここから先は基本「git」アカウントで作業する。

gitlab-shellのインストール

$ cd /home/git
$ git clone https://github.com/gitlabhq/gitlab-shell.git
$ cd gitlab-shell
$ git checkout v1.4.0
$ cp config.yml.example config.yml
(必要に応じconfig.ymlの"gitlab_url"などを編集)
$ ./bin/install

gitlabのインストールと設定

$ cd /home/git
$ git clone https://github.com/gitlabhq/gitlabhq.git gitlab
$ cd gitlab
$ git checkout 5-3-stable

$ cp config/gitlab.yml.example config/gitlab.yml
$ cp config/puma.rb.example config/puma.rb
(必要に応じgitlab.ymlの"localhost"やpuma.rbの"workers"などを編集)
$ chown -R git log tmp
$ chmod -R u+rwX log tmp
$ mkdir /home/git/gitlab-satellites
$ mkdir tmp/pids tmp/sockets public/uploads
$ chmod -R u+rwX tmp/pids tmp/sockets public/uploads
$ git config --global user.name "GitLab"
$ git config --global user.email "git@localhost"

$ cp config/database.yml.mysql config/database.yml
$ chmod o-rwx config/database.yml

「database.yml」の"username"と"password"をMySQLに設定したものに変更

username: gitlab
password: "【パスワード】"

gemのインストール

多数のgemがインストールされるので結構時間がかかる。

$ cd /home/git/gitlab
$ bundle install --deployment --without development test postgres unicorn aws

データベースの作成

$ bundle exec rake gitlab:setup RAILS_ENV=production

このコマンドの後"yes"と打つとDBが作成されて管理アカウント情報が表示される。
デフォルトでは下記の内容になる。

login.........admin@local.host
password......5iveL!fe

起動スクリプトの設定

$ cd /home/git/gitlab
# cp lib/support/init.d/gitlab /etc/init.d/gitlab
# chmod +x /etc/init.d/gitlab
# chkconfig on gitlab

起動スクリプトを動かすとbundleが見つからない、と言われて動かない。
「/home/git/.bash_profile」のPATHに"/usr/local/bin"を追加

PATH=/usr/local/bin:$PATH:$HOME/bin


(参考)
新さくらVPSへの引越し vol.3 GitLab + Unicorn + Nginxの導入 - yokojiの日記
http://d.hatena.ne.jp/yokoji/20120408/1333879078

GitLabの起動とチェック

# /etc/init.d/gitlab start
$ bundle exec rake gitlab:check RAILS_ENV=production

これでGitLab単体でちゃんと動いている状況かを確認出来るので、赤字で問題が出ている点が表示されたところを確認修正する必要がある。
ただしsidekiqは後から起動するからいいらしい。


(参考)
GitLab 5.0 を CentOS 6.4 にインストールする - $web->{note};
http://n8.hatenablog.com/entry/2013/04/24/230340

nginxのインストールと設定

CentOS5のnginxではバージョンが古いためか"eventfd() failed"で失敗してうまく動かない。libaioをインストールしても改善しない。
そのため、リポジトリを追加して最新バージョンをインストールする。
nginxのデフォルト設定ファイルとgitlabの設定ファイルが当たるため、default.confを使ないようにして、gitlabのnginx設定ファイルを"gitlab.conf"とリネームしてコピーして使う。
nginxが/home/git/gitlab以下にアクセス出来るようにするため、gitグループに追加する。

「/etc/yum.repos.d/nginx.repo」を新たに作成

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/rhel/$releasever/$basearch/
gpgcheck=0
enabled=1

# yum install nginx
# cp /home/git/gitlab/lib/support/nginx/gitlab /etc/nginx/conf.d/gitlab.conf
# mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.disabled
# /usr/sbin/usermod -G git nginx

「/etc/nginx/conf.d/gitlab.conf」を編集

listen *:80 default_server;
server_name example.local;

「/etc/nginx/nginx.conf」を編集

user git

にしてnginxをgitの権限で動くようにする。これは今後設定を改善したい。


(参考)
CentOS 5.2 に GitLab をインストール - 人生いきあたりばったりで生きてます@はてな
http://moqada.hatenablog.com/entry/20120503/1335999910

comolog: CentOS 6.4 に GitLab 5.0.0 をインストールしてはまったこと
http://comolog.blogspot.jp/2013/03/centos-64-gitlab-500.html

その他

VMなどでメモリを少なく例えば512Mとかに設定していると動かない。
最低でも1Gは割り当ててないと動かないようだ。


(参考)
Getting 502 Bad Gateway when requesting gitlab / Issue #1527 / gitlabhq/gitlabhq
https://github.com/gitlabhq/gitlabhq/issues/1527

起動

これで http://example.localhost/ にアクセスするとログイン画面が表示される。
うまくいかない場合 /home/git/gitlab/log と /var/log/nginx 以下に関連するログが出るので、その内容から問題点を探していく。