web: 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.cshrcのset pathに $HOME/lib/ruby/gem/bin と、RUBYLIBとGEM_HOMEを追加します。
%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
%source $HOME/.cshrcsourceで記載したパスを今すぐ通す。通したパス内の実行可能ファイルをすぐ反映させるためrehash。
%rehash
%gem18 --version
1.3.1
Railsのインストール
%gem18 install railsこれで5分くらい待つとインストール完了。すごい簡単。
%rehashrehashしてバージョンを調べたら、ちゃんと2.2.2が入っていた。完璧。
%rails --version
Rails 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どうも、Rails2.2になって、挙動が変わったために手動で設定が必要らしい。
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.
ここ、かなり悩んだ。気をつけて!><
次に、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 /myrailsappRewriteRule ^$ 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.htmlErrorDocument 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 truesetenvでRB_USER_INSTALLをtrueにしてるのはどういうことかというと、
%gem18 install sqlite3-ruby
普通に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を使い鍵を作成する
- PuTTYgenはPuTTYごった煮版が入っていればOKなので、ごった煮版をダウンロード。
http://yebisuya.dip.jp/Software/PuTTY/ - puttygen.exeを起動して、生成ボタンをクリック。空白のエリア内でマウスを動かす。(乱数生成のためだね)
- 表示されるテキスト(ssh-rsa AAAAB3NzaC1yc2・・・・みたいなの)をコピーし、テキストファイルで保存。ファイル名をauthorized_keysというファイル名(拡張子なし)に変更。
- PuTTYgenのほうでは、秘密鍵の保存ボタンをクリック。パスフレーズなしで保存。
C:\Program Files\TortoiseSVN\bin\id_rsa.ppkとして保存。 - authorized_keysをFTPで$HOME/.ssh/にアップロード。
- Telnetで接続して、必要なら適宜$HOME/.ssh/のパーミッションを変更。
■ToritoiseSVNの設定
- ToritoiseSVNの設定画面を開く。エクスプローラで適当なフォルダを選び右クリック→ToriseSVN→設定。
- 画面左のツリーからネットワークを選び、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"
■つないでみる
- 適当なフォルダで右クリック→TortoiseSVN→RepositoryBrowser(またはリポジトリブラウザ)
- URLを入力("svn+ssh" + "://さくらサーバのアドレス" + レポジトリの絶対パス)。
$HOME/var/svn/repoにレポジトリを作った場合。XXXはさくらインターネットのユーザID
svn+ssh://XXX.sakura.ne.jp/home/XXX/var/svn/repo
- リポジトリが見えて、ツリーが開ければ完了。
■もっと使いやすく
複数の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な生活は幸せに過ぎていくと思います。