Passenger+SinatraでHello, world!

VirtualBoxにインストールしたCentOSの環境を使って、
passengerでSinatraを動かして「Hello, world!」を表示させてみる。

[参考にしたサイト]
http://qiita.com/masa2sei@github/items/76a138ab05fa561dbd4b
http://morizyun.github.io/blog/passenger-install-apache-ruby-rails/

RubySinatraのインストール

前回と同様に、RubySinatraをインストールしておく。

$ sudo yum -y install ruby rubygems
$ sudo gem install sinatra

Apacheのインストール

Apacheをインストールし、OS起動後に自動で起動するようにする。

$ sudo yum -y install httpd
$ sudo chkconfig httpd on

Passengerのインストール

まずは、Passengerに必要なものをインストールする。

$ sudo yum -y install gcc gcc-c++ curl-devel openssl-devel zlib-devel httpd-devel ruby-devel

Passengerをインストールする。

$ sudo gem install passenger
$ sudo passenger-install-apache2-module

インストールが終わると、最後に下記のような文が表示されるているので、
(環境によって下記の内容は異なります)

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-4.0.27/buildout/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-4.0.27
PassengerDefaultRuby /usr/bin/ruby

どこかにメモっておいて、passenger.confを作成し貼り付ける。

$ sudo vi /etc/httpd/conf.d/passenger.conf
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-4.0.27/buildout/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-4.0.27
PassengerDefaultRuby /usr/bin/ruby
【補足】
メモするのを忘れた場合は、
$ sudo passenger-install-apache2-module --snippet
で確認できます。

Sinatraのプログラムの作成

今回は、/var/www/sinatraに作成してみる。

ディレクトリを作り、所有者をログインユーザーに変更する。

$ sudo mkdir /var/www/sinatra
$ sudo chown ユーザー名 /var/www/sinatra

必要なディレクトリやファイルを作成する。

$ cd /var/wwww/sinatra
$ mkdir public
$ mkdir tmp
$ vi config.ru
require './hello.rb'
run Sinatra::Application
$ vi hello.rb
require 'sinatra'
get '/' do
  'Hello, world!'
end

VirtualHostの設定

VirtualHostを有効にする。

$ sudo vi /etc/http/conf/httpd.conf
NameVirtualHost: *:80	←コメントを解除する

passenger.confにVirtualHostを設定を追加する。

$ sudo vi /etc/httpd/conf.d/passenger.conf
<VirtualHost *:80>
ServerName www.yourhost.com
DocumentRoot "/var/www/sinatra/public"
</VirtualHost>

最後

Apacheを起動する。

$ sudo service httpd start

下記のURLにアクセスするとHello, world!が表示される。
http://サーバーのアドレス/