どぶお/開発しよう!
 #floatcontents
 * GitLabをインストールする [#n7695c6f]
 #anno1(2012-01-14 : 作成)
 
 - [[''GitLab 5.1.0のインストール''>../../GitLab 5.1.0のインストール]]もまとめました -- 2013年5月
 
 ----
 gitを使い始めたばかりでgitoliteを使ったこともない、RailsはおろかRubyも使ったことがない、という状況で試したのでかなり苦労しました・・・~
 なお、ネット上ではGitLab + gitosisの情報(恐らくGitLab 1.2)が多いですが、2011年12月下旬にリリースされた2.0からgitoliteが標準になったようです。なお、gitoliteは以前のバージョン(CentOS6でRPMがあります)と最近のアーカイブではインストール方法などが異なっていますので、新たにインストールするならここで示したようにgitで取得したアーカイブを使う方が簡単だと思います。これを認識しておかないと大混乱します(しました)。
 
 - &color(red){2012-02-03: GitLab 2.1.0に移行するときに2.0.0のproduction.dbをそのままコピーするとプロジェクトの作成などがうまくできなくなるので注意!(keysテーブルの構成が変わってる)};
 
 ** 実行ユーザーの作成 [#cd3d282a]
 まずはWebサーバ上の管理ユーザーを作成します。gitというユーザーを使用しますが、コマンド名等と紛らわしいのでユーザーgitを表す時は斜体'''git'''で表現します。ホームディレクトリは/home/gitにします。
  # groupadd -g 600 '''git'''                         <-- GID:600で作成
  # useradd -m -g 600 -u 600 '''git'''                <-- UID:600で作成
  # passwd '''git'''                                        <-- シェルで作業するのでパスワードを設定しておく
  # su - '''git'''                                          <-- ユーザー'''git'''で作業
  % git config --global user.name "Git Administrator" <-- 適当に
  % git config --global user.email "git@localhost"    <-- 適当に
 user.nameとuser.emailを設定しておかないとGitLabでの動作の時にエラーが発生します。
  % cd .ssh
  % ssh-keygen -t rsa -N "" -f id_rsa    <-- パスフレーズなしで作成
 以降、インストールはユーザー'''git'''で行います。
 
 ** gitoliteのインストール [#w648d495]
 - https://github.com/sitaramc/gitolite/blob/pu/doc/index.mkd
 - https://github.com/sitaramc/gitolite/blob/pu/doc/install.mkd
 
  % cd <-- '''git'''ホームディレクトリで作業
  % git clone git&#058;//github.com/sitaramc/gitolite
  % gitolite/src/gl-system-install
 ここでgitoliteの実行ファイル群にパスを通せと言われるのでこの場のみパスを通す。
  % export PATH=/home/git/bin:$PATH
  % ln -s .ssh/id_rsa.pub GitlabAdmin.pub <-- gitoliteの識別名として使われるのでリンクで名前を付ける
  % gl-setup -q ~/GitlabAdmin.pub
  creating gitolite-admin...
  Initialized empty Git repository in /home/git/repositories/gitolite-admin.git/
  creating testing...
  Initialized empty Git repository in /home/git/repositories/testing.git/
  [master (root-commit) 052c845] start
   2 files changed, 6 insertions(+), 0 deletions(-)
   create mode 100644 conf/gitolite.conf
   create mode 100644 keydir/GitlabAdmin.pub
 このようにキーが追加されます。~
 パスフレーズなしで'''git'''アカウントにログインできるかを確認およびknown_hostへのlocalhostの追加を行うためにsshでログインします(ログイン時にはbl-auth-commandが使われるのでシェルには入れない)。
  % ssh localhost
  The authenticity of host 'localhost (127.0.0.1)' can't be established.
  ECDSA key fingerprint is XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX.
  Are you sure you want to continue connecting (yes/no)? yes
  Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
  PTY allocation request failed on channel 0  <-- このような応答があればOK
 gitolite-adminリポジトリにアクセスできるかを確認。
  % git clone git@localhost:gitolite-admin
  Cloning into gitolite-admin...
  remote: Counting objects: 6, done.
  remote: Compressing objects: 100% (4/4), done.
  remote: Total 6 (delta 0), reused 0 (delta 0)
  Receiving objects: 100% (6/6), done.
 これでgitoliteのインストールは完了です。
 
 ** GitLabのインストール [#o6c2f6a6]
 続いてGitLabをインストールします。これも作業はユーザー'''git'''で行います。
 :参考|
 - [[polidog lab++ - CentOS5.6 x86_64でGitLabを動かしてみた>http://www.polidog.jp/2011/11/07/centos5-6-x86_64%E3%81%A7gitlab%E3%82%92%E5%8B%95%E3%81%8B%E3%81%97%E3%81%A6%E3%81%BF%E3%81%9F/]]
 
 *** rpmでインストール [#ua957b0e]
 GitLabはRuby 1.9.2以上が必要になりますが、Vine6では1.8.7なので、1.9.3-p0のRPMパッケージを作成しました。これらをインストールします。RPMを使わない場合はソースなどからインストールして下さい。なお、RubyおよびRailsの複数バージョンを使いたい場合はRVMというものを使うといいみたいです(ここでは取り上げませんが)。
 - Vine6用に作成したrubyのパッケージ群 -- [[Vine6 RPMパッケージ/ruby 1.9.3.0-1vl6]]
 -- ruby-1.9.3.0-1vl6
 -- libruby-1.9.3.0-1vl6
 -- ruby-devel-1.9.3.0-1vl6
 -- irb-1.9.3.0-1vl6
 -- ruby-openssl-1.9.3.0-1vl6
 -- rdoc-1.9.3.0-1vl6
 - &color(red){redis-server -- GitLab 2.1から必要になりました};
 -- redis-2.4.6-1vl6 -- [[Vine6 RPMパッケージ/redis 2.4.6-1vl6]]
 -- インストール後
  # service redis start
 で起動させておかないと、bundleでConnection refusedが発生して失敗します。~
 いちいち起動するのが面倒な場合はchkconfigでonにしておきます。
  # chkconfig redis on
 
 *** apt [#s62574a0]
 続いて、aptで以下のパッケージをインストールします。ひょっとしたらこれ以外にも必要な物があるかもしれませんが、さほど複雑なライブラリはなかった気がします(aptでインストール可能なものばかり)。
 - libxml2-devel
 - sqlite3-devel
 - libxslt-devel
 - libicu-devel
 - python-setuptools
 - python-devel
 
 *** インストール [#we3a1738]
 ここまできたら、Rubyのパッケージをgemを使ってインストールします。~
 GitLabのバージョンによって内容が変わるので、本家のWikiを確認することをオススメします。GitLab 2.1.0は以下の手順でインストールできました。
  # eazy_install pygments
  # gem install bundler
  # gem install charlock_holmes -v '0.6.8'
 
 ようやくGitLab本体のインストールを行います。2012年2月現在のバージョンは2.1(2012-01-22)と書いてありました。
  % cd  <-- ホームディレクトリからスタートします
  % git clone http&#058;//github.com/gitlabhq/gitlabhq.git
  % cd gitlabhq
  % bundle <-- githubのCAを認証する設定をしていないとSSLのエラー
  Fetching https&#058;//github.com/gitlabhq/grit.git
  error: SSL certificate problem, verify that the CA cert is OK. Details:
  error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed while accessing https://github.com /gitlabhq/grit.git/info/refs
 以上のようなエラーが出る場合はこのディレクトリのGemfileを編集します。またはGitHubをHTTPSで使えるようにしておきたい場合は下記のページを参照して必要な証明書をインストールして下さい。
 - [[GitHubをHTTPSで使う>../gitいろいろ]] -- GitHubをHTTPSで使えるようにしておきたい場合(この操作をした場合、Gemfileの編集は不要になります)
 
 :Gemfileの編集|
 Gemfile中の''&color(red){https};&#058;//github.com/...''を''&color(red){http};&#058;//github.com/...''に変更します。3ヶ所あるはずです。
 
 修正したら再度bundleを実行します。途中でsudoを実行するためにパスワード入力があるので認証して下さい。
  &color(blue){% bundle install --without development test};
  &color(blue){% bundle exec rake db:setup RAILS_ENV=production};
  ...(省略)
  -- assume_migrated_upto_version(20120110180749, ["/home/git/gitlabhq/db/migrate"])
     -> 0.8604s
  &color(blue){% bundle exec rake db:seed_fu RAILS_ENV=production};
  
  == Seed from /home/git/gitlabhq/db/fixtures/production/001_admin.rb
  
  Administrator account created:
  
  login.........admin&#064;local.host
  password......5iveL!fe
 最初はこのアカウントでログインします。
 
 *** 動作テスト [#f227d4d7]
 ポート8080でサーバを起動してみる
  % rails s -e production -p 8080
 8080にアクセスしてログインできたらとりあえずOK。
 
 ** passengerでapacheからRailsを動かす [#x2e0955b]
 :参考|
 - [[Redmin.jp - Apache上でRuby on Railsアプリケーションを動かす/Passenger(mod_rails for Apache)の利用>http://redmine.jp/tech_note/apache-passenger/]]
 - [[Serendip - Apache2, passenger, で Rails をサブディレクトリでアクセスできるようにする>http://www.serendip.ws/archives/4413]]
 
 *** passengerのインストール [#m2a17ceb]
  # gem install passenger
  # passenger-install-apache2-module
 
 apache2の設定を行います。
 :apache2ディレクトリのconf.d/passenger.conf|
  LoadModule passenger_module /usr/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/ext/apache2/mod_passenger.so
  PassengerRoot /usr/lib/ruby/gems/1.9.1/gems/passenger-3.0.11
  PassengerRuby /usr/bin/ruby
  RailsPoolIdleTime 3600
 以上でpassengerの初期設定ができました。
 
 ** その他エラー [#x25325c2]
 エラーを修正したらapacheの再起動をお忘れなく!
 
 *** could not find any magic files!が出た [#s7e82f72]
 プロジェクトを表示させようとした時に以下のエラーが出ました。
  Started GET "/lab/test_project" for hostname at 2012-01-14 21:11:19 +0900
    Processing by ProjectsController#show as HTML
    Parameters: {"id"=>"test_project"}
  Completed 500 Internal Server Error in 13ms
  
  StandardError (could not find any magic files!):
    config/initializers/gitlabhq/20_grit_ext.rb:19:in `transcoding'
    config/initializers/gitlabhq/20_grit_ext.rb:13:in `content'
    app/models/repository.rb:98:in `commit'
    app/models/project.rb:73:in `commit'
    app/models/project.rb:177:in `has_commits?'
    app/controllers/projects_controller.rb:70:in `show'
 これはcharlock_holmesがちゃんとインストールされていない時に発生するようです。
 [[README>https://github.com/brianmario/charlock_holmes/blob/master/README.md]]によると、--with-icu-dirオプションを付けてインストールしろとのこと。
  # gem install charlock_holmes -- --with-icu-dir=/usr/share/icu/4.4
  Building native extensions.  This could take a while...
  Successfully installed charlock_holmes-0.6.8
  1 gem installed
  Installing ri documentation for charlock_holmes-0.6.8...
  unable to convert "\xE5" from ASCII-8BIT to UTF-8 for ext/charlock_holmes/src/file-5.08/magic/Magdir/riff, skipping
  ...略(7行ぐらい)
  Installing RDoc documentation for charlock_holmes-0.6.8...
  unable to convert "\xE5" from ASCII-8BIT to UTF-8 for ext/charlock_holmes/src/file-5.08/magic/Magdir/riff, skipping
  ...略(7行ぐらい)
 なんかunable to convertがいっぱい出ましたが、回避されるようになりました。
 
 ** コメント [#if079dbe]
 - 大変参考になりました。有難う御座います。 -- pochy &new{2012-02-06 (月) 12:23:56};
 
 #comment