【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
【config.ru(Rackアプリ起動の起点みたいな設定ファイル)】
# cd /usr/local/rack/webapps
# vi config.ru
【rackupでアプリを起動するスクリプト】
# vi /etc/init.d/rack
ちなみに、rackupのオプションは
↓
# rackup --help
で確認。
rackupしてアプリ起動
↓
# /etc/init.d/rack start
デフォルトでport 9292でプロセスが起動する。
http://IPアドレス:9292/app1
にアクセスすると「Hello World.」が表示される。
停止は
# /etc/init.d/rack stop
↓
# 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