やあ良い子の諸君。今日も元気にしてるかな? ギンペイです。僕は暑くて元気がありません。
ちょろっとウェブアプリを作りたくて、Ruby on Railsに手を出してみようかなと思ってやってみたのですが、これがなかなかどうして、うまくいきませんでした。aptitude install rails
するとシェル版のrailsがインストールされるというのはよくわからない……。
ともあれ、試行錯誤の結果うまく動くようになったみたいなので、まとめておきます。
前提
環境は最小構成でインストールした直後のDebian (lenny)です。
# cat /etc/debian_version 5.0.8
せっかくなので最新のものをインストールしましょう。ソースコードを各サイトから持ってきます。(後の手順でwget
します。)
- Ruby … 「最新の安定版」の”tar.gz”版
- RubyGems … 一番上の”rubygems-*.*.*.tgz”
- node.js … “node-v*.*.*.tar.gz Source Code”
node.jsは一見関係なさそうですが、内部で使ってるみたいなので、必須です。(正確にはJS実行環境が必須、です。)
インストール
入力だけ羅列すると、こんなんなりました。rootで作業します。
aptitude -y install g++ make zlib1g-dev libssl-dev libsqlite3-dev apache2-mpm-prefork apache2-prefork-dev libapr1-dev libaprutil1-dev libcurl4-openssl-dev wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p290.tar.gz wget http://rubyforge.org/frs/download.php/75309/rubygems-1.8.10.tgz wget http://nodejs.org/dist/node-v0.4.11.tar.gz # Ruby tar zxf ruby-1.9.2-p290.tar.gz cd ruby-1.9.2-p290 ./configure --prefix=/usr/local/ruby make make install cd .. ln /usr/local/ruby/bin/ruby /usr/bin/ruby ruby -v # Ruby Gems tar zxf rubygems-1.8.10.tgz cd rubygems-1.8.10 ruby setup.rb cd .. ln /usr/local/ruby/bin/gem /usr/bin/gem gem -v # Rake gem install rake ln /usr/local/ruby/bin/rake /usr/bin/rake rake -V # Rails gem install rails --include-dependencies ln /usr/local/ruby/bin/rails /usr/bin/rails rails -v # node.js tar zxf node-v0.4.11.tar.gz cd node-v0.4.11 ./configure --prefix=/usr/local/nodejs make make install cd .. ln /usr/local/nodejs/bin/node /usr/bin/node node -v # Passenger gem install passenger --include-dependencies /usr/local/ruby/bin/passenger-install-apache2-module cd /etc/apache2/ echo LoadModule passenger_module /usr/local/ruby/lib/ruby/gems/1.9.1/gems/passenger-3.0.9/ext/apache2/mod_passenger.so >> httpd.conf echo PassengerDefaultUser www-data >> httpd.conf echo PassengerRoot /usr/local/ruby/lib/ruby/gems/1.9.1/gems/passenger-3.0.9 >> httpd.conf echo PassengerRuby /usr/local/ruby/bin/ruby >> httpd.conf
インストールはこれでおしまいです。Apacheの再起動が必要なんだけど、後回しにします。
wget
でソースコードをダウンロードするURLは、バージョンに合わせて適当に調整してください。(上記は2011/09/10現在で最新のものです。)
ln
してるのはパス追加が面倒だったので。もちろんパス追加でも問題ありません。
rails
を入れた際にrake
も入るのですが、バージョンがずれてるみたいなので、別途インストールします。
動かしてみる
cd rails new hoge cd hoge rails g scaffold note body:text rake db:migrate rails s
ブラウザからhttp://192.168.1.1:3000/notesにアクセスしてみて、画面が表示されたら成功です。(IPアドレスは適宜置き換えてください。)
うーん、遅いな……。
試し終わったら、Ctrl+CでWEBrickを止めます。
Apacheで動かしてみる
mod_railsことPassengerを使って動かしましょう。その方が相当速いです。設定はRailsアプリごとに作る必要があります。(なおインストールと共通設定はさっきの一連の作業に含まれています。)
cd chown -R www-data:www-data hoge cd /etc/apache2/sites-available/ vi hoge
hogeはRailsで作成したものと同じにすると分かりやすいと思います。このファイルに以下を書き込んで、保存します。
Listen 3000 <VirtualHost *:3000> ServerName hoge.example.com DocumentRoot /root/hoge/public RailsEnv development <Directory /root/hoge/public> AllowOverride all Options -MultiViews </Directory> </VirtualHost>
有効にするには、専用のディレクトリにリンクを設置します。(なんかそういう礼儀?)
cd ../sites-enabled/ ln ../sites-available/hoge /etc/init.d/apache2 restart
Apacheを再起動(最終行)したら、もう一度ブラウザーで開いてみてください。最初の一回だけ時間がかかりますが、それ以降は十分な速度で動かせると思います。
違う場所でアプリケーションを作成している場合は、適宜読み替えてください。名前もhogeじゃなくてね。
リリース時の設定
これは開発用の設定になっています。(Railsも開発用のDBを見ています。) 実際にリリースするときは、リリースモードでRailsを動かすようにする必要があります。
リリースモードで動かすには、まずリリース用のDBを作成します。
rake db:migrate RAILS_ENV=production
それからApacheの設定を変更します。
cd /etc/apache2/sites-available/ vi hoge
さっき作成したファイルです。この中からRailsEnv developmentの行を削除してください。指定しない場合はリリースモードになります。
あとはApacheを再起動させればOK。
/etc/init.d/apache2 restart