はじめに
gitlab が入れたかったが、すでに redmine 入っているしどうしようって困っていたが、
なんかやろうと思えば共存できるようなのでやってみました。
別 VirtualHost だったら動くようなので、
redmine.xxxxxx.com
git.xxxxx.com
こんな感じで分けてます。
redmine は apache + passenger で動いていて、
gitlab は nginx + passenger で動いていて、apache からリバースプロキシで流しています。
とりあえずいろいろ迷走してなんとか起動できたが、手順の中に無駄なものがかなりありそう。。。
理想を言うならば、複数 Passenger を使えてディレクトリを分けるだけで二つ共存できたら嬉しかったんだけどなー。
/rails/app1.8.7
/app1.9.2
こんな感じにさ。
インストール環境
- OS
- CentOS5.5
- ruby
- 1.8.7(native)
- 1.9.2(rvm)
- rails
- 2.3.11(native)
- 3.1.1(rvm)
1.8.7 は redmine 用、すでにインストール済みなのでそこは割愛。
1.9.2 は gitlab 用。
参考記事
図で説明されているのでここが構造を理解する上では一番わかりやすいかも
- CentOS6.2(gitlab2.1+redmine1.3)(rvm+passenger+nginx) Vol.1 - studio3104::Blog::Infrastructure
- tmaeda hiki - Passenger と RVM で複数 gemset でのアプリケーション運用
- passenger も rvm で動かす OS の ruby に依存しない環境づくり | Act as Professional - hiroki.jp by HIROCASTER
- RVM と Phusion Passenger を使って複数の Ruby, Ruby on Rails アプリケーションを動かそう | ユニキャストラボ
- CentOS5.6 x86_64 で GitLab を動かしてみた | polidog lab++
ruby1.9.2 をインストール
すでに 1.8.7 が入っているので RVM を利用する。
# rvm install 1.9.2
# rvm 1.9.2
sqlite3 をソースからインストール
バージョンが高い rpm も yum も見つからなかったのでソースから
# wget http://www.sqlite.org/sqlite-autoconf-3071000.tar.gz
# tar xvfz sqlite-autoconf-3071000.tar.gz
# cd sqlite-autoconf-3071000
# ./configure
# make
# make install
必要なものを gem で落としておく
# gem install sqlite3 -- --with-sqlite3-include=/usr/local/include --with-sqlite3-lib=/usr/local/lib
gemsetを作成(よく意味わかってない)
# rvm gemset create rails-3.1.1
# rvm gemset use rails-3.1.1
# gem install rails -v '3.1.1'
# easy_install pygments
# gem install bundler
# rvm 1.9.2
# gem install passenger
nginx と passenger のインストール
1.8.7 は passenger と apache モジュールを、
1.9.2 は nginx と passenger をインストール。
# rvm reset
# gem install passenger
# passenger-install-apache2-module
# vi /etc/httpd/conf.d/passenger.conf
LoadModule passenger_module /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.11/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.11
PassengerRuby /usr/local/bin/ruby
# Passengerが追加するHTTPヘッダを削除するための設定。
#
Header always unset "X-Powered-By"
Header always unset "X-Rack-Cache"
Header always unset "X-Content-Digest"
Header always unset "X-Runtime"
# 必要に応じてPassengerのチューニングのための設定を追加。
#
PassengerMaxPoolSize 20
PassengerMaxInstancesPerApp 4
PassengerPoolIdleTime 3600
PassengerUseGlobalQueue on
PassengerHighPerformance on
PassengerStatThrottleRate 10
RailsSpawnMethod smart
RailsAppSpawnerIdleTime 86400
RailsFrameworkSpawnerIdleTime 0
# rvm 1.9.2
# gem install passenger
# passenger-install-nginx-module
1を選んでnginxをpassengerを一緒にインストール
# vi /usr/local/nginx/conf/nginx.conf
server {
listen 3000;
server_name git.xxxxxx.com;
location / {
root /home/git/gitlabhq/public;
index index.html index.htm;
passenger_enabled on;
}
}
これの受け口ポートを増やしていけば同じ要領でいくつでも立てられる。
# vi /etc/init.d/nginx
# chmod 755 /etc/init.d/nginx
# vi /etc/logrotate.d/nginx
gitlab をインストール
# su - git
$ git clone git://github.com/gitlabhq/gitlabhq.git ./gitlabhq-2.1.0
$ ln -sfn gitlabhq-2.1.0 gitlabhq
$ cd gitlabhq
$ bundle
bundle で出るエラーをいろいろ解消
$ bundle
Fetching https://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
GitHub に対して HTTPS で通信しようとして、証明書がなんたらかんたら言っているエラー。
解消する方法は2通り。Github を HTTPS で利用できるようにするか、HTTP で通信してしまうか。
- Github に HTTPS で通信したい場合はこちらを参照
- Giuhub に HTTP で通信したい場合
- Gemfile 内に https で Github の URL が書かれているところを http に変更する
$ diff Gemfile.org Gemfile
13,14c13,14
< gem "grit", :git => "https://github.com/gitlabhq/grit.git"
< gem "gitolite", :git => "https://github.com/gitlabhq/gitolite-client.git"
---
> gem "grit", :git => "http://github.com/gitlabhq/grit.git"
> gem "gitolite", :git => "http://github.com/gitlabhq/gitolite-client.git"
43c43
< gem "annotate", :git => "https://github.com/ctran/annotate_models.git"
---
> gem "annotate", :git => "http://github.com/ctran/annotate_models.git"
bundle の途中で nokogiri がないと怒られる
$ bundle
...
An error occured while installing nokogiri (1.5.0), and Bundler cannot continue.
Make sure that `gem install nokogiri -v '1.5.0'` succeeds before bundling.
nokogiri を入れようとしたがほかにもいろいろ足りなかったようで yum で入れる
# gem install nokogiri -v '1.5.0'
Building native extensions. This could take a while...
ERROR: Error installing nokogiri:
ERROR: Failed to build gem native extension.
/usr/local/rvm/rubies/ruby-1.9.2-p290/bin/ruby extconf.rb
checking for libxml/parser.h... no
-----
libxml2 is missing. please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dependencies.
-----
# yum install libxml2-devel.x86_64
# gem install nokogiri -v '1.5.0'
Building native extensions. This could take a while...
ERROR: Error installing nokogiri:
ERROR: Failed to build gem native extension.
/usr/local/rvm/rubies/ruby-1.9.2-p290/bin/ruby extconf.rb
checking for libxml/parser.h... yes
checking for libxslt/xslt.h... no
-----
libxslt is missing. please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dependencies.
-----
# yum install libxslt-devel.x86_64
またも bunble の途中で charlock_holmes がないと怒られる。
入れようとしても怒られた。
$ bundle
...
An error occured while installing charlock_holmes (0.6.8), and Bundler cannot continue.
Make sure that `gem install charlock_holmes -v '0.6.8'` succeeds before bundling.
# gem install charlock_holmes -v '0.6.8'
Building native extensions. This could take a while...
ERROR: Error installing charlock_holmes:
ERROR: Failed to build gem native extension.
- brianmario/charlock_holmes - GitHub
入れるには icu が必要なのとオプションが必須だそうで。。。
# yum install libicu-devel.x86_64
# gem install charlock_holmes -v '0.6.8' -- --with-icu-dir=/usr/share/icu/3.6/
bundle のつづき
sqlite は嫌いなので MySQL に変更する
$ vi config/database.yml
production:
adapter: mysql
database: gitlab
host: localhost
username: user
password: pass
encoding: utf8
$ bundle exec rake db:setup RAILS_ENV=production
ruby: symbol lookup error: /usr/local/rvm/gems/ruby-1.9.2-p290/gems/sqlite3-1.3.4/lib/sqlite3/sqlite3_native.so: undefined symbol: sqlite3_initialize
どうにも使えないみたい。。。しょうがないので sqlite で作る。
$ export LD_LIBRARY_PATH=/usr/local/lib
$ vi ~/.bashrc
LD_LIBRARY_PATH=/usr/local/lib
export LD_LIBRARY_PATH
$ bundle exec rake db:setup RAILS_ENV=production
$ bundle exec rake db:seed_fu RAILS_ENV=production
.rvmrc の作成
なんだかよくわかってない。。。
たぶんこのディレクトリに来ると勝手に rvm を指定のバージョンにしてくれる設定だと思う。
$ cd /home/git/gitlabhq/
$ rvm --rvmrc --create 1.9.2@rails-3.1.1
$ rvm rvmrc trust /home/git/gitlabhq/
Apache にてリバースプロキシ設定
# vi /etc/httpd/conf/httpd.conf
<VirtualHost *:80>
DocumentRoot /home/git/gitlabhq/public
ServerName xxxxx.xx
PassengerEnabled off
ProxyPass / http://127.0.0.1:3000/
ProxyPassReverse / http://127.0.0.1:3000/
</VirtualHost>
Redmine のほうの Rails に設定追加
なんの意味があるのかはよくわからない。
redmine のほうは rvm で動かしてないので、もしかしたらいらないかも。
$ vi redmine/config/setup_load_paths.rb
if ENV['MY_RUBY_HOME'] && ENV['MY_RUBY_HOME'].include?('rvm')
begin
rvm_path = File.dirname(File.dirname(ENV['MY_RUBY_HOME']))
rvm_lib_path = File.join(rvm_path, 'lib')
$LOAD_PATH.unshift rvm_lib_path
require 'rvm'
RVM.use_from_path! File.dirname(File.dirname(__FILE__))
rescue LoadError
# RVM is unavailable at this point.
raise "RVM ruby lib is currently unavailable."
end
end
起動
# /etc/init.d/httpd start
これでRedmineは起動する
# su - git
$ cd gitlabhq
$ rvm 1.9.2
$ ruby /usr/local/rvm/gems/ruby-1.9.2-p290/bin/passenger start -a 127.0.0.1 -p 3000 -d -e production
これでgitlabが起動する
表示確認
ページを確認したら Passenger のエラー画面が出た
http://github.com/gitlabhq/grit.git (at master) is not checked out. Please run `bundle install` (Bundler::GitError)
- Passenger が bundler でインストールした git gems を見つけてくれない件の対処, Rails 3.1 + PostgreSQL で "PGError: ERROR: new encoding (###) is.. - ぽっぺん日記@karashi.org(2011-09-16)
なんだかよくわからんが下記コマンドで直った。
# bundler install --deployment
新しいプロジェクトを作ろうとしたらエラーが出た
たぶん一番長くここで躓いた。
Gitolite Error
We're sorry, but we cant get access to your gitolite system.
1. Check 'config/gitlab.yml' for correct settings.
2. Be sure web server user has access to gitolite.
try に書かれた項目をやってみたが効果なし。
gitlab.yml を見てみても普通に問題なし。
前のエントリーで gitolite にはアクセスできることを確認済みなので、そこも問題ない。
Woohoo! Iʻve got it working with same sudo rm -rf /tmp/gitlabhq-gitolite*, thank You @remcoros.
/tmp 配下に作れていたファイルを全部消したら動くらしいので、
消してみると見事プロジェクトの作成ができた!
で、ここからいろいろ gitlab 内の設定なのだが、それはまた次回。
一括インストールスクリプト
全部終わったあとに見つけたんだがこんなのあった……
ちゃんと動くかわからないけど、コマンドの参考にはなるよね。