自分用勉強記録⑥初めてのCGIデビュー
***自分の確認用に残しているため、文は支離滅裂です。ご了承ください。
さて!本日は初めてのCGIデビューということで、CGIを使ってWebページをさらに進化させようではないか!
CGI機能を楽しむには「Perl」(その他:Ruby・PHPなど)が必要。
調べてみると、Perlはめちゃ有名だからCentOSとかインストールした時に既に入ってるよ、だからいちいちインストールしなくてもOK!的なことが書いてあったので、おバカな私は実際にコマンドで調べもせずその情報を鵜呑みに。そのあと散々なことが待ち受けてるにもかかわらず…。
うん!Perlは既に入ってるみたいだし?CGIを使える様に設定を変更しようかな。
やることは以下3点!
①CGI・HTMLプログラムの置き場所を作る
②CGI設定の変更
③cgi、htmlファイルの中身を記述
それでは早速①から。以下の図のようにディレクトリ・ファイルを作成。(今回、cgiのディレクトリ名はcgi-bin、htmlのディレクトリ名はhtmlとした)
お次は②CGIの設定変更(赤文字:変更箇所)
[設定ファイルを開く]
[変更]
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
<Directory "/var/www/cgi-bin">
AllowOverride None
Options ExecCGI(CGIの実行を許可するというOptionsの設定)
Order allow,deny
Allow from all
</Directory>
~
AddHandler cgi-script .cgi(「#」を削除 )
これでおっけい!次は③へ!
今回はクライアントから名前と電話番号を入力してもらうサイトを作る。クライアントが入力したデータを受け取る方法は2つある。
⑴GETメソッド
⑵POSTメソッド
⑵がなんとなくわかりやすかったので⑵を選択。
それではinput.cgiを作成し、⑵を使って中身を書いていく。
[input.cgi]
#!/usr/bin/perl
print "Content-type:text/plain\r\n";
print"\r\n";
read (STDIN, $data, $ENV{'CONTENT_LENGTH'});
$data =~ tr/+/ /;
$data = ~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2',#1)/eg;
print $data;
実行権限を与える
#chmod +x input.cgi
次はinput.htmlを作成し中身を書いていく。
[input.html]
<html>
<body>
<form method="POST" action="/cgi-bin/input.cgi">
<p>name: <input type="text" name="name" size=20></p>
<p>number: <input type="text" name="phonenumber" size=15></p>
<p><input type="submit" value=PUT" name="submit"></p>
</form>
</body>
</html>
ファイルの作成はこれでOK。
それでは最後にwebブラウザでURLを入力してきちんと表示されるか確認!
http://192.168.56.2/input.html
表示されました!htmlはできてるみたいです!
それではcgiはどうか。空欄箇所に適当に入れてPUTボタンを押すと…
な、なんだ?????どういうこと?内部エラー、つまりVirtualboxでたてたサーバーに問題があるということ。そりゃそうだけど、だからなんだw原因がわからない。考えることまた約半日。…そういえば一番最初にperlインストール無視してたよね。もともと入ってると思ってたし。一応確認してみようかな。
whereis perl
perl:
なんてこった (笑)「perl:」の後に何も表示されない。つまりperlはどこにもないということ。もとから入ってなかったんだ…。そりゃ表示されないよね。
ということで秒でインストール。
一応サーバーを再起動させてと…再度webでURLを検索してPUTボタンを押すと…
なんとかいけたみたい。ふー、疲れた。笑
案外、初期設定は調べないと怖い。何が入ってて入ってないのかきちんと確認しないとダメなのね。勉強になりました。