このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

Rbでcgiを作成する

発言者:れお
( Date Tuesday, April 06, 2004 00:59:50 )


こんばんは、初めて投稿します。
makingCGIwithRBを参考に試行錯誤しております。
で、結果的には以下のメッセージが表示されて実行できません。
ナニが悪いのかだんだん判らなくなってきて、こちらで質問させてもらうことにしました。

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

エラーコードは500だそうです。
ログを見てみると
(8)Exec format error: exec of /Users/xxx/Sites/hoge.acgi failed
Premature end of script headers: /Users/xxx/Sites/hoge.acgi
と出ています。

実際にやってみたことは以下の通り
Rbでcgiを作りまして 〜/site/ にhoge.acgi を置きました
chmod 775 hoge.acgi
この状態でパーソナルWeb共有をオンにして
Safari から http://localhost/〜xxx/hoge.cgi を表示させました
結果は上の通りです。
hoge.acgi の中身はmakingCGIwithRBのHello,Worldを表示するコードが入っています。
hoge.acgi を起動しておいても起動していなくても結果は同じでした。
HandleAppleEvent の中に Msgbox を入れてみましたが実行されていないようです。

環境は以下の通り
PowerBook G4 15" 1.25GHz MacOSX10.3.3

的外れな質問をしていたり、過去の記事と重複しているかもしれません。
その時は、野次罵声等よろしくお願いいたします

田中求之 さんからのコメント
( Tuesday, April 06, 2004 12:04:53 )

MacOS X では、makingCGIwithRb にしたがって作った CGI は動きません。MacOS と OS X では
CGI の実装の形態が異ります。このため、MacOS 用の CGI アプリケーション(AppleEvent で
サーバとの通信を行うもの)は、OS X では使えません(OS X server には中継プログラムが
はいっているんだったっけ?)。

なお、誤解のないように言っておきますが、REALbasic で OS X の CGI が作れないということ
ではありません。OS X の CGI の流儀にしたがったアプリケーションを作ればよいはずです。
ですから、OS X の CGI 作成方法に関する資料を探してみてください。

れお さんからのコメント
( Wednesday, April 07, 2004 00:17:25 )

田中様コメント有り難うございます。
なるほど、OSX では実装方法が変わったんですね。

ということで、色々調べた結果、ACGI Enabler なるものが必要であるらしいことを発見するも、OSX Server のみの特権のようで、クライアント版では入っていなさそう。
そいつは9008番ポートを監視するということだったので、Rb で Socket を使って監視させてみましたが、結果反応なしでした。

他に無い物かと探してみると ACGI Discripter を発見。試してみましたがやっぱり AppleScript が対象ってことで失敗。
インストーラが httpd.conf に AddHandler と Action を追加しているようでしたので、nph-acgi を hoge.acgi 等に変更してみても同じでした。
nph-acgi というのがunix実行コマンドということですので、テキストのバッチファイルかと思いきやバイナリのアプリケーションっぽい。こいつに変わるモノを自作すればいいのかなぁ?

・・・と試行錯誤を続けております。何か進展があればまた書かせて頂こうと思います。

今井真人 さんからのコメント
( Wednesday, April 07, 2004 07:30:43 )

素直にPerlでCGIを作るわけには、いかないんでしょうか。

特別な事情がありますか?

れお さんからのコメント
( Wednesday, April 07, 2004 22:00:49 )

こんばんわ。 前回の投稿、改行少なくて申し訳ありません。

>>今井さん
Perl でも良いんですが、自分が Perl に慣れていないので、使い慣れた Rb で・・・
・・・と思いまして。 今から勉強しても良いんですが、なんとなく、気が引けてしまいます。

で、 Rb での CGI ですが、なんとか旨く Hello,World が表示されました。
結局 ACGI Dispacher で行けたのですが、昨日は何故駄目だったのか不思議です。
AppleScript とはいえアプリケーションには違いないということで、
添付されてる env.acgi が動くことを確認して同じ場所に上で書いた Hoge.acgi を置いて表示させました。
何事もなかったように表示されまして、昨日までの悶々とした日々はなんだったのかと(^^;。
パーミッションも644で問題なさそうです。

唯一の問題は ACGI Dispacher がシェアウエアであること。
出来ることなら今ある資産だけで実現したいので、これに替わる方法を考えないといけません。
9008ポートは相変わらずナニも反応せず。
それから、www ユーザで httpd が3つも4つも動いているのは仕様でしょうかね〜?