さくらVPS+nginx+rvm+passengerという環境でRackを使ってHello worldを表示するアプリケーションを作ってみます。
nginx、rvm、passengerのインストールはコチラを参考にしてください。
rackのインストール
$ gem install rack
プロジェクトディレクトリの構成
PassengerからRackアプリケーションを動かすときはプロジェクトディレクトリを作ります。プロジェクトディレクトリ内に決められた名前でファイル、ディレクトリを作る必要があります。
プロジェクトディレクトリは公開ディレクトリに置きます。
/home/www/nginx/html
が公開ディレクトリとします。
次のようにファイル、ディレクトリを作成します。
$ cd ~
$ cd nginx/html
$ pwd
/home/www/nginx/html
$ mkdir rack
$ touch rack/config.ru
$ mkdir rack/public
$ mkdir rack/tmp
publicディレクトリは画像やcss等の静的なファイルを入れます。tmpディレクトリはRackの再起動に必要なrestart.txt等を置きます。
nginx.confの設定
…
http {
…
passenger_root /home/www/.rvm/gems/ruby-head/gems/passenger-3.0.11;
passenger_ruby /home/www/.rvm/wrappers/ruby-head/ruby;
…
server {
location /rack {
passenger_enabled on;
root html/rack/public;
}
}
...
}
...
http://example.com/rack
というurlで動かします。プロジェクトディレクトリの中の
public
をrootに指定して下さい。
hello worldコードを用意
http://example.com/rack
にアクセスされると
config.ru
が実行されます。本来は設定などを行うファイルですが、今回はHello worldを表示するだけの簡単なプログラムなのでここにコードを書いてしまいます。
$ cd ~/nginx/html
$ nano config.ru
$ cat config.ru
run proc {|env|
require 'sinatra'
[200, {'Content-Type'=>'text/plain'}, ['Hello world!']]
}
動作確認
http://example.com/rack
にアクセスして
Hello world!
と表示されたら成功です。