なお、以下のサイトを参考にさせていただきました。ほぼそのままです。
さくらのレンタルサーバでSinatraを動かす
Rubyはデフォルトで用意されているものをそのまま使います。rvmを入れればバージョンを切り替えれますが、そのまま使った方が早いです。
さくらのレンタルサーバでは、CGIとして動作させることになりますが、素のCGIだけでは大変なので、色々ライブラリをインストールすることになります。
しかし、さくらの共有サーバでは、権限などでライブラリがインストールできないことがあります。
そのためにgemフォルダを作ってからインストールした方が何かとスムーズに事が進みます。
$cd ~ $mkdir lib $mkdir lib/ruby $mkdir lib/ruby/gem
.bashrcに以下を追加します。
export GEM_HOME=$HOME/lib/ruby/gem
=の部分はスペースを空けるとエラーになるようです。なので空けません。
ここではbashを使っていますが、chsの場合は.cshrcに以下を追加します。
setenv GEM_HOME $HOME/lib/ruby/gem
これでさきほど作成したフォルダ内にgemがインストールされるようになります。
追加したらもう一度.bashrcを読み込ませて、gemをインストールします。
$source .bashrc $gem install sinatra
次にsinatraを動かしてみます。まずwwwフォルダに移動して、適当な名前のディレクトリを作り、またそのディレクトリへ移動します。移動できたら、viでindex.cgiという名前のファイルを新規作成します。これは必ずindex.cgiという名前にしておいてください。
$cd ~/www $mkdir sinatra $cd sinatra $vi index.cgi
index.cgiの内容は以下のとおりです。
[ruby]
#!/usr/local/bin/ruby
load 'start.rb'
set :run, false
Rack::Handler::CGI.run Sinatra::Application
[/ruby]
index.cgiを保存したら、chmodでアクセス権限を変更してCGIを実行できるようにします。
$chmod +x index.cgi
次にさきほどindex.cgiでロードしていたstart.rbを作成します。こちらはindex.cgiで読み込んでいる部分と同じにすればどんな名前でもいいです。
$vi start.rb
[ruby]
#!/usr/local/bin/ruby
#****はアカウント名
$LOAD_PATH.push("/home/****/lib")
$LOAD_PATH.push("/home/****/lib/ruby")
ENV['GEM_HOME'] ||= '/home/****/lib/ruby/gem'
require 'rubygems'
require 'sinatra'
get '/?' do
'Hello!'
end
get '/test/?' do
'test'
end
[/ruby]
この状態で「http://さくらのドメイン/sinatra/index.cgi 」にアクセスすると、Hello!という文字が見えるはずです。
これは'/'へアクセスしたという事です。しかし、このままだと/sinatra/testへアクセスするとエラーになります。
/sinatra/test/へアクセスするには/sinatra/index.cgi/testへアクセスしまいといけないのですが、それだと非常にかっこわるいので、.htaccessを使ってリダイレクトします。index.cgiと同じディレクトリ(ここではsinatra)に.htaccessを作り、以下を加えます。
RewriteEngine On RewriteBase /sinatra/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*) index.cgi/$1 [L]
これで/sinatra/test/へアクセスすることができるようになります。
0 件のコメント:
コメントを投稿