出席確認として学生証を教室後ろの入り口近くの出席用PCのリーダにタッチせよ. 出席していない回の実験レポートは提出を認めず,0点として計算されるので 注意すること.
システム設定→ ネットワーク→ 有線→ オプション→ IPv4設定で,「方式」を「自動」にして授業ページを読める状態にせよ.
:全員が個人で実施
個人の public_html/cgi-bin ディレクトリ以下のファイル にCGI実行の許可を与える.
まず public_html 直下に cgi-bin ディレクトリを作成せよ(mkdir).
次に /etc/apache2/mods-available/userdir.conf ファイルを編集する.このファイルを管理者権限でエディタで開き,
</Directory> </IfModule>
という2行を探し,この2行の間に以下の行を挿入せよ.
<Directory /home/*/public_html/cgi-bin> Options +ExecCGI AddHandler cgi-script .cgi .pl </Directory>
設定が済んだら保存する.
sudo a2enmod cgi を実行せよ(Apache2でCGIモジュールを有効にする).
sudo service apache2 restart でサーバを再起動せよ.
下記のプログラムを ~/public_html/cgi-bin/first.cgi として作成せよ.
#!/usr/bin/perl -w print <<'Section1'; Content-type: text/html <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> <title>my first CGI</title> </head> <body> <h1>Hello world!</h1> <p>This is my first CGI page.</p> </body> </html> Section1
cgi-bin ディレクトリで ls -l first.cgi コマンドを実行し,アクセス権が -rwxr-xr-x となっていることを確認し,コマンドラインから実行せよ. 異なっている場合は chmod 755 first.cgi コマンドを実行し,正しく設定せ よ.
ブラウザから
http://自分の端末のIPアドレス/~自分のユーザ名/cgi-bin/first.cgi
としてアクセスしてみよ.
次に This is my first CGI page. の代りに date コマンドの結果を表示する CGI プログラムを作成する.
ここでは <p>This is my first CGI page.</p> を出力する部分, その前を出力する部分,後ろを出力する部分に分割する方針で作成する. This is my first CGI page. を出力するプログラムを以下のように書き変え よ.
#!/usr/bin/perl -w print <<'Section1'; Content-type: text/html <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> <title>my first CGI</title> </head> <body> <h1>Hello world!</h1> Section1 print "<p>"; print "This is my first CGI page."; print "</p>\n"; print <<'Section2'; </body> </html> Section2
一般の perl プログラムでできる処理を 行うことができる. print "This is my first CGI page."; の部分を print `date`; に変更することで目的のプログラムを作成できる.
:グループで仲良く実施
個人あるいはクラブ・サークルや研究室等の団体のWebサイトの構築にあたって、情報共有のための掲示板、チャットルームが設置ができると便利である。 これらの設置は自身でPerl言語を用いてCGIプログラムを作成し設置することで実現できる。
この他にも、インターネット上では無料で使用できるCGIプログラムが多く提供されており、これらを利用することでも設置ができる。
ただし、利用の際は利用規約(著作権等)について理解しておくこと。
本演習では、研究室内などに設置したサーバ上に、チャットルームを開設することを想定し、ネットワーク構築とサンプルのCGIプログラムの設置について演習を行う。
各班 1 から 4 号機の今回の実験での役割とIPアドレス,サブネットマスク, デフォルトルート(ゲートウェイ),DNSサーバは以下の通りとする. これに従って設定せよ.
図11.B.1 ネットワーク図
IPアドレス/サブネットマスク | デフォルトルート | DNS サーバ | |
---|---|---|---|
1 班 | 172.17.2.1/16 | 172.17.254.254 | 172.17.254.254 |
2 班 | 172.17.2.29/16 | 172.17.254.254 | 172.17.254.254 |
3 班 | 172.17.2.2/16 | 172.17.254.254 | 172.17.254.254 |
4 班 | 172.17.2.30/16 | 172.17.254.254 | 172.17.254.254 |
5 班 | 172.17.2.3/16 | 172.17.254.254 | 172.17.254.254 |
6 班 | 172.17.2.31/16 | 172.17.254.254 | 172.17.254.254 |
7 班 | 172.17.2.4/16 | 172.17.254.254 | 172.17.254.254 |
8 班 | 172.17.2.32/16 | 172.17.254.254 | 172.17.254.254 |
9 班 | 172.17.2.5/16 | 172.17.254.254 | 172.17.254.254 |
10 班 | 172.17.2.33/16 | 172.17.254.254 | 172.17.254.254 |
11 班 | 172.17.2.6/16 | 172.17.254.254 | 172.17.254.254 |
12 班 | 172.17.2.34/16 | 172.17.254.254 | 172.17.254.254 |
13 班 | 172.17.2.7/16 | 172.17.254.254 | 172.17.254.254 |
14 班 | 172.17.2.35/16 | 172.17.254.254 | 172.17.254.254 |
2 号機には USB LAN を接続し,班のスイッチングハブに 班のケーブルで接続する.IP アドレス他の設定は 以下の通りとする.2 号機には 2 個の有線 ネットワークデバイスがあるが,MAC アドレスが d8:d3:85 で始まるものが内蔵 LAN ポート,00:24:a5 で始まるものが USB LAN ポートである.
内蔵 LAN IPアドレス/サブネットマスク |
内蔵 LAN デフォルトルート |
内蔵 LAN DNS サーバ |
USB LAN IPアドレス/サブネットマスク |
|
---|---|---|---|---|
1 班 | 172.17.2.8/16 | 172.17.254.254 | 172.17.254.254 | 192.168.1.1/24 |
2 班 | 172.17.2.36/16 | 172.17.254.254 | 172.17.254.254 | 192.168.1.1/24 |
3 班 | 172.17.2.9/16 | 172.17.254.254 | 172.17.254.254 | 192.168.1.1/24 |
4 班 | 172.17.2.37/16 | 172.17.254.254 | 172.17.254.254 | 192.168.1.1/24 |
5 班 | 172.17.2.10/16 | 172.17.254.254 | 172.17.254.254 | 192.168.1.1/24 |
6 班 | 172.17.2.38/16 | 172.17.254.254 | 172.17.254.254 | 192.168.1.1/24 |
7 班 | 172.17.2.11/16 | 172.17.254.254 | 172.17.254.254 | 192.168.1.1/24 |
8 班 | 172.17.2.39/16 | 172.17.254.254 | 172.17.254.254 | 192.168.1.1/24 |
9 班 | 172.17.2.12/16 | 172.17.254.254 | 172.17.254.254 | 192.168.1.1/24 |
10 班 | 172.17.2.40/16 | 172.17.254.254 | 172.17.254.254 | 192.168.1.1/24 |
11 班 | 172.17.2.13/16 | 172.17.254.254 | 172.17.254.254 | 192.168.1.1/24 |
12 班 | 172.17.2.41/16 | 172.17.254.254 | 172.17.254.254 | 192.168.1.1/24 |
13 班 | 172.17.2.14/16 | 172.17.254.254 | 172.17.254.254 | 192.168.1.1/24 |
14 班 | 172.17.2.42/16 | 172.17.254.254 | 172.17.254.254 | 192.168.1.1/24 |
3号機は班のケーブルで班のスイッチングハブと接続する. 設定は全班共通で,以下の通りとする。
4号機は班のケーブルで班のスイッチングハブと接続する. 設定は全班共通で,以下の通りとする。
設定が完了すると1号機から 2 号機の外部IPアドレス (内蔵LANに割り当てたIPアドレス) にping が通るはずなので確認せよ.通らない場合は接続,設定を見直せ. 3,4号機からは 2号機の内部IPアドレス(USB LANに割り当てたIPアドレス) にping が通るはずなので確認せよ.通らない場合は 接続,設定を見直せ.
本日の実習では2号機のWebサーバのサービスは不要である。2号機において以下のコマンドを実行し、サービスを停止せよ。
% sudo service apache2 stop
提供元:KentWeb(http://www.kent-web.com/ )
各班の3号機で以下の手順を実施せよ。
(手順1) 以下ファイルをダウンロードする。
(手順2) ダウンロードしたzipファイルを展開し、以下に示すディレクトリ構造となるように設置せよ(GUI上で作業してかまわない)。尚、[かっこ [ ] 内の数字のとおりパーミッションを設定せよ。
~/public_html | +-- / cgi-bin | + windy / windy.cgi [775] | init.cgi [664] | check.cgi [775] +-- data / log.cgi [666] | mem.cgi [666] +-- tmpl / *.html
(手順3)windy.cgi および check.cgi をテキストエディタで開き、1行目を以下のように修正する。
#!/usr/bin/perl -w
この1行目は(ここでの行頭#はコメントではない)、Perlを実行するためのプログラムが何処に存在するか、を記述する。設置するWebサーバによって書き換える必要がある。間違ったパスを指定するとCGIが動作しない。
(手順4)動作確認のため、3号機自身のブラウザをからチャットプログラムのCGIにアクセスし(http://A.B.C.D/~3号機を操作しているユーザ名/cgi-bin/windy/windy.cgi)、正常に表示されることを確認せよ。
正常に表示された場合、何か入力し投稿ができるかどうかを試せ。表示されない場合、手順2〜3を再度見直すこと。
3号機以外のホスト(1号機,2号機,4号機)のブラウザから,Webサーバ(チャットプログラム)にアクセスできるかどうかを確認せよ。
確認の際には、http://3号機にアクセスするためのIPアドレス/~3号機を操作しているユーザ名/cgi-bin/windy/windy.cgi でアクセスする。
プライベートネットワークに属していない1号機から,3号機のWebサーバ(チャットプログラム)にアクセスできるよう,コマンドによって2号機のiptablesの設定を変更せよ。【レポート課題4, 5】
ポートフォワーディングの設定(任意のTCPポート→任意の転送先IP:ポート番号の場合)
% sudo iptables -t nat -A PREROUTING -p tcp --dport NAPTルータPCのポート番号 -j DNAT --to-destination 転送先PCのIPアドレス:転送先ポート番号
設定後、表示できるかどうかを確認する際、1号機より、
http://3号機にアクセスするためのIPアドレス /~3号機を操作しているユーザ名/cgi-bin/windy/windy.cgi
でアクセスする。また、書き込みができるか試せ。【レポート課題6】
第 10 回課題「CGI,ポートフォワーディング」 を提出せよ.