情報ネットワーク論(3)
by
菊地時夫
—
last modified
2008-07-22 09:27
7月22日(火・1)
Apache HTTP Server
- Apache HTTPD は世界で一番利用されている HTTP サーバです
- 計算機実習室の iMac を利用して、Apache httpd を使ってみます
- 情報科学教室ホームページ -> "学内向けの情報 -> MacOSX で利用できるフリーソフト に、Apache-2.0.59 がある。
- Apache のお試し方法 に従って、
httpd を起動し、「Apache インストール時のテストページ」を表示させてください
プロセス・ポートの確認
- httpd はデーモン(常駐プログラム)として動いている
ps -x
でプロセスを確認
netstat -an | grep LISTEN
で、8080ポートが LISTEN 状態にあることを確認
テストページの作成
test.html の中身
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>テスト</title>
</head>
<body>
<h1>テスト</h1>
こんにちは、私の名前は○山×男です。
</body>
</html>
ブラウザからアクセス
telnet を使ったアクセス
$ telnet localhost 8080
Connected to localhost.
Escape character is '^]'.
GET /test.html HTTP/1.0
HTTP/1.1 200 OK
Date: ...
エラーの確認
- ブラウザとtelnet の両方で試してみる
- 存在しないページ
- 例:http://localhost:8080/tset.html
- アクセス禁止
$ chmod -r test.html
- 確認後
chmod +r test.html
で戻しておく
- 不正要求 (telnet で)
GET /../ HTTP/1.0
DELETE /test.html HTTP/1.0
HOGE / HTTP/1.0
ディレクトリへのアクセス
- Apache httpd では、ディレクトリにアクセスがあると
/
(スラッシュ) が最後に付く URI へリダイレクトする。
- 設定ファイル ( ~/www/conf/httpd.conf ) で
Options Indexes
が指定されていると、そのディレクトリの一覧が返される
- 但し、DirectoryIndex で指定されたファイルが存在すると、そのファイルを返す。
ディレクトリ・アクセスのテスト
$ mkdir test
http://localhost:8080/test
を開く -> 最後に /
が付くことを確認
- ログを確認
- telnet でも試してみる。
- 301 応答に対して、ブラウザが再度アクセスしなおすことを理解してください
"304 応答" について
- ブラウザから何度も同じ URL にアクセスすると、ログには
304 -
が記録される。
- ブラウザ(又は、プロキシサーバ)にコンテンツのキャッシュがあると、その日時(あるいは ETag)を用いて変更がある場合のみ送るように要求している。
CGI
- CGI ... Common Gateway Interface
- ウェブサーバ上でプログラムを実行させるためのインタフェース仕様
- GET /xxx?a=b&c=d ... ? 以下は QUERY_STRING
- POST /xxx ... Data をヘッダの後に付けて送信
- Apache httpd では2種類の指定方法
- ScriptAlias で指定したディレクトリに置く (cgi-bin)
- AddHandler cgi-script で拡張子を指定 (.cgi)
CGI のテスト
- test.py スクリプトをダウンロードして、~/www/cgi-bin に置く
cd ~/www/cgi-bin
して、chmod +x test.py
- テキストエディットで一部修正
test.cgi
-> test.py
http://localhost:8080/cgi-bin/test.py
にブラウザでアクセス
Python CGI ライブラリ
- test.py の最初に
import cgi
req = cgi.FieldStorage()
で、req オブジェクトに QUERY_STRING その他を読み込む
req.getvalue("who")
で QUERY_STRING から who を取り出す
- データの解析は、ライブラリに任せた方が、簡単で安全
その他
- Apache httpd の利用法は、Apache docs にあるので、必要に応じて参照・勉強してください。
本日の出席確認
- 菊地宛のメール に、~/www/logs/access_log を添付して送信。本文には感想・質問を記入も可。
- システムをシャットダウンしてしまうとログが消えるので注意。