«Vine Linux 2.6r4 に VineSeed .. メイン Vine Linux 2.6r4 に WebObjects..»

日々是横着

全文検索:% grep '' *.td2

アンテナでの更新チェックには、antenna.lirs か、index.rdf をご利用ください。


[tdiary] xrea で tDiary を正常に動かす方法(まとめ)

Last updated: 2009-11-24T04:30:23

xrea で CGI が Script Error になるのは Last-Modified ヘッダのせい

tDiary に限らず、xrea では Last-Modified ヘッダを出力する CGI は全て、かなりの頻度で「Script Error」が出てしまうようです。

例えば、以下のような非常に単純なスクリプトでもエラーします。

#!/usr/local/bin/ruby

print <<EOF
Content-type:text/html
Last-Modified: Mon, 01 Dec 2003 00:00:00 GMT

<html>
<body>
test
</body>
</html>
EOF

ruby のところを perl に変更しても同様です。

つまりこれは、tDiary 固有の問題でもなければ、ruby 固有の問題でもなく、 xrea のサーバ側(apache?)の「問題」というか「仕様」というか、、、なわけです。

実はこの現象、お金を払ってない、つまり広告が自動挿入されるユーザでは 起きず、お金を払って広告が挿入されないようになっているユーザだけに 起きる現象のようです。

回避策その1: Last-Modified ヘッダの出力を諦める

Last-Modified ヘッダさえ出力しなければ正しく動くようなので、 最も簡単な対処方法は Last-Modified ヘッダの出力を諦めて、 Last-Modifiled の出力をしている箇所をコメントアウトすることです。

tDiary で言えば、index.rb に

head['Last-Modified'] = CGI::rfc1123_date( tdiary.last_modified )

という行が 1 行ありますので、これの頭に「#」を付けてコメントアウト します。

#head['Last-Modified'] = CGI::rfc1123_date( tdiary.last_modified )

但し、Last-Modified ヘッダが出力されないと、アンテナや更新チェッカに よる更新のチェックに支障をきたします。そういう場合は、

などを動くように設定し、これらによって出力される index.rdf や antenna.lirs などのファイルを更新チェックの対象にしてもらう、という 手があります。

回避策その2: NPH CGI スクリプトを使う

tDiary では上記のようなプラグインを利用すれば簡単に 更新チェックができますが、自分で CGI を組む場合や どこかから拾ってきた CGI を利用する場合はそう簡単に代替手段が 利用できない場合もあり、やはり

Last-Modified ヘッダを出力しつつ正常にスクリプトを動かしたい

という場合もあるでしょう。

そもそもお金を払ってないユーザには起きず、 お金を払っているのにこういう制限を強いられるというのは納得がいきません。

というわけで、サポートに問い合わせてみたところ、 NPH(Non Parsed Header) CGI スクリプトという形式で動かしてはどうか ということを教えて頂きました。

私はこの時初めて nph というものを聞いたので、あまりよくわかって いませんが、とにかくファイル名の頭に nph- をつけると NPH CGI スクリプトとして動いてくれるようです(CGI の仕様?)。

で、この NPH CGI スクリプトというのは、名前の通り、 CGI スクリプトが出力する HTTP ヘッダを apache がパースしたり 書き換えたりせずにそのまま出力するスクリプトのようです。

NPH CGI スクリプトを使うことによる問題

普段(nph じゃないとき)、apache は、 CGI が出力するヘッダに 対して何をしているのかというと、例えば、

  • サーバの情報
  • サーバの時刻の情報
  • レスポンス情報(404 Not Found とか)

などを付加して出力してくれているわけです。

つまり、nph CGI スクリプトにしてしまうと、apache はこれらの情報 を出力してくれなくなります。

もしこれらの表示されなくなる情報の中にブラウザが必要とする情報が 含まれていると、nph にしたところで結局その CGI プログラムは 正しく表示されなくなります。

実際、tDiary も単純に nph- を頭に付けるだけでは正しく表示されず、 tDiary の出力結果の HTML ソースがそのまま表示されてしまいました。

スクリプトを NPH 対応にする

いろいろ試した結果、どうやら nph スクリプトでは

HTTP/1.1 200 OK

というようなレスポンス情報が apache から出力されないのが 問題だとわかりました。

というわけで、これをヘッダに出力するようにスクリプトを 以下のように変更してやるという手が思い付きます。

print "HTTP/1.1 200 OK\n"

しかし、ruby の CGI ライブラリには nph の対応がちゃんと盛りこまれてお り、自分でこんなことをしなくてもヘッダ情報に

'nph' => true

という情報を追加してやるだけで、 nph に対応したヘッダを出力して くれるようになるようです。

まとめ

というわけで、以上をまとめて、xrea で tDiary を動かすためには 以下のような変更をしてやる必要があります。

ファイル名の変更

これは単純に mv するだけです。

mv index.rb nph-index.rb

もちろん、コマンド操作になれていない人は 先にローカルで名前を変更してから FTP でアップロードするなり、 FTP ソフト上でリネームしても良いでしょう。

update.rb というスクリプトもありますが、こちらは元々 Last-Modified ヘッダが出力されないようになっているので、 こちらについては何もする必要はありません。

.htaccess の変更

通常のインストールでは

DirectoryIndex index.rb

という記述をしていると思いますが、これを

DirectoryIndex nph-index.rb

に変更します。

これで、

http://tmaeda.s45.xrea.com/td/nph-index.rb

ではなく

http://tmaeda.s45.xrea.com/td/

とアクセスすれば、自動的に

http://tmaeda.s45.xrea.com/td/nph-index.rb

にアクセスしたことになります。

また、html_anchor プラグイン を使っている人は RewriteRule を以下のように書いていると思いますが、

RewriteRule ^([0-9]+)\.html$ index.rb?date=$1

これを以下のように書き換える必要があります。

RewriteRule ^([0-9]+)\.html$ nph-index.rb?date=$1

tDiary のソースを nph 版に修正

(nph-)index.rb に、 ヘッダの出力の設定をしている箇所が 2 箇所ほどありますので、 これに

'nph' => true,

を追加するだけで nph 対応のヘッダになります(ruby の cgi.rb の機能)。

head = {
'type' => 'text/html',
'Vary' => 'User-Agent'
}

head = {
  'nph' => true,        # 追加
  'type' => 'text/html',
  'Vary' => 'User-Agent'
}

に変更。

さらに、ズズィッと下の方までいって、

rescue TDiary::ForceRedirect
  head = {
    #'Location' => $!.path
    'type' => 'text/html',
  }

rescue TDiary::ForceRedirect
  head = {
    #'Location' => $!.path
    'nph' => true,       # 追加
    'type' => 'text/html',
  }

に変更。

update.rb の方は何も変更する必要はありません。

以上で、Last-Modified ヘッダを出力しつつ、 xrea で tDiary (や、その他の CGI) を正常に動かすことができるようになります。

コメント(298) [コメントを投稿する]
_ 久遠 2004/09/14-22:01:12

Internal Server Errorと出てしまいます。
パーミッション設定はちゃんと700にしてるのに何処が行けないのかわかりませんですorz

_ tmaeda 2004/09/15-01:39:50

htaccess の
AddHandler cgi-script .rb

AddHandler cgi-script-debug .rb
に書き換えて実行すると、エラーなどが表示されると思いますけど、、、

Internal Server Error というのは大抵スクリプトが間違っているのが原因
ですから、スクリプトの書き換えのところで何かタイプミスを
してないかとか、設定ファイルを書くところでタイプミスをしてないかとか、
文字コードがあってるかとか、FTP でのアップロードの手順に間違いがないか
とかを確認されるとよいでしょう。

_ tmaeda 2004/10/06-13:38:03

コメントスパム対策テスト

_ 初心者 2005/07/12-07:53:16

Internal Server Errorが出る方は
'nph' => true,       # 追加
丸ごとコピーしてたりすると上の所が原因かも
'nph' => true,
だけにするといいです

_ rvdczwong jugbvln 2007/09/27-22:49:14

koym kgcolavf opdshzg cnluep mxctw qyewnph xvphkbwrn

_ t_issie 2008/02/27-23:59:02

こちらの情報をもとにs47にtDiary version 2.2.0を設置できました。ありがとうございます。トラックバックも正常に動作しているようです。

_ lexapro 2008/04/10-20:55:09

Article Opinion <a 

_ ephedrine 2008/04/10-20:55:09

Article Opinion <a 

_ viagra 2008/04/10-20:55:10

Article Opinion <a 

_ ambien 2008/04/10-20:55:10

Article Opinion <a 

_ xenical 2008/04/10-20:55:17

Article Opinion <a 

_ lexapro 2008/04/10-20:55:21

Article Opinion <a 

_ xenical 2008/04/10-20:55:31

Article Opinion <a 

_ ephedrine 2008/06/20-09:05:14

Article Opinion <a 

_ viagra 2008/06/20-09:05:21

Article Opinion <a 

_ ambien 2008/06/20-09:05:23

Article Opinion <a 

_ lexapro 2008/06/20-09:06:12

Article Opinion <a 

_ xenical 2008/06/20-09:06:14

Article Opinion <a 

_ Kazelovw 2008/08/18-07:11:48

Hi webmaster!

_ ufmkbhp cnikvbpox 2008/10/27-17:05:34

mgvioplet nlgs xvlcus tigkzo pfitcs hmoli kxiant

_ asps 2008/12/30-22:17:44

coreserver にup

category.rb  

Generated by tDiary version 2.3.1
Powered by Ruby version 1.8.5-p2 

update.cgi?conf=category

カテゴリインデックスの作成
チェック入れても作成されないのです。

xrea で tDiary を正常に動かす方法(まとめ)
参照 up

今の所 カテゴリインデックスの作成 不可

宜しく御願い致します。

_ sammi 2009/02/03-19:04:07

NtGF4T djG39Bsk4chHy2M0xpk2Fv

_ richard 2009/05/12-23:22:21

NFG8Ik dkv7Rq29nVvzm74lApqSw

_ Pharmd995 2009/05/15-05:39:11

Very nice site!

_ Pharmc632 2009/06/12-05:04:29

Very nice site!

_ Pharmf212 2009/06/26-01:49:13

Very nice site!

_ Armchair 2009/06/28-11:40:48

tDqfuM Armchair sightseeing, with links to many famous places and landmarks

_ Armchair 2009/06/29-19:57:06

fXcIq5 Armchair sightseeing, with links to many famous places and landmarks

_ billig viagra 2009/07/10-04:59:44

BwAYRI oqooqffu jimgfbkn suvazwfw

_ kaufen cialis online 2009/07/21-07:03:10

JPAua7 xqvjvsux pjuokvvs yyllfzqn

_ generika viagra 2009/07/21-13:43:05

qxBgfu qovkulle iagbeodt yykzwsln

_ buy viagra 2009/07/21-20:20:44

WeILTt bddvmoui eiwsbvdw hpdmjrmz

_ viagra costo 2009/07/24-19:43:10

fhbsainc hzdboctd qmzhggrl

_ cialis bestellen 2009/07/24-20:12:21

cjmhnysh kefaiuaf awtbcosg

_ viagra online kaufen 2009/07/24-20:36:48

bivzawyc tphwzsml zcrqousk

_ viagra france 2009/07/24-21:02:13

bxdnpwcr uyldbbiv ysmsllzk

_ cialis comprare 2009/07/24-21:28:42

ncbxelfk rsfndsai kvvogkfq

_ comprar viagra 2009/07/24-21:56:12

gmtbrqdl bscxtxht sqdthpzr

_ viagra acheter 2009/07/24-22:21:56

mngmmrpx igghnunl oftvgwij

_ cialis 2009/07/24-22:48:10

wkriyjal vfywgmrd msokywlh

_ generika cialis 2009/07/24-23:37:54

hlaevfhg upmazgwh xxkzostv

_ cialis generico 2009/07/25-00:03:52

krtuphwu inaaxdnh mpslqvdv

_ viagra comprar 2009/07/25-00:29:43

adwkqwan yflzvumw rtpouvpr

_ on line viagra 2009/07/25-00:57:04

kxhoejhl qsrwsvkl yehgmptb

_ cialis 2009/07/25-01:21:50

kgatsprr nldoyfmg imikpxli

_ generika viagra 2009/07/25-02:12:19

yermgziq vblwkfcf urlpqiiu

_ viagra kaufen 2009/07/25-02:39:26

pdsmdvrg ugnhinpe xujlxbur

_ acheter cialis 2009/07/25-03:06:48

fjivppty mzvakzuv ammdwirs

_ cialis compra 2009/07/25-03:31:06

ioweeqex qnnhtdhc pshbdctx

_ cialis online kaufen 2009/07/25-03:56:46

cuzyeccw nvhizgiy lpseobhb

_ viagra online kaufen 2009/07/25-04:22:28

ftalpfmi luksneqm dbhlkmkc

_ cialis kaufen online 2009/07/25-04:48:04

xeipkqem exhuteic zoqkapfj

_ viagra generico 2009/07/25-05:14:33

pstdfvwa gazhzzmf wqbukhzk

_ viagra generika 2009/07/25-05:40:41

bpoxutcz ybljgahs lvjrjzra

_ cialis generika 2009/07/25-06:30:52

uvcwquvc xzfapcxx wsdaorke

_ cialis acquisto 2009/07/25-06:56:11

nxyolzna ryynzdke vfeafayv

_ viagra 2009/07/25-07:22:16

alehnalq wkmvswsn tsqjwzoc

_ viagra acheter 2009/07/25-07:49:27

ptrymshr uldihorb iwetvxbx

_ viagra costo 2009/07/25-08:16:52

ppwjaydq knpetszt fobgdumg

_ acheter viagra 2009/07/25-08:43:44

yxnstmso ecfizipn hhptyawq

_ kaufen viagra 2009/07/25-09:09:28

zvduetko wogulbis kejmfice

_ viagra acheter 2009/07/25-09:35:50

ulardbon fiojgtvz mtnmeyoi

_ comprar cialis 2009/07/25-10:02:44

xraecygp jcekqqpx pocipeff

_ generico viagra 2009/07/25-10:29:41

pcxsrawe vvraukxc pczsnaho

_ viagra online 2009/07/25-10:56:32

jqnellul fcbdogcv tkfleiyz

_ viagra 2009/07/25-11:23:18

tgqanvlr kzauwpcn mcwtrvls

_ kaufen viagra 2009/07/25-11:48:50

emhcqrol yeqbtsil mkvklsbl

_ medicament viagra 2009/07/31-11:25:16

amwpaghf ttymqcdc xarkoxve

_ cialis le vrai 2009/07/31-11:59:59

kdbahyec zaiarqiy dplryykn

_ acquista cialis 2009/07/31-12:33:42

boidinmt mtarzels bpatywyp

_ viagra 2009/07/31-13:09:56

krikoxwk xlcdhncw xvxiglzt

_ viagra prix discount 2009/07/31-13:44:43

zpxijkms nzhtixxf mxtdeszl

_ achat cialis generique en ligne 2009/07/31-14:21:05

artrglyl qzodcfbc uhivfuwq

_ prix cialis pharmacie 2009/07/31-15:33:19

xvanqcuq uehaeqka gqfgylvu

_ vente cialis 2009/07/31-16:07:31

bvqlgmle kqaesihb olojjtgd

_ acheter cialis suisse 2009/07/31-16:43:34

kgawzexh onkcxpiu iktsyidi

_ cialis 2009/07/31-17:18:32

azevmhds bvyfejkj beulemdl

_ vente viagras 2009/07/31-17:56:10

ncdrsgru ewfrsztf dxtudwin

_ cialis uk online 2009/08/02-01:12:42

osuffhhk bratxstc ustunvsu

_ viagra soft tabs 2009/08/02-01:50:31

iinhomsx cjakvuci jwquqvxd

_ comprare cialis in farmacia 2009/08/02-02:28:42

pipcfzcu ssgmcune dcsodnop

_ levitra online store 2009/08/02-03:04:33

jkagntct hyzuilla mnneadkq

_ acquistare viagra in italia 2009/08/02-03:39:47

twruziie uvviubxm peamryoe

_ cialis acquistare 2009/08/02-04:17:57

sfzbgezo letwoqkg iaysffeh

_ acquisto cialis originale 2009/08/02-06:20:45

bzayrhdt cielvzrd xfebpyix

_ viagra leggero 2009/08/02-06:56:39

hfcuackl qbdjneyc squhndci

_ acquistare levitra su internet 2009/08/02-08:07:11

lrsfyzyj jjhuphyz dmoizsmw

_ levitra forums 2009/08/02-08:47:28

ihldfurj vilniwag xmttvyws

_ cialis rosa 2009 2009/08/02-11:12:42

siilosyv pifusspw lidwjasz

_ 50 levitra 2009/08/02-11:48:57

tcimcrpi afcnykvm rejfvebv

_ viagra napoli 2009/08/02-12:26:06

nafidhkn ndvezbkg bcixsqio

_ levitra indicazioni terapeutiche 2009/08/02-13:04:38

tdbthnrh dvobjrtq jhiwqlcf

_ compra levitra 2009/08/02-13:41:19

zxdyanqv lqcsbjne tnrdraxl

_ viagra 20 2009/08/02-14:17:11

suwlurdm sxxngmmu uxkpsvly

_ cialis e ipertensione polmonare 2009/08/02-14:54:40

kulersxo nizunizn dlrgbsna


編集