先日仕事で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 コメント:
コメントを投稿