fc2ブログ

【Rackの導入】 Rack単体で使用

Rackをインストール

# gem install rack

Rack用のグループ、ユーザ作成

# groupadd -g 1006 rack
# useradd -g rack -u 1006 -d /usr/local/rack -s /bin/bash -M rack

pidファイル用のディレクトリ作成

# cd /var/run
# mkdir rack
# chown rack:rack rack

アプリとかを置くルートディレクトリ作成

# cd /usr/local/
# mkdir rack
# chown rack:rack rack

アプリを置くディレクトリ作成

# cd rack
# mkdir webapps
# chown rack:rack webapps

【「Hello World.」と表示するだけのアプリ作成】
# su rack
$ cd webapps
$ mkdir app1
$ cd app1
$ vi app1.rb
#!/usr/bin/ruby

require 'rubygems'
require 'rack'

class App1
def call(env)
[200, {'Content-Type' => 'text/html'}, ['Hello, World.']]
end
end

【config.ru(Rackアプリ起動の起点みたいな設定ファイル)】
# cd /usr/local/rack/webapps
# vi config.ru
map "/app1" do
require 'app1/app1'
run App1.new
end

【rackupでアプリを起動するスクリプト】
# vi /etc/init.d/rack
#!/bin/bash
#
# chkconfig: 345 85 15
# description: launch rackup app
# pidfile: /var/run/rack/rack.pid

PROG=rackup
APP_DIR=/usr/local/rack
USER=rack
GROUP=rack
PID_FILE=/var/run/rack/rack.pid
WEBAPPSDIR="$APP_DIR/webapps"
CONFIG_RU="$WEBAPPSDIR/config.ru"

RETVAL=0

# Gracefully exit if the rackup is missing.
which rackup >/dev/null || exit 1

# Go no further if config directory is missing.
[ -d "$APP_DIR" ] || exit 1

start() {
echo -n $"Starting $PROG: "
ARGS="$CONFIG_RU -D -I $WEBAPPSDIR -P $PID_FILE"
su -c "rackup $ARGS" $USER
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch /var/lock/subsys/rack
return $RETVAL
}

stop() {
echo -n $"Stopping $PROG: "
if [ -f $PID_FILE ];
then
# send interupt.
kill -INT `cat $PID_FILE`
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f /var/lock/subsys/rack $PID_FILE
return $RETVAL
else
echo "pid file for $APP_DIR was not found : [$PID_FILE]"
exit 1
fi
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Usage: rack {start|stop|restart}"
exit 1
;;
esac

exit $RETVAL

ちなみに、rackupのオプションは

# rackup --help
で確認。

rackupしてアプリ起動

# /etc/init.d/rack start

デフォルトでport 9292でプロセスが起動する。

http://IPアドレス:9292/app1

にアクセスすると「Hello World.」が表示される。

停止は
# /etc/init.d/rack stop

この記事のトラックバックURL

http://ysmt.blog21.fc2.com/tb.php/263-e2ced6d3

コメント

コメントする

管理者にだけ表示を許可する

Template Designed by DW99