さてさて、昨日はHello Worldを表示するのにだいぶ苦労しました。


今日は、HTML形式での表示方法です。


昨日は、以下のように書いてテキスト形式での表示。


print "Content-type: text/plain\n\n";


さあ、スタートです。


以下のすくりぷとを入力し、1-2.cgiで保存。


#! c:/perl/bin/perl

#CGIヘッダ出力

print "Content-type; text/html\n\n";

#HTML出力

print "<!DOCTYPE HTML PUBLIC \" -//W3C//DTD HTML 4.01//EN\">\n";
print "<html>\n";
print "<head><title>Hello HTML</title></head>\n";
print "<body><p>こんにちは、これはHTML文書の例です。</p></body>\n";
print "<html>\n";



http://127.0.0.1/tendays/1-2.cgi で実行!



ううう


Internal Server Error

なにか間違っているようだ。

エラーログを確認しろ書いてあるぞ。


場所は、apacheインストールディレクトのlogsディレクトリの中のerror.logだ。


早速、確認。



[Thu Nov 30 22:40:07 2006] [error] [client 127.0.0.1] malformed header from script. Bad header=Content-type; text/html: 1-2.cgi


となっている。


Bad header=Content-type; text/html ここがポイントかな。



print "Content-type; text/html\n\n"; のContent-typeの後がセミコロンになっている。


perlでセミコロンは、一番最後に記述するものなのでここが間違っていたのか。


コロンに修正し、再度実行。


‚±‚ñ‚É‚¿‚́A‚±‚ê‚ÍHTML•¶‘‚Ì—á‚Å‚·B


あれ、文字化けしてるぞ。


何々、文字化けする場合があるので、ブラウザのエンコードをshift JISに変更してくださいとな。


はい!変換。



こんにちは、これはHTML文書の例です。



お~表示された。


今日はおしまい。



今日のまとめ


文字列リテラル


print 関数で使われている。


"Hello Perl"等のダブルクォートで囲まれた文字列のこと。


エスケープシーケンス


普通に表示できない特殊な文字を文字列リテラルに入れるとき、\を前におく記法。


print "ダブルクォートは\"です\n";


2番目の"と3番目"どちらが文字列の終わりかわからなくなってしまうので、"の前に

\マーク置く。


その他のエスケープシーケンス。


\n 改行

\t タブ

\' シングルクォート

\" ダブルクォート

\\ \マーク

久々の更新です。


今日は、プログラムの入門書で定番のHello Worldの表示。


簡単、簡単!


なになに、以下をメモ帳に入力。


#! c:/perl/bin/perl

print "Content-type: text/plain\n\n";

print "Hellow Perl!";
print "Hellow World!";


ん~ メモ帳! つかいにくいんだよな。


テキストエディタといえば秀丸かな。


それで、以下のディレクトに保存。


あれそんなディレクトリないぞ。

なければ作ればいいのか?


1-1.cgiで保存。


さっそく、http://127.0.0.1/tendays/1-1.cgiブラウザに入力。


あれれ・・・。ページがみつかりませんになるぞー。



なぜだ~。んんん。


そう言えば、1-1.cgを保存する時、教科書に書いてあるディレクトがなかったよな。


これおかしいぞ。そうか!


Apacheを2回目にインストールした時、インストール先のディレクトリを間違えたようだ。


今まで見ていたのは、1回目のインストールの時の残骸か~。


は~。


じゃ~。気をとりなおして、apacheの再インストールをするか。



今度は、インストール先ディレクトリを間違えないようにしないとね。

教科書にもちゃんと書いてあることだしね。


それで、httpd.confを修正してと。


1-1.cgiを再作成。


さあ、今度こそ実行だ~


http://127.0.0.1/tendays/1-1.cgi 実行


あれあれ。


#! c:/perl/bin/perl

print "Content-type: text/plain\n\n";

print "Hellow Perl!\n";
print "Hellow World!";



とそのままブラウザに表示されているぞ。


なぜだ~。なぜだ~。


しばし考える・・・・・。


そうか。


httpd.confの修正が反映されていないのか。


apacheをrestartすればいいのかな。

restart


えいや~

http://127.0.0.1/tendays/1-1.cgi実行。



おおおお。


Hellow Perl!
Hellow World!

表示されたぞ~。


長かった!ここまで1時間15分。


ぜんぜん簡単じゃなかった!。


あ~あ~この先どうなることやら。


じゃ~つづきはまた今度。


今日から、授業開始です。


教科書は、10日でおぼえるPerl/CGI入門教室

先生曰く


『10日でおぼえるPerl/CGI入門教室』で授業を受ければ、Perl/CGI言語をつかってアクセスカウンターや掲示板、チャットなどを作成したり改造したりするようすることができるようになります。


とのこと。


それでもっと最後には、アドベンチャーゲームやロールプレイングゲームまで作っちゃいましょう


とのこと。



先生!本当にそんなことでくるですか?



大丈夫、わかりやすく、やさしく書いてありますから


それでは、授業をはじめます。


今日は、とりあえずオリエンテーションです。

まあ、準備体操みたいなもんですね。


-------------------------------------------------------


まずは、用語説明から


○基本的な用語


・ホームページ

・インターネット

・WWW

・Webページ

・Webサイト

・URL


このあたりは大丈夫です。


それでは次


○HTMLの基本

 

・HTMLとは?

・HTMLの仕組み

・HTMLの文書構造

 ①HTMLバージョン情報のある行

 ②文書についての情報をもつヘッダー

 ③文書の実際の内容をもつ本体


・ちょっと複雑なHTML文書

・HTML文書のややこしい話


まとめると、こんな感じです。


・HTML文書は、要素と呼ばれるもので構成されている。

・要素は基本的に開始タグから始まり、終了タグで終わる。

・HTML文書は文書型宣言から始まり、それ以降は全体が

 html要素になっている。

・html要素はhead、body要素をもち、head要素は必ずtitle要素をもつ。

・HTMLの世界でも、理想と現実はちょっと違う。


うっうっうっ~もう????だぁ。HTMLよくわからん。

いっきに専門用語をまくしたてられた感じだ。本当にわかりすいのかこの授業?


それでは、WebサーバとCGIについてです。


○WebサーバとCGI


・Webサーバの動き

・CGIの動き

・CGIヘッダー

・CGIとPerlの関係


じゃー早速、Perlをインストールしてみよう!


え~、いきなりですか。


そうそう、説明だけではわからないので、実践あるのみです。

さあ、準備開始です。


○Perlのインストール


 ・ActivePerlのインストール

 

 ※インストールは無事完了! OSは、Windows2000です。

   Windows2000のためか?、⑤の「Choose Setup Options」

   のダイアログ画面で

   教科書とは違い、チェックボックスが4つついていました。

   ここは、教科書通りに、2つのみチェックをつけました。

先生、ActivePerlのインストールは完了しました。これでPerlのプログラム作れますか。


せっかちですね。みなさんのパソコンでPerlを動かすには、Webサーバのインストールが必要なのです。


WebサーバであるApacheをインストールしてみよう!


○Apacheのインストール

 ・Apacheのインストール手順


 


 ・Apacehの設定


 さて、Perlを動かすには、Apacheの設定ファイルを変更する必要があります。


 ・Apacheの設定


 http.confを以下の通り書き換えてください。


 267行目

 Options Indexes FollowSymLinks

          ↓

 Options Indexes FollowSymLinks Includes ExecCGI

 

 274行目

  AllowOverride None

          ↓

AllowOverride All

 

 765行目

  #AddHandler cgi-script .cgi

          ↓

  AddHandler cgi-script .cgi


790,791行目


 AddType text/html .shtml
 AddOutputFilter INCLUDES .shtml

 

 無事修正完了。


 なになに、設定済みのファイルが、CD-ROMに収録されています。 ・・・・。


 設定完了したら、Apacheを起動してみましょう!


ここで、トラブル発生。

Apacheを起動すると、[error] (OS 2)指定されたファイルが見つかりません。 No installed service named "Apache2".となる。


わからん何がいけないのだ・・・・


先生どうすればいいんですか?


・・・・・・・・・・・・・・・・・・・・・・・・・・


こうゆうときは、グーグルだ。ググってみました。 


なになに、IISが起動していると、ポート80番がapacheと重なってうまく起動しないようだ。

そう言えば教科書にも小さく注意書きがしてあったようだ・・・・。


翔泳社のホームページのQ&A にも同様のものがありました。


以下の手順を試す。


1.Apacheのアンインストール


2.IISの停止

  Windows2000の場合、スタート→設定→コントロールパネル→

  管理ツール→インターネット サービス マネージャから

  すべてのサービスを停止する。


3.念のためウィルス対策ソフトも無効にする。


4.Apacheの再インストール


5.http.confの再設定


やったぁー! 無事に、Apacheが起動しました。


よかった!


それじゃーApacheが起動したようなので・・・・。

Apacheにアクセスしてみてください。



htttp://127.0.0.1 と入力する。


おー みえた みえた やったー。


Apacheが起動できないときは、だいぶあせったがよかったよかった。


今日はこれでおしましい。


P.S 高橋 大吾先生


先生、IISが起動していると、apacheの起動ができないと書いてはありましたが、どうなエラーが表示されるのか書いて欲しかったっす。