演習室を巡回していると,学生が手を挙げました.
さっそく,そばに行き,画面を見せてもらいました.
ブラウザ上で「Internal Server Error」が表示されていました.
課題は,Apache HTTP Serverのビルドと活用です.VirtualBoxのゲストOSとして動作するDebian 13の中で,こちらより提供するbuild.shをダウンロードし,実行属性を付けて./buildとすることで,tar.gzファイルのダウンロード,ビルドそしてインストールができます.サーバの起動と停止(apachectl startまたはstop)はスクリプトファイルに記載しておらず,別途コマンドを実行します.起動の前に,httpd.confの「Listen 80」をウェルノウンポートでないポート番号に書き替えておかないといけません.
ゲストOSのブラウザで所定のURLにアクセスし,「It works!」が表示されれば,ビルドとインストールは成功です.次は,CGIスクリプトを実行することです.インストールをすれば,cgi-binディレクトリの中に,test-cgiとprintenvというファイルが作られます.あれとこれとそれをすることで,実行できます.するべきことは学生向けに示していますが,日本語による説明です.コマンドに置き換えて,build.shに記載し,./buildを実行してしばらく待ち,Apacheのビルドとインストールに加え,CGIスクリプトの実行が可能になれば,この授業回の主要な課題は達成となります.
あれとこれとそれのうち,「それ」というのは,シバンの指定です.printenvであれば,最初の2文字は「#!」,そしてそのあとは,perlのフルパスを記述するのが一般的です.
それで,学生とのやりとりですが…
「Internal Server Error」のウィンドウではなく,printenvのファイルを開いて見せてほしいと依頼しました.Mousepadの白地で黒文字の表示で,1行目を見ることができました.シャープびっくりのあと,ユーザー,ビン,パールです.パールはpearlではなくperlです.ユーザーの前には,スラッシュも書かれています.ビンの前後にも書かれています.空白など余計な文字は,ありません.
端末を起動して,まずはcd (略)/cgi-bin,それからls -lを実行することを,指示しました.test-cgiにもprintenvにも,実行属性がついています.
./printenvを実行してもらうと,エラー発生です.ここでエラーが出るのでは,「Internal Server Error」になるのもやむなしです.
端末のウィンドウに隠れる形で,printenvのファイルの最初の数行が表示されていました.1行目を後ろから読んでいくと,perl,/,bin,/,user,/,びっくり,シャープ.…
なんと,「#!/user/bin/perl」と書いてあったのでした.これではperlを呼び出せません.userのところをusrと書くよう,あわてて指示しました.これで,./printenvのコマンドでエラーがなくなり,ブラウザも,期待するメッセージが表示されました.
10分後に巡回したときにも,教室の後方で,同じことをしている学生がいました.修正方法を指示したあと,ゆっくりと教卓に戻って,共有モニタに自分の画面を表示させ,perlのフルパスは「/usr/bin/perl」であることをアナウンスしました.