2011年11月27日日曜日

Redmineをrvm使ってるCent OS 5.7にインストールする長ーい顛末

先日仕事でRedmineをCentOS 5.7のサーバーにインストールする必要があった。割りと新しいOSだし、Redmineも開発が活発なので、サクっとインストールするつもりだったけど、思いの外ハマったので、その顛末を残しておく。

ここから顛末ですが、長いです…。


基本は、Redmine.JP BLOGの流れ。

http://blog.redmine.jp/articles/redmine-1_2-installation_centos/

RedmineをCentOS 5.7にインストールしようしたが、CentOS 5.7のRubyはデフォルト1.8.5。使っているサーバは、rvmでRuby 1.9.xもインストールしてあって、そちらがデフォルトになっている。1.9.2は今は使ってないので、1.8.x系の最新を入れようと1.8.7をrvmでインストールして、そこにRedmineに必要なgem達を入れた環境を作ろうとしてハマった。

まずは、Ruby 1.8.7の最新版をインストールしようとして、

% rvm install 1.8.7-head

とやってもエラーが出る。

最初は、よくある会社のプロキシーがネックかと思ったけど、http_proxy, https_proxy,ftp_proxyを環境変数にセットしてるし、

% rvm list known

は動いてるので、なんかおかしい…。

で、今一度エラーメッセージを見なおしたら、

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/ruby/ruby.git/info/refs

と書いてある。どうやらSSLの証明書関係でコケてるようなので、調べると以下のURLに行き着く。

http://stackoverflow.com/questions/6230031/rvm-install-1-8-7-head-errors-on-centos-5-5

ここのAnswerにあるように、

% cp /etc/pki/tls/certs/ca-bundle.crt ~/ca-bundle.crt
% curl http://curl.haxx.se/ca/cacert.pem -o /etc/pki/tls/certs/ca-bundle.crt

とやるが、

curl: (23) Failed writing body

とか、

curl: (6) Couldn't resolve host 'curl.haxx.se'

とか言い出す。仕方ないので、Curlを使わずに、

% wget http://curl.haxx.se/ca/cacert.pem
% sudo cp cacert.pem /etc/pki/tls/certs/ca-bundle.crt

とやって、証明書を追加。

で、今度はいけるかと思ったら、configureの途中でコケてて、こんなエラーが出てる。

configure.in:4: error: Autoconf version 2.60 or higher is required
configure.in:4: the top level
autom4te: /usr/bin/m4 failed with exit status: 63
aclocal: autom4te failed with exit status: 63
autoreconf: aclocal failed with exit status: 63

autoconfが2.60以上じゃないとダメらしい。CentOS 5.7には2.59がインストールされてる。惜しい。ソースからコンパイルしてインストールすると、後々アップデートとか面倒なので、ここは素直にRuby 1.8.7のインストールを断念。

気持ちを新たに、

% rvm install 1.8.6-head

として、1.8.6をインストールすることに。

で、ようやくRuby 1.8.6はインストール完了。

% rvm list

rvm rubies

=> ruby-1.8.6-head [ i386 ]
  ruby-1.9.2-p290 [ i386 ]

で、Redmine.JP BLOGにある通りにgemをインストール。

% gem install rack -v=1.1.1 --no-rdoc --no-ri
% gem install rake -v=0.8.7 --no-rdoc --no-ri
 →gem uninstall rakeで、0.9.2をアンインストール
% gem install i18n -v=0.4.2 --no-rdoc --no-ri
% gem install mysql --no-rdoc --no-ri

MySQLの設定は既にしてたので、configをサイト通りに編集。

で、

% rake generate_session_store
(in /var/www/redmine)
rake aborted!
private method `chomp' called for nil:NilClass
/var/www/redmine/Rakefile:4
(See full trace by running task with --trace)

エラー!調べると、同じ症状で悩んでる人がいて、

http://www.redmine.org/issues/7616

解決策がpatchとして提供されている。

http://www.redmine.org/issues/7616#note-3

で、これを ~/.rvm/rubies/ruby-1.8.6-head/lib/ruby/1.8/logger.rb に適用してあげて、再度

% rake generate_session_store --trace
(in /var/www/redmine)
** Invoke generate_session_store (first_time)
** Invoke config/initializers/session_store.rb (first_time)
** Execute config/initializers/session_store.rb
** Execute generate_session_store

OK!

% rake db:migrate RAILS_ENV=production
(in /var/www/redmine)
zsh: virtual time alarm  rake db:migrate RAILS_ENV=production

あれ?またなんかエラー出てる。エラーメッセージで検索すると、gemのMySQLをダウング レードすれば良いとのこと。

http://groups.google.com/group/rubyversionmanager/msg/43d3d4d9c842ba56

これまた、2.7のインストールは普通にやるとダメ。なので、以下のコマンドで実行。

% gem install mysql -v=2.7 --no-rdoc --no-ri -- --with-mysql-lib=/usr/lib/mysql
※途中にある「--」を抜くとインストールできない

gemのmysql 2.8.1はアンインストール。これで再度、

% rake db:migrate RAILS_ENV=production

うまくいった。

続いて、Passengerのインストール。

% gem install passenger --no-rdoc --no-ri
Building native extensions.  This could take a while...
Successfully installed fastthread-1.0.7
Successfully installed daemon_controller-0.2.6
Successfully installed passenger-3.0.9
3 gems installed

これはすんなり行った。

次、PassengerのApache向けモジュールインストール。

% passenger-install-apache2-module
Welcome to the Phusion Passenger Apache 2 module installer, v3.0.9.

This installer will guide you through the entire installation process. It
shouldn't take more than 3 minutes in total.

Here's what you can expect from the installation process:

 1. The Apache 2 module will be installed for you.
 2. You'll learn how to configure Apache.
 3. You'll learn how to deploy a Ruby on Rails application.

Don't worry if anything goes wrong. This installer will advise you on how to
solve any problems.

Press Enter to continue, or Ctrl-C to abort.


--------------------------------------------

Checking for required software...

 * GNU C++ compiler... found at /usr/bin/g++
 * Curl development headers with SSL support... not found
 * OpenSSL development headers... found
 * Zlib development headers... found
 * Ruby development headers... found
 * OpenSSL support for Ruby... found
 * RubyGems... found
 * Rake... found at /hdd/ueki/.rvm/wrappers/ruby-1.8.6-head/rake
 * rack... found
 * Apache 2... found at /usr/sbin/httpd
 * Apache 2 development headers... found at /usr/sbin/apxs
 * fastthread... found
 * Apache Portable Runtime (APR) development headers... found at
/usr/bin/apr-1-config
 * Apache Portable Runtime Utility (APU) development headers... found at
/usr/bin/apu-1-config

Some required software is not installed.
But don't worry, this installer will tell you how to install them.

Press Enter to continue, or Ctrl-C to abort.

あっ、curl-develがない…。

% sudo yum install curl-devel

気を取り直して、

% passenger-install-apache2-module

コンパイルしたり、なんだったりしてるけど、無事成功。

ここで、Redmine.JP BLOGでは、Apacheをworker MPMに切り替えるってあるけど、これをやるとPHPで書かれたWebアプリが動かなくなるからやめといた。(実際試して、XOOPSとかがグダグダになった…。)

Passengerの設定をApacheへ。基本は、Redmine.JP BLOGのままだけど、Passengerの場所はrvm使ってるので全然違う。それは実態に合わせて書き換え。

Apacheへ、Redmineの場所を設定。(http://○○/redmineに設置する場合)

% ln -s /var/www/redmine/public DOCUMENT_ROOT/redmine

あと、/etc/httpd/conf.d/passenger.confに

RailsBaseURI /redmine

も追加。

で、Apacheを再起動。

% sudo /etc/init.d/httpd configtest
Syntax OK
% sudo /etc/init.d/httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]

はぁ、ようやくRedmineのインストール完了。ここまで長かった。

敗因は、RedmineやRubyが要求する新しめのパッケージが、CentOS 5.7のyumではまだ提供されていないこと。CentOS 6.0に乗り換えたいところだが、クリーンインストールじゃないといけない6.0には、なかなか行けない。まぁ、これは別の問題。

0 コメント:

コメントを投稿