目次
この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
よしだです。
2週連続の投稿となる今回は、前回予告した通り FreeBSD へのエレコマの導入手順を紹介したいと思います。
0. Ports Collection + Ruby on Rails のインストール
今回はこの部分の説明を割愛します。
前回の記事『FreeBSD に任意バージョンの Ruby on Rails を導入する』が参考になると思います。
1. ImageMagick のインストール
まずは エレコマの商品画像処理に使われている ImageMagick を導入していきます。
今回はインストール前の設定で SVG ライブラリをインストールしないようにオプションから外しています。
これは SVG ライブラリインストールの際に GTK および X Window System が必要になって、不要な時間・ディスク容量を費やすのを避けるためです。
# cd /usr/ports/graphics/ImageMagick
# make config-recursive
(ここで ImageMagick の SVG オプションを解除)
# make install clean
2. PostgreSQL のインストール
今回 DB にはエレコマで公式サポートしている PostgreSQL を利用することにします。
サポートはされていませんが、MySQL での導入も可能です。
# cd /usr/ports/databases/postgresql83-server
# make install clean
# echo 'postgresql_enable="YES"' >> /etc/rc.conf
(次回ブート時に自動起動)
# /usr/local/etc/rc.d/postgresql initdb
(DB設定などがない状態なので、このコマンドで初期化)
# /usr/local/etc/rc.d/postgresql start
(サービス開始)
3. git のインストール
エレコマの最新ソースコードは GitHub から入手可能です。
ここではダウンロードに必要なバージョン管理ツール git をインストールしておきます。
# cd /usr/ports/devel/git
# make config-recursive
# make install clean
4. 必要な Gem のインストール
エレコマに必要となる Gem をインストールします。
一部古いバージョンの Gem も含まれますが、互換性を考え、README に合わせてインストールするのが無難でしょう。
# gem install rmagick -v 2.12.2
# gem install postgres
# gem install gettext -v 2.1.0
# gem install gruff -v 0.3.6
# fetch http://www.artonx.org/data/lhalib/lhalib-0.8.1.gem
# gem install lhalib-0.8.1.gem
# gem install webmock -v 1.3.4
# gem install thoughtbot-factory_girl -v 1.2.2 --source http://gems.github.com
# gem install json
# gem install daemons
5. 一般ユーザに切り替え
ここでエレコマを実際に動かすことになる一般ユーザに切り替えます。
今回は ec というユーザを作成し、このユーザの権限の元でエレコマを実行させます。
# pw useradd ec -m
# passwd ec
(パスワードは適当に elecoma を設定)
# su - ec
6. エレコマのダウンロード
一般ユーザに切り替えたところで、早速エレコマ本体をダウンロードします。
% git clone git://github.com/elecoma/elecoma.git
% cd elecoma
7. DB 設定をFreeBSD 向けに変更
次にデータベースの設定を FreeBSD に合わせて変更していきます。
エレコマの設定は CentOS に最適化されているので、PostgreSQL のデフォルトのユーザ名など、細かいところに相違があるようです。
% id postgres
id: postgres: no such user
(CentOS 版 PostgreSQL のデフォルトユーザ名 postgres が存在しない?!)
% id pgsql
uid=70(pgsql) gid=70(pgsql) groups=70(pgsql)
(FreeBSD では pgsql という名前で登録されています)
早速この点に修正を加えます。
% cp config/database.example.yml config/database.yml
% vim config/database.yml
(「portgres」となっている部分を「pgsql」に変更)
% diff config/database.yml config/database.example.yml
3c3
< username: pgsql
---
> username: postgres
8. 各種プラグインのインストール
エレコマに必要となるプラグインをインストールします。
これも Gem と同様に、一部古いプラグインが含まれますが、ここでは動作の安全性を優先します。
この部分は、ほぼ README のコピペになるので、リンク切れ等があるばあいは適宜修正して利用してください。
% ruby script/plugin install git://github.com/realityforge/rails-active-form.git
% ruby script/plugin install git://github.com/rails/acts_as_list.git
% ruby script/plugin install git://github.com/technoweenie/acts_as_paranoid.git
% ruby script/plugin install git://github.com/rails/acts_as_tree.git
% ruby script/plugin install http://topfunky.net/svn/plugins/ar_fixtures/
% ruby script/plugin install git://github.com/jpmobile/jpmobile.git -r 'tag 0.0.8'
% ruby script/plugin install http://taslam-plugins.googlecode.com/svn/trunk/jpmobile_emoticon_filter/
% cd vendor/plugins
% git clone git://github.com/tmtysk/mbmail.git mbmail
% cd mbmail
% git checkout 654ce3ec2dfa10ac3b05cd9354eb84456d206a6d
% rm -fr lib/jpmobile
% rm -fr .git
% cd ../../..
% ruby script/plugin install git://github.com/jamesgolick/resource_controller.git
% ruby script/plugin install git://github.com/mislav/will_paginate.git -r 'tag 2.3.6'
% cd vendor/plugins/
% git clone git://github.com/mislav/will_paginate.git
% cd will_paginate/
% git checkout origin/2-3-stable
% cd ../../..
% ruby script/plugin install git://github.com/kakutani/yaml_waml.git
% ruby script/plugin install git://github.com/rails/ssl_requirement.git
% ruby script/plugin install git://github.com/DianthuDia/double_submit_protection.git
% ruby script/plugin install git://github.com/champierre/image_submit_tag_ext.git
% ruby script/plugin install git://github.com/dchelimsky/rspec-rails.git -r 'tag 1.2.9'
% ruby script/plugin install git://github.com/dchelimsky/rspec.git -r 'tag 1.2.9'
9. DBを作成する……しかし……
ここまできたら、次は DB の作成! となるのですが、どうやらうまく実行できないケースがあるようです。
今回インストールを試した環境では、下記のようなエラーが発生し、DB の作成が失敗してしまいました。
% rake db:create
WARNING: 'require 'rake/rdoctask'' is deprecated. Please use 'require 'rdoc/task' (in RDoc 2.4.2+)' instead.
at /usr/local/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/rdoctask.rb
rake aborted!
no such file to load -- iconv
エラーによれば iconv というライブラリが不足しているようなので、これをインストールします。
ここで注意点は、iconv そのものではなく、Ruby 向けの ruby-iconv をインストールしなければならないことです。
% exit
# cd /usr/ports/converters/ruby-iconv
# make install
# su - ec
無事にインストールが終われば、ec ユーザに戻り、もう一度 DB 作成に挑戦します。
10. あらためて DB 作成を作成する
必要なライブラリを揃えたところで、もう一度 DB の作成を実行します。
今度はうまくいき、DBの作成に成功します(※1)。
% rake db:create
11. DB を初期化する
データベースにテーブルを作成します。
また、管理画面へのアクセスに必要な管理者情報も、この段階でデータベースに登録しておきます。
% rake db:migrate
% rake db:fixtures:load FIXTURES=admin_users
12. エレコマを起動する!
最後に Rails の簡易サーバを利用して、エレコマを立ち上げます。
% ruby script/server
http://<エレコマをインストールしたマシンのIPアドレス>:3000/ にアクセスすると、エレコマのトップページが確認できます!
■ 最後に
今回は史上初となる(?)エレコマの FreeBSD への導入とその手順を紹介しました。
エレコマに関する設定や細かいインストール手順をかなり端折って説明しているので、詳しい説明については下記の関連記事を参照していただければ幸いです。
■ 備考
※1 DB 作成時に発生する WARNING への対処
手順 10. の段階で DB の作成には成功しますが、下記のような WARNING が出力されてしまいます。
% rake db:create
WARNING: 'require 'rake/rdoctask'' is deprecated. Please use 'require 'rdoc/task' (in RDoc 2.4.2+)' instead.
at /usr/local/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/rdoctask.rb
WARNING: Global access to Rake DSL methods is deprecated. Please include
... Rake::DSL into classes and modules which use the Rake DSL methods.
WARNING: DSL method Spec::Rake::SpecTask#task called at /home/ec/elecoma/lib/tasks/rspec.rake:15:in `initialize'
(以下略)
どうやらこれは rake 0.9 と Rails 2 の相性が悪いことに起因するもののようです。
そういうわけで rake をダウングレードしてみます。
% rake --version
rake, version 0.9.2.2
(このバージョンと Rails の相性が悪いらしい)
% exit
# gem uninstall rake
(本当に消しても良いか、と聞かれるので Y[Enter] で続行)
# gem install rake -v=0.8.7
# su - ec
% rake db:create
ダウングレード後にDB 作成を実行すると、今度は WARNING が出力されず、無事に DB が作成できます。