プログラミング: 2009年1月アーカイブ

Ruby on Railsをさくらインターネットにインストールして実行するまで。
せっかくなので最新版を入れるよ。すごい勢いでつまづきまくったよ。

Ruby on Railsのインストール
参考:
さくらのレンタルサーバーに Ruby on Rails をインストールする手順
さくらのレンタルサーバーにRuby on Rails 2.0.2をインストールする方法

参考サイトどおりにやれば問題ないよ。

%ruby -version ruby 1.8.6 (2008-08-11 patchlevel 287) [i386-freebsd6]
現在のさくらのrubyのバージョンは1.8.6です。


[rubygemsのインストール]
rubygemsの最新版、1.3.1を取得し、インストールします。
インストール先はさくらなので$HOME内です。--prefix=$HOMEを忘れずに。

%mkdir $HOME/src
%cd $HOME/src
%ftp http://rubyforge.org/frs/download.php/45905/rubygems-1.3.1.tgz
%tar zxf rubygems-1.3.1.tgz
%cd rubygems-1.3.1
%ruby setup.rb --prefix=$HOME
インストール完了

[環境変数の設定]
次に環境変数の設定。

%cd
%vi .cshrc
set path = (~/pear/bin /sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin /usr/
X11R6/bin $HOME/bin $HOME/lib/ruby/gem/bin)
setenv RUBYLIB $HOME/lib
setenv GEM_HOME $HOME/lib/ruby/gem
.cshrcのset pathに $HOME/lib/ruby/gem/bin と、RUBYLIBとGEM_HOMEを追加します。
%source $HOME/.cshrc
%rehash
%gem18 --version
1.3.1
sourceで記載したパスを今すぐ通す。通したパス内の実行可能ファイルをすぐ反映させるためrehash。


Railsのインストール

%gem18 install rails
これで5分くらい待つとインストール完了。すごい簡単。
%rehash
%rails --version
Rails 2.2.2
rehashしてバージョンを調べたら、ちゃんと2.2.2が入っていた。完璧。


Railsを動かす
参考:
さくらのレンタルサーバにRuby on Railsをインストールする方法 その2


ここからが地獄の始まりでしたよ。超参考になるかもしれない。
基本、上記参考サイトの通りに進めます。

Railsのアプリケーションのディレクトリを作成。
そして、testというアプリケーションを作成。

%cd
%mkdir Rails
%cd Rails
%rails test

次にパーミッションを変更します。
logとtmpディレクトリに書き込み権限を付加。

%cd test
% chmod -R o+w log tmp
% ls -l

次に環境ファイルの設定です。
test/config/environment.rbが環境ファイル。
この設定、RUBYLIBの場所が変わってるから、
$LOAD_PATH.push("/home/XXX/lib/")としないといけません。注意。
これちゃんとしないと「Rails application failed to start properly」の
エラーが出ます。

%vi config/environment.rb
# Be sure to restart your server when you modify this file
# 以下を追加(XXXはユーザ名に置き換えてね)
$LOAD_PATH.push("/home/XXX/lib/")
$LOAD_PATH.push("/home/XXX/lib/ruby")
ENV['GEM_HOME'] ||= '/home/XXX/lib/ruby/gem'
ENV['RAILS_RELATIVE_URL_ROOT']="/test"

それから、ENV['RAILS_RELATIVE_URL_ROOT']="/test"は、
routing error が出る場合の対策。
これがないと「routing error No route matches "/test/rails/info/properties"」とか出る。調べてみると

http://groups.google.co.jp/group/rubyonrails-core/browse_thread/thread/da88f067f38e76ca?pli=1
The change in relative_url_root behavior was necessary for thread-safety. Passenger needs to be updated.
In the mean time, you can do it yourself by manually setting relative_url_root in your environment.rb.
どうも、Rails2.2になって、挙動が変わったために手動で設定が必要らしい。
ここ、かなり悩んだ。気をつけて!><


次に、public/.htaccessの設定。
しかし、.htaccessは作成されてなかった。バージョンの違い?
手動で作ります。サンプルがREADMEの中にあるので、それをコピペして、
AddHandlerとOptionsをコメントアウトします。

%vi public/.htaccess
# General Apache options
#AddHandler fastcgi-script .fcgi
#AddHandler cgi-script .cgi
#Options +FollowSymLinks +ExecCGI

# If you don't want Rails to look in certain directories,
# use the following rewrite rules so that Apache won't rewrite certain requests
#
# Example:
# RewriteCond %{REQUEST_URI} ^/notrails.*
# RewriteRule .* - [L]

# Redirect all requests not available on the filesystem to Rails
# By default the cgi dispatcher is used which is very slow
#
# For better performance replace the dispatcher with the fastcgi one
#
# Example:
# RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
RewriteEngine On

# If your Rails application is accessed via an Alias directive,
# then you MUST also set the RewriteBase in this htaccess file.
#
# Example:
# Alias /myrailsapp /path/to/myrailsapp/public
# RewriteBase /myrailsapp

RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ dispatch.cgi [QSA,L]

# In case Rails experiences terminal errors
# Instead of displaying this message you can supply a file here which will be re
ndered instead
#
# Example:
# ErrorDocument 500 /500.html

ErrorDocument 500 "<h2>Application error</h2>Rails application failed to start properly"

長いけどこんな感じ。
これもファイルがなくて悩んだので全部載せときます。


次。webからみられる場所からtest/publicに向けてシンボリックリンクを
張ります。
~/wwwの直下に「test」という名前でシンボリックリンクを作ります。

% ln -s $HOME/Rails/test/public $HOME/www/test

これで、http://XXX.sakura.ne.jp/test/にアクセスすると、
「Welcome aboard」のページが表示されます。
ここの「About your application's environment」をクリックしてみてください。

  • Application error "Rails application failed to start properly"が出る ⇒config/environment.rbの設定が間違ってる可能性があります。
     パスを再確認してください。
  • Routing error "No route matches "/test/rails/info/properties" with {:method=>:get}"が出る
    ⇒config/environment.rbに
     ENV\['RAILS_RELATIVE_URL_ROOT'\]="/test"を追加してください。
     もしくは、public/.htaccessのRewriteの設定が間違ってる可能性アリ
  • For security purposes, this information is only available to local requests.と出る
    ⇒おめでとうございます。成功しました。これで終わりです。
  • no such file to load -- sqlite3というエラーが出る
    ⇒以下に進んでください

僕はここで、no such file to load -- sqlite3というエラーが出ました。
これは、sqlite3-rubyが入ってないせいです。入れます。

%setenv RB_USER_INSTALL true
%gem18 install sqlite3-ruby
setenvでRB_USER_INSTALLをtrueにしてるのはどういうことかというと、
普通にgemでインストールしようとすると、エラーが出ます。
こんなの。
chown/chgrp: Operation not permitted
探したら、こんなのを見つけた。
http://blog.proj.jp/ituki/20090107.html
/usr/local/lib/ruby/1.8/i386-freebsd6/rbconfig.rb を見ると
> CONFIG["INSTALL"] = ENV['RB_USER_INSTALL'] ? '/usr/bin/install -c' : '/usr/bin/install -c -o root -g wheel'
とかいう記述がある
よって
setenv RB_USER_INSTALL true
とかコマンドラインで入力してから rubugemsをインストールすればいい
というわけです。

ちなみに、手動でsqlite3-ruby入れようと試すとこんな感じ。失敗します。

%wget http://rubyforge.org/frs/download.php/42056/sqlite3-ruby-1.2.4.tar.gz
%tar zxf sqlite3-ruby-1.2.4.tar.gz
%cd sqlite3-ruby-1.2.4
%ruby setup.rb config --prefix=$HOME -- --with-sqlite3-dir=$HOME
%ruby setup.rb setup
%ruby setup.rb install
しかし、ここではこんなエラーが出たので、オススメできない。
don't know how to make ruby.h. Stop

以上、奮闘しましたが、無事「For security purposes, this information is only available to local requests.」が見えるのではないでしょうか。
実は僕は、なぜかばっちりRuby versionとかが出ちゃってますが。
まあ動いているのでよしとする。次回はサンプルアプリに挑戦します。


Tracをさくらインターネットのスタンダードプランに入れたので、SVNに接続する方法も書きます。ずいぶん遅くなっちゃったけど。

■PuTTYgenを使い鍵を作成する

  1. PuTTYgenはPuTTYごった煮版が入っていればOKなので、ごった煮版をダウンロード。
    http://yebisuya.dip.jp/Software/PuTTY/

  2. puttygen.exeを起動して、生成ボタンをクリック。空白のエリア内でマウスを動かす。(乱数生成のためだね)

  3. 表示されるテキスト(ssh-rsa AAAAB3NzaC1yc2・・・・みたいなの)をコピーし、テキストファイルで保存。ファイル名をauthorized_keysというファイル名(拡張子なし)に変更。

  4. PuTTYgenのほうでは、秘密鍵の保存ボタンをクリック。パスフレーズなしで保存。
    C:\Program Files\TortoiseSVN\bin\id_rsa.ppkとして保存。

  5. authorized_keysをFTPで$HOME/.ssh/にアップロード。

  6. Telnetで接続して、必要なら適宜$HOME/.ssh/のパーミッションを変更。

■ToritoiseSVNの設定

  1. ToritoiseSVNの設定画面を開く。エクスプローラで適当なフォルダを選び右クリック→ToriseSVN→設定。

  2. 画面左のツリーからネットワークを選び、SSHクライアント欄にTortoiseSVNのインストールディレクトリ\binにあるTortoisePlink.exeのフルパスを指定。引数は 「-l アカウント名」と「-i 作成した秘密鍵のパス」を指定。

    以下のようになります。XXXはさくらインターネットのユーザID。

    "C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe" -l XXX -i "C:\Program Files\TortoiseSVN\bin\id_rsa.ppk"

■つないでみる

  1. 適当なフォルダで右クリック→TortoiseSVN→RepositoryBrowser(またはリポジトリブラウザ)

  2. URLを入力("svn+ssh" + "://さくらサーバのアドレス" + レポジトリの絶対パス)。

    $HOME/var/svn/repoにレポジトリを作った場合。XXXはさくらインターネットのユーザID

    svn+ssh://XXX.sakura.ne.jp/home/XXX/var/svn/repo

  3. リポジトリが見えて、ツリーが開ければ完了。

■もっと使いやすく
複数のSVNにつなげる場合などは以下を参照。
僕はとりあえずまだやってません。
http://sfi.hamazo.tv/e1317475.html


■Tracの静的リソースアクセスを軽くする(おまけ)
さくらのTracを早くする方法を見つけたのでやってみた。
参考:http://weekbuild.sakura.ne.jp/trac/ticket/158

% ln -s ~/local/share/trac/htdocs ~/www/trachtdocs

Trac.iniを以下のように編集
[trac]
htdocs_location = /trachtdocs/

こんな感じで、とりあえずさくらでのTrac+SVNな生活は幸せに過ぎていくと思います。

プロフィール

nyontan/nyon2
経営とかプログラミングとかフィリピンとか。基本的にふざけてるけど、たまに超まじめ。
うんこうんこー。

最近読んだ本

早起き生活