やあ良い子の諸君。今日も元気にしてるかな? ギンペイです。僕は暑くて元気がありません。
ちょろっとウェブアプリを作りたくて、Ruby on Railsに手を出してみようかなと思ってやってみたのですが、これがなかなかどうして、うまくいきませんでした。aptitude install rails
するとシェル版のrailsがインストールされるというのはよくわからない……。
ともあれ、試行錯誤の結果うまく動くようになったみたいなので、まとめておきます。
前提
環境は最小構成でインストールした直後のDebian (lenny)です。
1 2 | # 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で作業します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | 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
も入るのですが、バージョンがずれてるみたいなので、別途インストールします。
動かしてみる
1 2 3 4 5 6 | 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アプリごとに作る必要があります。(なおインストールと共通設定はさっきの一連の作業に含まれています。)
1 2 3 4 5 | cd chown -R www-data:www-data hoge cd /etc/apache2/sites-available/ vi hoge |
hogeはRailsで作成したものと同じにすると分かりやすいと思います。このファイルに以下を書き込んで、保存します。
1 2 3 4 5 6 7 8 9 10 | Listen 3000 <VirtualHost *:3000> ServerName hoge.example.com DocumentRoot /root/hoge/public RailsEnv development <Directory /root/hoge/public> AllowOverride all Options -MultiViews </Directory> </VirtualHost> |
有効にするには、専用のディレクトリにリンクを設置します。(なんかそういう礼儀?)
1 2 3 4 | cd .. /sites-enabled/ ln .. /sites-available/hoge /etc/init .d /apache2 restart |
Apacheを再起動(最終行)したら、もう一度ブラウザーで開いてみてください。最初の一回だけ時間がかかりますが、それ以降は十分な速度で動かせると思います。
違う場所でアプリケーションを作成している場合は、適宜読み替えてください。名前もhogeじゃなくてね。
リリース時の設定
これは開発用の設定になっています。(Railsも開発用のDBを見ています。) 実際にリリースするときは、リリースモードでRailsを動かすようにする必要があります。
リリースモードで動かすには、まずリリース用のDBを作成します。
1 | rake db:migrate RAILS_ENV=production |
それからApacheの設定を変更します。
1 2 | cd /etc/apache2/sites-available/ vi hoge |
さっき作成したファイルです。この中からRailsEnv developmentの行を削除してください。指定しない場合はリリースモードになります。
あとはApacheを再起動させればOK。
1 | /etc/init .d /apache2 restart |