Debian etchでsqlite3をデータベースとして使えず、原因はruby1.8.5のせいじゃなかろかとおもい、
ruby,gems,sqlite3はソースからそれ以外のrailsとかはgemからインストールしてみようかなと。
aptのruby,rails,rubygemsは全部消してからやってみた。
mysqlでいいやって場合は環境2のほうが楽です。
ruby on railsのサイト
てきとうなフォルダで
$ wget http://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6.tar.gz $ tar xfz ruby-1.8.6.tar.gz $ cd ruby-1.8.6 $ ./configure --prefix=/usr/local/ruby $ make $ make test $ sudo make intall
.zshrcとかに/usr/local/ruby/binのパスを通しておく。
$ sudo ln -s /usr/local/ruby/bin/ruby /usr/local/bin/ruby
PATH=/usr/local/bin:$PATH
rugygems1.1.1のばあい
$ sudo mkdir /usr/local/rubygems $ export GEM_HOME=/usr/local/rubygems/ $ wget http://rubyforge.org/frs/download.php/38646/rubygems-1.1.1.tgz $ tar xzf rubygems-1.1.1.tgz $ cd rugygems-1.1.1 $ sudo ruby setup.rb config --prefix=/usr/local $ sudo ruby setup.rb setup $ sudo ruby setup.rb install
.zshrcかなんかに下のパスを追加
export RUBYLIB=/opt/local/lib/site_ruby/1.8/ export GEM_HOME=/opt/rubygems/
pathも
PATH=/usr/local/ruby/bin:/usr/local/bin:$PATH
$ wget http://www.sqlite.org/sqlite3-3.5.9.bin.gz $ gunzip sqlite3-3.5.9.bin.gz $ sudo mv sqlite3-3.5.9.bin /usr/local/bin/sqlite3
$ sudo gem install rails
ruby,rubygemsはdebianのパッケージ管理でインストールしたのをそのまま使ってみる。こっちのほうがとっても簡単。
でもsqlite3がなんでかつかえない。くやしくなんかないです。
$ sudo aptitude install ruby $ sudo aptitude install rubygems
これで必要なものもいろいろ一緒にインストールしてくれる。気がする。
そのままgemを使うと下のエラーがでて使えないんで
uninitialized constant Gem::GemRunner (NameError)
/usr/bin/gemを編集,【require 'rubygems/gem_runner】を追加する
$ sudo emacs /usr/bin/gem require 'rubygems' require 'rubygems/gem_runner' #追加 Gem.manage_gems
あとはgemからいろいろとrails入れる
$ sudo gem install rails $ sudo gem install fastthread
Passenger
gemからこれをインストールするだけでapacheのrails環境ができちゃうやつ。
railsのまよっちゃう環境構築がすごく楽に。でもメモリいっぱいつかってくれちゃってやがります。
いつのまにかPassenger2になってた。
ついでにRailsアプリをサブディレクトリで配置してみる書き方。
$ sudo gem install passenger $ sudo passenger-install-apache2-module This installer will guide you through the entire installation process. It shouldn't take more than 3 minutes in total. Here's what you can expect from the installation process: 1. The Apache 2 module will be installed for you. 2. You'll learn how to configure Apache. 3. You'll learn how to deploy a Ruby on Rails application.
で1を選択。たぶん
で/etc/apache2/sites-available/にpassenger.loadかなんか作って
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.0.1/ext/apache2/mod_passenger.so PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.0.1 PassengerRuby /usr/bin/ruby1.8 RailsEnv development
passenger2.xxになってRailsSpawnServerがなくなってPassengerRootができて、
RailsRubyがPassengerRubyになったみたい。
passenger.confを作って ドキュメントルートを設定してRailsBaseURIでサブディレクトリを指定する。あとはてきとう
<VirtualHost *:80> DocumentRoot /var/www/rails_app ServerName rails.example.jp RailsBaseURI /todolist <Directory /> Options FollowSymLinks AllowOverride All Order deny,allow </Directory> </VirtualHost>
そんでrailsアプリケーションフォルダのシンボリックリンク作成。
sudo -u www-data ln -s /home/myuser/work/todolist/public /var/www/rails_app/todolist
作ったらpassengerのシンボリックリンクを追加。
$ a2enmod passenger
Passenger用のるびー。インストールするとかってに/opt/入ってる。
メモリ消費とかいろいろ改善されるらしい。
passengerの使うRubyをこれに変更するだけでよいらすう。
確かに速くなります。でもなんかうまく動いてくれない。
$ tar xzvf ruby-enterprise-X.X.X.tar.gz $ cd ruby-enterprise-X.X.X $ sudo ./ruby-enterprise-X.X.X/installer
passenger.loadのPassengerRubyを変更
PassengerRuby /opt/ruby-enterprise-1.8.6-20080621/bin/ruby #インストールされたruby enterprise editionのパス
すんなりいかなかったのでめも。
(参考サイト がんちゃんのブログ
参考にしたサイトの通りやっていたら途中で
source_index.rb:450:in `inflate': failed to allocate memory (NoMemoryError)
みたいのがでてきてとまったので困りました。けどインストールするrubygemsを1.1.1から1.3.1にしたらすんなり。
もしかしたらrubyのバージョンが1.8.5じゃなくて1.8.6になってたのが原因なんでしょうか。よくわかりません。
あとはいけました。
ただ、rubygemsをインストールするときにまず先にRB_USER_INSTALL=trueにしておかないとchown/chgrp: Operation not permittedとかいうのがでて正しくインストールできないときがあります。.zshrcなどに書いておくとよろし。
zshの場合
$ export RB_USER_INSTALL=true
tcshの場合
% setenv RB_USER_INSTALL true
RubyGemsのページで最新版を確認して、
$ cd ~/src $ wget http://rubyforge.org/frs/download.php/45905/rubygems-1.3.1.tgz $ tar jxf rubygems-1.3.1.tgz $ cd rubygems-1.3.1 $ ruby setup.rb --prefix=$HOME/local
さくらインターネットにsqlite 3.6.1をインストール
$ cd ~/src $ wget http://www.sqlite.org/sqlite-3.6.1.tar.gz $ tar xfz sqlite-3.6.1.tar.gz $ cd sqlite-3.6.1 $ ./configure --prefix=$HOME/local --disable-dynamic $ make $ make install