忍者ブログ
a pot of tea,
プログラミング勉強中。備忘録や、つくったものの紹介を書いています。openFrameworks(ofxiPhone)/Perl/PHP/as3(flash,AIR)などなど。
Admin / Write
2024/03/19 (Tue) 12:44
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

2010/11/14 (Sun) 17:41
第1回。
とりあえず、macに乗っかっているapache2を使用して、cgiプログラムを動かしてみたいと思います。






まず、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とか名前をつけて、ぽい。
このままじゃ動かないので、パーミッションの変更をします。
# cd /Library/WebServer/CGI-Executables/ chmod 705 test.cgi 
755か705かはおこのみで。
パーミッションとかアクセス権とか、なにそれ?な方はぐぐってみてください。
これで、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
Name
Title
Mail
URL
Comment
Pass   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:
  HOME   8  7  6  5  4  3  2  1 
最新コメント
[02/22 通りすがり]
[10/05 ar_tama]
[10/02 すぎゃーん]
[10/02 すぎゃーん]
最新トラックバック
プロフィール
twitter
follow me!
@ar_tama


ar_tama / Makoto Arata
東京のはしっこでプログラミング、ときどきコンピュータ音楽。
音大生。
にゃんこともちもちが好き。
詳細

contact:arata.makoto(at)gmail.com
(at)->@
バーコード
ブログ内検索
__
忍者ブログ [PR]