« Mozillaの高速リリースは止めたほうが良いと思うな。 | トップページ | iPod Touch (第4世代)。 »

さくらのVPSにRadiant CMSをセットアップ

さくらのVPS を導入してRadiant CMSの運用環境を構築するまでのメモ。なお、バージョンが指定された物は、依存関係を解決する過程で特定した物です。2011年9月現在の結果なので、OSや各モジュールの依存状況によって変動が出る可能性があります。最新状況の確認は各自にて。

また、バージョン指定物については「可能な限り最新版、ダメだったら少しずつバージョンダウンしてみる」という手法で解決を図っていますので、例えばrspecとrspec-railsはバージョンがずれており、合わせたほうがキモチ良いなーと思いつつそのままになっていたりします。

ちなみに、あたしはクリーンインストールに成功したこの記録に到達するまで、2回のOSリセットと概ね2回のごり押しをやっていまする。だいたい、1回目で破綻しつつ勘をつかんで、2回目+ごり押しでなんとか押し込むことに成功して、3回目できれいに納める、といった感じ。

記事全体としては、大まかな作業手順導入するRPM導入するgem具体的な手順、となっています。RPMやgemは、実際には導入手順の中で数回に分けて導入作業を行っています。大抵は最初に一括インストールして問題ないはずですが、確認はしていません(4回目をやるのが面倒)。RPMとgemの関係性とかもあるので、一括作業する人は注意。

大まかな作業手順

  1. rubyのインストール(1.8系)
  2. gemsのインストール
  3. railsのインストール(2系)
  4. DB関係のインストール
  5. radiant CMSのインストール
  6. 開発環境構築
  7. Passengerのインストール
  8. 運用環境構築

導入するRPMパッケージ

rubyのコンパイルで使うものたち。ext/の内容物をコンパイルするためのライブラリ類です。あとでアレが無いコレが足りないとやるのが面倒なので、後々必要になりそうなものをあらかじめ選び、導入要件を調べた結果こうなりました。
ncurses ncurses-devel gdbm gdbm-devel openssl openssl-devel zlib zlib-devel readline readline-devel
Rails運用に使うものたち。DB2種。ほかに使いたい人はそれを。sqliteは概ね最初から入っているはず。
mysql mysql-server mysql-devel sqlite-devel
Radiant CMS運用/開発に使うものたち。基本的には開発方面で必要になった気がします。ざっくりXML系ですな。
libxml2 libxml2-devel libxslt libxslt-devel
Passenger運用に使うものたち。
httpd-devel apr apr-devel httpd-devel curl-devel

導入するgem

Ruby on Rails本体。Rails3はあたしが慣れていないせいかそもそも一般流通しているgemが追従しきれていないのか、色々要らぬトラブルが発生するので当面Rails2でいきます。
rails -v 2.3.14
SQLite。これも、最新版(1.3.3)ではエラーになるので。まぁ基本テストで使うものなので多少いい加減でも良いかと。
sqlite3-ruby -v 1.2.5
MySQLについては特にひねりはありません。
mysql
Radiant CMSの開発環境まわり。運用だけならば不要だったように思います。
cucumber cucumber-rails database_cleaner webrat
おなじく、Radiant CMSのうちバージョン指定が必要な物。ちなみに、specぢゃなくてutest使うんだい!という人には不要です。
        
  • rspec -v 1.3.0
  •     
  • rspec-rails -v 1.3.2
Radiant CMS本体。Rails2系です。Rails3系は、radiant3だったかと。
radiant
Passenger。
passenger

手順

多少端折っていますが、実際に打ち込んだコマンドのログ。

まずはRubyとRubyGemsのインストール。前提条件として、RPM化するためにcheckinstallが導入済みとなっています。

rubyについてはインストール先のみ、/usr/に変更しています。単なる趣味というか職場環境がそうなっているからというか、まぁそのあたりが理由。

$ sudo yum install ncurses ncurses-devel gdbm gdbm-devel openssl openssl-devel zlib zlib-devel readline readline-devel

Installed:
  gdbm.i386 0:1.8.0-26.2.1.el5_6.1
  gdbm-devel.i386 0:1.8.0-26.2.1.el5_6.1
  gdbm-devel.x86_64 0:1.8.0-26.2.1.el5_6.1
  ncurses-devel.i386 0:5.5-24.20060715
  ncurses-devel.x86_64 0:5.5-24.20060715
  openssl-devel.i386 0:0.9.8e-20.el5
  openssl-devel.x86_64 0:0.9.8e-20.el5
  readline-devel.i386 0:5.1-3.el5
  readline-devel.x86_64 0:5.1-3.el5
  zlib-devel.i386 0:1.2.3-4.el5
  zlib-devel.x86_64 0:1.2.3-4.el5

Dependency Installed:
  e2fsprogs-devel.x86_64 0:1.39-33.el5 keyutils-libs-devel.x86_64 0:1.2-1.el5
  krb5-devel.x86_64 0:1.6.1-62.el5     libselinux-devel.x86_64 0:1.33.4-5.7.el5
  libsepol-devel.x86_64 0:1.15.2-3.el5 libtermcap-devel.x86_64 0:2.0.8-46.1

Complete!

$ cd ruby-1.8.7-p352
$ ./configure --prefix=/usr/
$ make ; make test

test succeeded

checkinstallでRPM化するにあたり、説明文はyum infoで得られるものをそのまま使います。どうせ個人使用なんで何でも良いといえばそれまでなんですが。

また、checkinstallでは1~4までの項だけを再設定します。Summaryについては同じくyum infoの内容をコピペ。2~3もyumで取ってこれるRPMに合わせることで、あとで入れ替えるときなどに要らぬトラブルが出ないようにします(したつもり)。

$ yum info ruby >description-pak
$ vi description-pak
★Description: の項だけ残して後は削除しておく。

$ sudo /usr/local/sbin/checkinstall
★1~4まで再設定。
1 -  Summary: [ An interpreter of object-oriented scripting language ]
2 -  Name:    [ ruby ]
3 -  Version: [ 1.8.7 ]
4 -  Release: [ p352 ]

**********************************************************************

Done. The new package has been saved to

/usr/src/redhat/RPMS/x86_64/ruby-1.8.7-p352.x86_64.rpm
You can install it in your system anytime using:

      rpm -i ruby-1.8.7-p352.x86_64.rpm

**********************************************************************

$ sudo rpm -ivh /usr/src/redhat/RPMS/x86_64/ruby-1.8.7-p352.x86_64.rpm
Preparing...                ########################################### [100%]
   1:ruby                   ########################################### [100%]

gemについては何のひねりもありません。

$ cd rubygems-1.7.2/
$ sudo ruby setup.rb
RubyGems 1.7.2 installed

Ruby on Railsについては、バージョン指定しているところだけが特殊です。何も指定しないと、Rails3が入ってきます。

$ sudo gem install rails -v 2.3.14

ここで、うっかり忘れていたDB関係を入れることに。sqlite3-rubyのみバージョン指定が入ります。

$ sudo yum install sqlite-devel
$ sudo gem install sqlite3-ruby -v 1.2.5

$ sudo yum install mysql mysql-server mysql-devel

Installed:
  mysql.i386 0:5.0.77-4.el5_6.6           mysql.x86_64 0:5.0.77-4.el5_6.6
  mysql-devel.i386 0:5.0.77-4.el5_6.6     mysql-devel.x86_64 0:5.0.77-4.el5_6.6
  mysql-server.x86_64 0:5.0.77-4.el5_6.6

Dependency Installed:
  perl-DBD-MySQL.x86_64 0:3.0007-2.el5       perl-DBI.x86_64 0:1.52-2.el5

Complete!


$ sudo gem install mysql
Successfully installed mysql-2.8.1

ここで、Ruby on Railsのテストアプリを作ってみて、welcomeページ程度まで表示できることを確認しておきます。

$ rails testapp
$ cd testapp
$ script/server
★http://<IPアドレス>:3000/にアクセス

Radiant CMS関係。試行錯誤の結果、特に開発環境についてはあらかじめ相性問題を解決したgemを導入しておかないと、勝手気ままに依存関係を解消しようとした結果訳の分からない状態に突入する、という結論になりました。

$ sudo yum install libxml2 libxml2-devel libxslt libxslt-devel

Installed:
  libxml2.i386 0:2.6.26-2.1.12          libxml2-devel.i386 0:2.6.26-2.1.12
  libxml2-devel.x86_64 0:2.6.26-2.1.12  libxslt.i386 0:1.1.17-2.el5_2.2
  libxslt-devel.i386 0:1.1.17-2.el5_2.2 libxslt-devel.x86_64 0:1.1.17-2.el5_2.2

Dependency Installed:
  libgcrypt-devel.x86_64 0:1.4.4-5.el5     libgpg-error-devel.x86_64 0:1.4-2

Complete!

$ sudo gem install cucumber cucumber-rails database_cleaner webrat

Successfully installed json-1.6.1
Successfully installed gherkin-2.5.1
Successfully installed term-ansicolor-1.0.6
Successfully installed builder-3.0.0
Successfully installed diff-lcs-1.1.3
Successfully installed cucumber-1.1.0
Successfully installed gherkin-2.4.21
Successfully installed cucumber-1.0.6
Successfully installed nokogiri-1.5.0
Successfully installed mime-types-1.16
Successfully installed json_pure-1.6.1
Successfully installed rubyzip-0.9.4
Successfully installed ffi-1.0.9
Successfully installed childprocess-0.2.2
Successfully installed selenium-webdriver-2.7.0
Successfully installed rack-test-0.6.1
Successfully installed xpath-0.1.4
Successfully installed capybara-1.1.1
Successfully installed cucumber-rails-1.0.5
Successfully installed database_cleaner-0.6.7
Successfully installed webrat-0.7.3
21 gems installed

ここで以下のエラー発生。ただしどうやらドキュメント類が破損したような気配だったので放置。だがしかし、その後のgemも軒並みドキュメント類で「Could not find main page README.rdoc」というエラーが出たようなので、対処したほうがよかったのかも…。

ERROR:  While generating documentation for builder-3.0.0
... MESSAGE:   Unhandled special: Special: type=17, text=""
... RDOC args: --ri --op /usr/lib/ruby/gems/1.8/doc/builder-3.0.0/ri --title Builder -- Easy XML Building --main README.rdoc --line-numbers lib CHANGES Rakefile README README.rdoc TAGS doc/releases/builder-1.2.4.rdoc doc/releases/builder-2.0.0.rdoc doc/releases/builder-2.1.1.rdoc --title builder-3.0.0 Documentation --quiet

この時点で、「Invalid gemspec in [...]: invalid date format in specification: "2011-09-18 00:00:00.000000000Z"」というエラーが大量に出始めて非常にウザくなります。調べたところどうもgemspecの日付フォーマットが実動作にあっていないものがいくつかあるようです。仕様がDateTimeからDateに変わったか、その逆なのでしょうたぶん。

取り敢えず、一通り入れます。

$ sudo gem install rspec -v 1.3.0
Successfully installed rspec-1.3.0
1 gem installed

$ sudo gem install rspec-rails -v 1.3.2
Successfully installed rspec-rails-1.3.2
Successfully installed rspec-core-2.6.4
Successfully installed rspec-expectations-2.6.0
Successfully installed rspec-mocks-2.6.0
4 gems installed

$ sudo gem install radiant
Successfully installed will_paginate-2.3.16
Successfully installed RedCloth-4.2.8
Successfully installed radiant-0.9.1
3 gems installed

先のInvalid gemspec in …を回復させます。 gem list 等を実行するとエラーがどどっと出るので、それらのgemspecファイルを開き、s.dateに代入されている日付の文字列表現を修正します。具体的には後半の時刻部分を削除。

前:"2011-09-18 00:00:00.000000000Z" →後:"2011-09-18"

もう一度 gem list 等を実行してみて、エラーが無くなればOK…だと思います。今のところ障害は無し。

今回構築した環境では、Radiant CMS関連を実行する際にMutex (NameError)というエラーが出ます。これもたぶん標準ライブラリか何かの構成が変わった…用なのですが、対処療法としては require "thread" を追記してやることでエラーが解消します。

今回は、書き換えるファイルが最も少なくて済む方法を検討した結果として次の2ファイルに追記しました。どちらも先頭(RAILS_ROOT =の直後行)に追記しています。

  • /usr/lib/ruby/gems/1.8/gems/radiant-0.9.1/config/boot.rb
  • /usr/lib/ruby/gems/1.8/gems/radiant-0.9.1/lib/generators/instance/templates/instance_boot.rb

テストアプリを作ってみて、Radiant CMSとその開発環境(取り敢えずあたしはextensionを自作したい)が正常動作することを確認します。

$ radiant -d sqlite3 testapp
$ cd testapp
$ env RAILS_ENV=production rake db:bootstrap
$ script/server -e production

★http://<IPアドレス>:3000/にアクセス。
adminログインし、ページ作ったりレイアウト作ったりしてみてDB書き込み含めて稼働することを確認。
$ script/generate extension test_ex
$ script/generate extension_model test_ex xxx
$ pushd vendor/extensions/test_ex/
$ rake spec
★app/models/xxx.rbをちょこっといじってみる
$ rake spec
★xxx.rbをいじった結果が反映されればOK。

$ pushd

|

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/28934/52831063

この記事へのトラックバック一覧です: さくらのVPSにRadiant CMSをセットアップ:

コメント

メモ:libyamlのインストールを追記する。

投稿: 土野 魔魅 | 2013/01/06 18:55

コメントを書く