け〜くんこと K.Ktouth のだらだらした日常と突発的に作るプログラムや読み物とかの雑多サイト
Rails や Merb などの著名ウェブアプリフレームワークは「サーバとして動作されるのを想定」して設計されています。一つのプロセスを使い回してレスポンス速度を稼いでいるわけですが、さくらインターネット株式会社の「さくらのレンタルサーバ」では規約上、常時起動を前提とするプログラムは動かすことが出来ません。
以下略。
つまり昨日の続きです(ぉ
(以下、詳細)
まぁ、この辺に関しては蛇足気味ですが。
例えば Ramaze アプリケーションそのものは「(自分のホームディレクトリ)/app/XXXX」のような、外部からアクセスできないところに配置します。
その後アプリ内の公開ディレクトリ、デフォルトでは「/public」をシンボリックリンクで /www ないし、その直下に配置します。
さくらのレンタルサーバはサブドメインを二つまで無料で追加できますから、コントロールパネルで追加したドメインのルートディレクトリをシンボリックリンクで配置したディレクトリにすることで、楽にアクセスすることが出来ます。
公開ディレクトリの直下に作成されているはずの .htaccess の設定です。無ければ作成して下さい。
最低限必要な記述は以下の通り。
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.cgi/$1 [QSA,L]
RewriteBase のアドレスは外部からアクセスする際のアドレスの基準です。4の用に追加ドメインを使用した場合は / でアクセス可能です。
RewriteRule の cgi の名前はアプリケーションを起動するためのスクリプト名です。
以降の部分は、細かいところは各々の基準に合わせて読み替えて下さい。
まず、いきなり ruby を起動するのではなく、シェルスクリプトを経由することをお勧めします。
記述は index.cgi の先頭部分です。
#!/bin/sh
HOME=(自分のホームディレクトリ)
VER=1.8
ARCH=i386-freebsd7
XLIB=$HOME/lib/ruby
export RUBYLIB=$XLIB/$VER:$XLIB/$VER/$ARCH:$XLIB
export LD_LIBRARY_PATH=$HOME/lib
export GEM_HOME=$XLIB/gem18exec ruby -S -Ku -x $0 "$@"
#!/usr/local/bin/ruby
# coding: utf-8
$KCODE = 'u'
スクリプトの先頭部分。
シェルスクリプトで RUBYLIB、GEM_HOME、LD_LIBRARY_PATH の三つを宣言した後、ruby コード部分を起動しています。
実際の所、LD_LIBRARY_PATH 以外の二つはruby起動直後でも $: と ENV['GEM_HOME'] を使用することで指定できますので、ruby以外の動的ライブラリを使わなければ、こんな面倒なことはする必要はありません。
同じく記述は index.cgi の中です。
必要なら。
STDERR.reopen('log/error_out.log', 'a')
class <<Dir
def tmpdir; "#{ENV['HOME']}/tmp" end
end
標準エラー出力とテンポラリディレクトリの位置を適当な場所に変更。Dir.tmpdir の方は Ramaze のキャッシュ機構の方で参照しているので、セッションデータなどが溜まっても良い場所を設定して下さい。
上記二つを設定するのは require 'ramaze' の記述の前になります。
Ramaze アプリケーションのルートディレクトリに、webrickを使って起動するための start.rb というファイルがあると思います。
そのソースの最後部分にある Ramaze.start 文がアプリケーションを実際に起動してしまうため、必要な処理をその前に書く必要があります。
が、まずは最後のその文を消すことから始めます。
その文にはオプションとして webrick での起動を前提としたパラメータが指定されているからです。この文を消して、新たに exec_webrick.rb とでも名付けたテスト起動用のソースを記述することをお勧めします。
#! ruby -Ku
# coding: utf-8
require 'rubygems'
require 'ramaze'Ramaze.options.adapter.handler = :webrick
Ramaze.options.adapter.port = 7000$ramaze_0 = __DIR__("start.rb")
alias $0 $ramaze_0require $0
Ramaze.start :mode => :dev
まず、最初の Ramaze.options.adapter の2行で、オプション指定を行っています。
次の2行で本来の想定された起動スクリプトである start.rb を $0 に設定しています。単純な代入ではなく alias を使っているのは、$0 に長さ制限があるからです。(おそらくはコマンドライン由来の制限)
最後の2行で起動スクリプトを読み込み、開発モードを明示して起動しています。デフォルトでも開発モードとなりますが、念のためです。
まだまだ続く(ぉ
OVA『バカとテストと召喚獣 〜祭〜』上巻 [Blu-ray]
(メディアファクトリー)
新品 ¥ 4,409
中古 ¥ 3,680
OVA『バカとテストと召喚獣 〜祭〜』下巻 [Blu-ray]
(メディアファクトリー)
新品 ¥ 4,438
中古 ¥ 2,980
生徒会役員共DJCD「アニメ生徒会役員共が全部わかるラジオ、略して全ラ!...
(キングレコード)
新品 ¥ 2,238
中古 ¥ 1,850
WORKING!! 9 初回限定特装版 (SEコミックスプレミアム)
(高津 カリノ)
新品 ¥ 2,896
中古 ¥ 2,835
「声優グランプリ」公認!声優界<雀王>決定戦! <J-1グランプリ> V...
(オムニバス)
新品 ¥ 3,159
中古 ¥ 3,099
デッドライジング 2【CEROレーティング「Z」】
(カプコン)
新品 ¥ 2,740
中古 ¥ 1,014
スプリンターセル コンヴィクション
(ユービーアイ ソフト)
新品 ¥ 2,979
中古 ¥ 1,397
Xbox 360 250GB
(マイクロソフト)
新品 ¥ 34,980
中古 ¥ 25,400
学園黙示録 HIGHSCHOOL OF THE DEAD 7 オリジナル...
(佐藤 大輔)
新品 ¥ 9,800
中古 ¥ 4,797
学園黙示録 HIGHSCHOOL OF THE DEAD SECRET ...
(佐藤 大輔)
中古 ¥ 2,500
ソードアート・オンライン〈5〉ファントム・バレット (電撃文庫)
(川原 礫)
中古 ¥ 692
RPG W(・∀・)RLD6 ―ろーぷれ・わーるど― (富士見ファンタ...
(吉村 夜)
新品 ¥ 651
中古 ¥ 1
魔法少女リリカルなのはViVid (3)限定版 (角川コミックス・エース...
(藤真 拓哉)
新品 ¥ 1,680
中古 ¥ 1,338
魔法戦記リリカルなのはForce (3)限定版 (角川コミックス・エース...
(緋賀 ゆかり)
新品 ¥ 1,680
中古 ¥ 418
ダンジョンズ&ドラゴンズ第4版スターター・セット
(ジェームズ ワイアット)
新品 ¥ 4,980
中古 ¥ 4,311
アリアンロッド・サガ・リプレイ(5) 激闘のピースメイカー (富士見ド...
(菊池 たけし/F.E.A.R.)
新品 ¥ 693
中古 ¥ 190
アリアンロッド・サガ・コンチェルト 1 (電撃コミックス)
(佐々木 あかね)
新品 ¥ 599
中古 ¥ 90
堀さんと宮村くん(7)(ガンガンコミックスONLINE)
(HERO)
新品 ¥ 1,000
中古 ¥ 747
浅尾さんと倉田くん(3)(ガンガンコミックスONLINE)
(HERO)
新品 ¥ 690
中古 ¥ 370
7と嘘吐きオンライン―HERO個人作品集―(ガンガンコミックスONLIN...
(HERO)
新品 ¥ 710
中古 ¥ 158
ONE PIECE 65 (ジャンプコミックス)
(尾田 栄一郎)
NARUTO―ナルト― 59 (ジャンプコミックス)
(岸本 斉史)
ワンピース 海賊無双(通常版)(初回特典:オリジナルカスタムテーマ9種DLコード、ソーシャルゲーム専用レアフィギュア用コード同梱)
(バンダイナムコゲームス)
ドラゴンズドグマ(数量限定特典『バイオハザード6』体験版用DLコード同梱)
(カプコン)