2010/11/14 (Sun) 17:41
まず、webページの設定。
システム環境設定→共有をクリック。
左に並んだメニューから、web共有にチェックします。
http://IPアドレス/~ユーザ名
が表示されると思います。クリックしてみてください。
「あなたのwebサイト。」が表示されれば、webページが公開できたことになるみたいです。
このページは、ユーザ→「サイト」フォルダにある、「index.html」が表示されています。
この「サイト」フォルダの中に画像やhtmlファイルを入れれば、表示されるようになるんですね。
簡単すぎて拍子抜け。
このままだとさすがにセキュリティが怪しいので、手を加えていきましょう。
今回作りたいbotはよそからアクセスする必要がないので、localhostからじゃないとアクセスできないようにします。
- Mac OS 10.6のApache2にIPアクセス制限をするためのhttpd.conf設定 / 自由で気ままな日々
こちらのブログさまを参考に。
アクセス権うんぬんは、ファイルの「情報を見る」から書き換えるのではなく、一度デスクトップなどにコピー、そこで編集するのがよさそう。
編集は、わたしはXCodeを使っています。笑
ファイルをDockのXCodeにD&Dで普通に開けます。
テキストエディットやDashCodeよりはずっと見やすいので、他にエディタを持っていない方は、ぜひ。
それよりいいやり方があったら教えてください...
このとき、
LoadModule cgi_module libexec/apache2/mod_cgi.so と、
AddHandler cgi-script .cgi
の#(コメントアウト)が外れているかを確認。
#がついていたら、外してください。
あと、「ScriptAliasMatch」で検索して、CGIファイルのパスを見ておくといいかも。
うちは "/Library/WebServer/CGI-Executables/$1" でした。
ついでに、エラーログのパスも。
「ErrorLog」で検索すると、出てきます。
うちは "/private/var/log/apache2/error_log"。
編集が終了したら、ターミナルで
と入力。パスワードを聞かれるので、素直に入れると、ファイルがもとの場所に移動されます。# sudo mv httpd.conf /etc/apache2
(前にあったファイルは置き換えられます)
これで、
http://localhost/からだけアクセスできるようになります。
次!
テストファイルをつくってみます。
ソースはこんな感じ。シンプルに。
#!/usr/bin/perl use warnings; use strict; use CGI::Carp qw(fatalsToBrowser); print "Content-Type: text/html\n\n"; print "test!";
解説。
1行目の、#!/usr/bin/perlは、ターミナルで
# which perlして出てきたものを書いてくださいね。
環境によっては、#!/usr/local/bin/perlとかになるのかな。
#!と/の間には、スペースがないほうがいいのだとか。
テストなのにwarningsとかstrictとかいらないとは思うのだけど、一応。
あと、
これがないと怒られます。*print "Content-Type: text/html\n\n";
標準出力をHTML出力と認識してくれない、みたいな認識をしていますが、違うかも。
とにかく、これを書いておくと、それ以降のprintはすべてブラウザに表示されるようになるようです。
これでしばらく詰まりました...
ここまでできたら、さっき見た、CGIファイルの場所に置いてみましょう。
test.cgiとか名前をつけて、ぽい。
このままじゃ動かないので、パーミッションの変更をします。
755か705かはおこのみで。# cd /Library/WebServer/CGI-Executables/ chmod 705 test.cgi
パーミッションとかアクセス権とか、なにそれ?な方はぐぐってみてください。
これで、test.cgiのアイコンが白い書類からUnix 実行ファイルアイコンになったはず。
念のため、apacheを再起動(web共有のチェックを切→入で再起動できます)して
http://localhost/cgi-bin/test.cgiにアクセスしてみましょう。
test!と表示できましたでしょうか。
*怒られると言っても、ブラウザ上ではInternal Server Errorって表示されるだけです(∵)
さきほど確認したエラーパスのディレクトリに、error_logというファイルがあるはずです。
これを開くと、
[Sun Nov 14 15:14:44 2010] [error] [client ::1] malformed header from script. Bad header=test!: test.cgi
のように、ある程度の詳細が載っています。
この場合は、Content-Type〜を記述していなかったために出たエラーのよう。
あと、シンタックスエラーとかも吐いてくれます。でも過信は禁物。(たぶん)
なにこのエラー?となったら、エラー文をコピーして検索、でだいたい解決できそうです。
PR
Comment
カテゴリー
最新記事
(12/07)
(12/06)
(10/17)
(08/09)
(07/18)
最新トラックバック
プロフィール
follow me!
@ar_tama
ar_tama / Makoto Arata
東京のはしっこでプログラミング、ときどきコンピュータ音楽。
音大生。
にゃんこともちもちが好き。
詳細
contact:arata.makoto(at)gmail.com
(at)->@
ブログ内検索
__
リンク