さくらインターネットはご存知だろうか?
メールサーバやSSHログインして結構自由にできちゃうレンタルサーバなんかを
かなり安価な値段で使えるインフラ屋さんである。
昔はさくらのフレッツ接続って固定IPが標準でついてくる超激安ISPもやっていたのだが、
大分前から新規募集を停止してしまっている。
…何時の日か復活して欲しいものである。
話がそれた。で、このさくらインターネット、結構RubyonRailsをデプロイする先としては有名で、
色んなところで取り上げられている。もちろんここでも取り上げる。
特にローカル環境で開発したアプリケーションをさくらにアップして動かせるようにするということを目的に行う。
そのためただ環境を構築するだけでなく、ちゃんと開発環境とあわせるようにする。
さくらインターネットでのRubyonRailsのデプロイ方法をメモ。まずは開発環境とのバージョン合わせから。
実際のデプロイ作業に関しては次回。
まず、RailsやRubyが初期状態ではさくらインターネット側の更新に影響されてしまうので、
ローカルでバージョンを固定して使用できるようにする。
開発していた環境と同じRubyとRailsにする。
この場合は
Ruby=1.8.6
Rails=2.2.2
とする。
このあたりは各自の事情とか状況とか欲望とかに合わせて設定してくだちい。
ちょっと場所が場所なのでファイルの場所に注意する。
cd src/
tar zxvf ruby-1.8.6-p383.tar.gz
cd ruby-1.8.6-p383
./configure --prefix=$HOME/local
make
make install
setenvと書かれているところに
setenv GEM_HOME $HOME/local/lib/ruby/gem
を追加する。一行目がRubyのパスで、二行目がこれから入れるRubyGemsのパスとなる。
setenv EDITOR vi
setenv PAGER more
setenv BLOCKSIZE K
setenv PKG_DBDIR ~/db/pkg
setenv RUBYLIB $HOME/local/lib/ruby/site_ruby/1.8:$HOME/local/lib/ruby
setenv GEM_HOME $HOME/local/lib/ruby/gem
で、次はGemsのインストール。
cd $HOME/src/
tar zxvf rubygems-1.3.5.tgz
cd rubygems-1.3.5
ruby setup.rb
そして仕上げのRailsインストール。
バージョンを指定してインストールすることを忘れない。
gem install rails -v2.2.2 --include-dependencies
ruby 1.8.6 (2009-08-04 patchlevel 383) [i386-freebsd7.1]
%rails --version
Rails 2.2.2
うまくいったようだ。ではさっそくデプロイ前にテストしてみる。
/home/xxxxxxx/local/lib/ruby/gem/gems/rails-2.2.2/bin/../lib/rails_generator/options.rb:32:in `default_options': undefined method `write_inheritable_attribute' for Rails::Generator::Base:Class (NoMethodError)
from /home/xxxxxxx/local/lib/ruby/gem/gems/rails-2.2.2/bin/../lib/rails_generator/base.rb:90
from /home/xxxxxxx/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
from /home/xxxxxxx/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
from /home/xxxxxxx/local/lib/ruby/gem/gems/rails-2.2.2/bin/../lib/rails_generator.rb:34
from /home/xxxxxxx/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
from /home/xxxxxxx/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
from /home/xxxxxxx/local/lib/ruby/gem/gems/rails-2.2.2/bin/rails:13
from /home/xxxxxxx/local/lib/ruby/gem/bin/rails:19:in `load'
from /home/xxxxxxx/local/lib/ruby/gem/bin/rails:19
…うまくいかないのが醍醐味だよねー
いつもの如くググりんぐ。
require 'activesupport'
を試してみよとのこと。
require 'rubygems'
=> true
require 'activesupport'
LoadError: no such file to load -- iconv
どうやら参考サイトと同様の現象のよう。安心した。
で、対処作。
先ほどRubyをインストールするときに展開したフォルダへ移動する。
ruby extconf.rb --prefix=$HOME --with-iconv-dir=/usr/local
make
make install
/usr/bin/install -c -m 0755 iconv.so /home/xxxxxxx/local/lib/ruby/site_ruby/1.8/i386-freebsd7.1
と表示されれば成功。では改めて
rails test
create
create app/controllers
create app/helpers
create app/models
create app/views/layouts
create config/environments
create config/initializers
create config/locales
create db
~省略~
create public/javascripts/dragdrop.js
create public/javascripts/controls.js
create public/javascripts/application.js
create doc/README_FOR_APP
create log/server.log
create log/production.log
create log/development.log
create log/test.log
成功した。
そして起動確認。
普通に
でいつものようにhttp://サーバー名:3000でおなじみのウェルカム画面が表示されるはず。
デーモン化。
停止させたい場合は通常のサーバと同じように
でPIDを調査し
kill -KILL PID
で停止させる。-KILLオプションをつけないと停止しないので注意。
他サイトでは上記手段ではなくさくらインターネットでしかしないような/htaccessの変更や
シンボリックリンクを張るという手順を見かけるが、ありゃ一体なんなんだろう…。
とりあえず今回の最低限の環境構築は終了。
次回は実際のアプリケーションをデプロイします。
参考サイト
http://tomonori855.sakura.ne.jp/recipe/2006/05/ruby_on_rails.html
http://www.fishowl.com/web/cat21129514/index.html
http://blog.proj.jp/ituki/20090107.html
http://t100life.blog121.fc2.com/blog-entry-148.html