情報システム管理 情報システム管理
10 . Web サーバ
水野嘉明
本日の内容 本日の内容
1. WWW
2. 動的な Web ページの生成
3. Web サーバの設定
4. Web サーバの監視
1 1 . WWW . WWW
3
1 . 1 Web の仕組み 1 . 2 URL について 1 . 3 HTML について
1 . 4 httpについて 1 . 5 ブラウザ
1 . 6 Web の歴史
1 1 . WWW . WWW
World Wide Web
Web サーバにある HTML 文書 をネットワークを通して閲覧す るシステム
インターネットで、最も多く利
用される技術
1 1 . . 1 1 Web Web の仕組 の仕組
Web ページが表示される仕組
インターネッ ト
Web サーバ
参照したいファ イルの URL を
指定
指定されたフ ァイルを転送 ファイルをブ
ラウザで表示
5クライアン ト
①
②
③
1 1 . . 2 2 URL URL について について
インターネット上のリソース(情 報やサービス)の場所を指定する ための記述形式
( スキーム名 ):( スキームごとに定められた形 式 )
URL の一般形式
Web (http)の場合
http://<user>:<password>@<host>:<port>/<url-path>
スキーム名と <host> 以外は省 略可
http://www2.toyo.ac.jp/~y-mizuno/index.html
スキーム名 ホスト名 パス名
(例 )
7
1 1 . . 2 2 URL URL について について
スキーム名
リソースの種類
http, ftp, mailto, telnet, f ile など
ホスト名
ホスト名+ドメイン名
( IP アドレスも可)
パス名 (省略可)
1 1 . . 2 2 URL URL について について
1 1 . . 3 3 HTML HTML について について
Hyper Text Markup Language
文書の一部を タグ と呼ばれる特 別な文字列で囲う
文書の構造や修飾情報を記述
画像や音声、動画、ハイパーリン クを埋め込むことが出来る
W3C という団体が標準化
9
HTML の例
1 1 . . 3 3 HTML HTML について について
1 1 . . 4 http について 4 http について
Hypertext Transfer Protocol
Web ブラウザと Web サーバの間で用 いられる通信プロトコル
主に HTML テキストを送受信
画像や音声、その他のファイルも伝 送できる
デフォルトでは ポート番号 80 を使 用
11
1 1 . . 5 ブラウザ 5 ブラウザ
ブラウザ
http文書を閲覧するためのソフト
Internet Explorer
(マイクロソフト製、 Windows に付 属)
Firefox ( フリー)
Opera (フリー)
Google Chrome (フリー)
1 1 . . 6 6 Web Web の歴史 の歴史
1990 CERN (欧州原子核研究機 構)のバーナーズ=リーが最初の Web ページを作成
1992 日本最初の Web サイト
( 文部省高エネルギー加速器研究機構 )
1993 NCSA (米国立スーパーコン ピュータ応用研究所)にて、 NCSA Mozaic 開発
13
1993 WWW を無料で誰にでも開放
1994 Netscape Navigator
1995 ~ 2000 Netscape Navigator と Internet Explorer 間で、ブラ ウザ戦争
1998 Google 登場
2002 Firefox 開発
1 1 . . 6 6 Web Web の歴史 の歴史
2 2 . . 動的な 動的な Web Web ページの生成 ページの生成
15
2 . 1 動的なページ生成の仕組
2 . 2 サーバサイドプログラミング
2 . 3 クライアントサイドプログラミング
2 2 . . 動的な 動的な Web Web ページの生成 ページの生成
初期の/単純な Web は、 HTML
で作成されたページを表示するだけ
動的に Web ページを生成
入力したデータ、その他の条件に
より内容が変わる
2 2 . . 1 動的なページ生成の仕 1 動的なページ生成の仕 組 組
ページ生成の仕組 ( 1 )
Web サー
バ
アプリケー ション
Web サーバが、要求に従ってア プリケーションを呼び出し、アプ
リが HTML ファイルを生成する
17 このタイプには
CGI
SSI
JSP/JavaServl et
ASP/ASP.NET などがある
2 2 . . 1 動的なページ生成の仕 1 動的なページ生成の仕
組 組
ページ生成の仕組 ( 2 )
Web サー
バ
HTMLの記述に従って、ブラウ ザがスクリプトを実行する。
実行結果が画面に反映される
スクリプト
19
2 2 . . 1 動的なページ生成の仕 1 動的なページ生成の仕
組 組
このタイプには
JavaScript
AcitveX コントロール などがある
クライアント側で実行するため
、 セキュリティ上問題となるこ とが多い
2 2 . . 1 動的なページ生成の仕 1 動的なページ生成の仕
組 組
2 2 . . 2 サーバサイドプログラ 2 サーバサイドプログラ ミング ミング
CGI (Common Gateway Interface)
Web サーバ上でユーザプログラム を動かすための仕組み・仕様
CGI プログラムは、 Perl でかかれ ることが多い
最近は、 Python 、 Ruby なども
プログラムの出力が、 Web の データ ( HTML や画像など)
21
CGI プログラムは、サーバで実行
作り方が悪いと、サーバの負荷が 大きくなる
一般のプロバイダでは、ユーザに は作らせないことが多い
2 2 . . 2 サーバサイドプログラ 2 サーバサイドプログラ
ミング ミング
CGI の主な用途
掲示板
アクセスカウンタ
Wiki
Blog システム
チャット
アンケートフォーム など
23
2 2 . . 2 サーバサイドプログラ 2 サーバサイドプログラ
ミング ミング
JavaServlet / JSP
Java を用いて、動的に HTML を 生成する
CGI よりもパフォーマンスを向 上
厳密には、 JavaServlet と JSP は 異なる
組み合わせて使うのが一般的な
2 2 . . 2 サーバサイドプログラ 2 サーバサイドプログラ
ミング ミング
ASP / ASP.NET
HTML と、 VBScript や JavaScript などのスクリプト言語の組合わせ
マイクロソフトが開発
ASP を動作させるための Web サーバには、 IIS ( MS の Web サーバプログラム)が用いられる
25
2 2 . . 2 サーバサイドプログラ 2 サーバサイドプログラ
ミング ミング
JavaScript
スクリプト言語
サーバ側ではなく、クライアント 側( Web ブラウザ上)で動作する
HTML の動的書き換え
入力フォームの自動補完 など
プログラミング言語の Java とは
2 2 . . 3 クライアントサイドプログ 3 クライアントサイドプログ
ラミング ラミング
2 2 . . 3 クライアントサイドプログ 3 クライアントサイドプログ ラミング ラミング
Ajax
ブラウザ上の JavaScript とサー バとが非同期の通信をし,動的に 画面を再描画する仕組み
27
2 2 . . 3 クライアントサイドプログ 3 クライアントサイドプログ ラミング ラミング
クライアン ト
ブラウ ザ サーバ
Java
Script
パラメー タ 結果
ユーザではな く JavaScript
が通信する
3 3 . Web . Web サーバの設定 サーバの設定
29
3 . 1 Apache のインストール 3 . 2 Apache の特徴
3 . 3 Apache の設定
3 . 4 .htaccess によるアクセ スの制限
3 . 5 ユーザ認証
3 3 . Web . Web サーバの設定 サーバの設定
Apache HTTP Server
UNIX で一般的に用いられてい る Web サーバ
オープンソースで開発されてい る
Apache ソフトウェア財団
3 3 . . 1 1 Apache Apache のインストー のインストー ル ル
最初からインストールされている ことが多い
インストール、アップデート等 については
『アプリケーションのインス トール』 を参照
自動起動するには
update-rc.d / chkconfig
31 バージョン
1.3 系
安定志向。十分「枯れて」いる
2.0 系
新しい機能を使いつつ安定志向
2.2 系
3 3 . . 1 1 Apache Apache のインストー のインストー
ル ル
3 3 . . 2 2 Apache Apache の特徴 の特徴
モジュール による機能追加
Apache の機能を拡張するため のパーツ
Apache
Core (核
)
モジュール モジュール
モジュール
組込み・取
り外しが可能 33
Apache 標準の主なモジュール
モジュール名 役割
mod_auth_basic.s
o
ユーザ認証mod_authz_host.s
o アクセス制限
mod_cgi.so
CGI の利用mod_dav.so WebDAV の利用 mod_log_config.s
o ログ機能
34
3 3 . . 2 2 Apache Apache の特徴 の特徴
3 3 . . 3 3 Apache Apache の設定 の設定
メインの設定ファイルは、OSやディ ストリビューションにより異なる
KNOPPIX
/etc/apache2/apache2.conf
Fedora ( RedHat 系)
/etc/httpd/conf/httpd.conf
FreeBSD
/usr/local/etc/apache/httpd.conf
35
3 3 . . 3 3 Apache Apache の設定 の設定
設定の一部は、別ファイルにして おいて Include 文で読み込む
( Apache 2.2 系から)
設定ファイルは、テキストファイ ル
ディレクティブ と呼ばれる命令
を、 1 行に一つずつ記述する
トップページ
普通は、ファイル名を指定しなくてもトッ プページが表示されるそのためのファイル名を指定
例 )http://www.toyo.ac.jp/
ファイル指定がないが、
index.html
が表示されるDirectoryIndex index.html index.htm
37
3 3 . . 3 3 Apache Apache の設定 の設定
ドキュメントルート
例えば
http://www.foo.co.jp/bar.html にアクセスすると、
/var/www/bar.html
が表示されるようになっている
この、 URL によるアクセスの起点と なるディレクトリを ドキュメント ルート と呼ぶ
3 3 . . 3 3 Apache Apache の設定 の設定
URL http://www.foo.co.jp/ ファ イル名
ファイル名
/var/www/ ファイル名
ファイル名(パス名)の先 頭に ドキュメントルートを加え る
ドキュメントル ート
省略され ることも 多い
39
3 3 . . 3 3 Apache Apache の設定 の設定
ドキュメントルートの設定
DocumentRoot "/var/www"
基本的には、このディレクト リの下に公開するファイルを 置く
シンボリックリンクやエイリ
3 3 . . 3 3 Apache Apache の設定 の設定
サーバ名
サーバ名として、 DNS に登録 された名前(または IP アドレ ス)を記述する
: 80 は、ポ-ト番号
ServerName www.toyo.ac.jp:80
41
3 3 . . 3 3 Apache Apache の設定 の設定
ディレクトリ単位にルールを設定
3 3 . . 3 3 Apache Apache の設定 の設定
<Directory /var/www/hoo/bar/ >
このディレクトリのルール
</Directory>
アクセス制限
ディレクトリ単位でアクセス制限を かける
設定方法は二通り
設定ファイル ( httpd.conf 等)に記述
対象ディレクトリに、 .htaccess という設定ファイルを置く (後
述)
433 3 . . 3 3 Apache Apache の設定 の設定
まず、どのディレクトリに対す る設定なのかを指定する
<Directory ディレクトリパス >
ディレクトリのアクセス制御 ルール
</Directory>
3 3 . . 3 3 Apache Apache の設定 の設定
アクセスを許可する一覧
拒否する一覧
Allow/Deny の評価順
Allow from アクセス許可リス ト
Deny from アクセス拒否リスト
Order Allow,Deny または
Order Deny,Allow
453 3 . . 3 3 Apache Apache の設定 の設定
( 例 )
<Directory /var/www/mypage>
Order Deny,Allow
Allow from 133.79.0.0/255.255.0.0 Deny from All
</Directory>
東洋大学( 133.79. x . y)か らのみ、アクセス可能
3 3 . . 3 3 Apache Apache の設定 の設定
CGI の使用
ディレクトリ /usr/lib/cgi-bin に CGI プログラムを置き
http:// サーバ名 /cgi-bin/ ファ イル名 という URL で CGI が使用できる
ScriptAlias /cgi-bin/ "/usr/lib/cgi-bin/"
47
3 3 . . 3 3 Apache Apache の設定 の設定
ユーザディレクトリでの CGI 使用
この拡張子のファイルが CGI ファイル
<Directory ディレクトリパス >
:
Options ExecCGI
</Directory>
AddHandler cgi-script .cgi
このディレクトリで CGI の実行を
3 3 . . 3 3 Apache Apache の設定 の設定
3 3 . . 4 4 .htaccess .htaccess によるアクセ によるアクセ ス制限 ス制限
アクセス制限をかけるディレクト リに .htaccess というファイル を置いておく
httpd.conf (apache2.conf) を修正
<Directory ディレクトリパス >
AllowOverride All
</Directory>
.htaccess による設定の上書きを許
可
49
.htaccess に、アクセス制御ルールを記述する ( 例)
Order Deny,Allow
Allow from 133.79.0.0/255.255.0.0 Deny from All
東洋大学( 133.79. x . y)か らのみ、アクセス可能
3 3 . . 4 4 .htaccess .htaccess によるアクセ によるアクセ
ス制限 ス制限
3 3 . . 5 ユーザ認証 5 ユーザ認証
ユーザ名とパスワードにより、特定の ユーザのみ閲覧できるように制限でき る
パスワードファイルを作成する
( OS のユーザ / パスワードとは別)
httpd.conf (apache2.conf) または .h taccess に記述
51
パスワードファイルの作成
ファイルの作成は htpasswd コマンドによる
$ htpasswd -c .htpasswd toyo
New password: (パスワードを入力
)
Re-type new password: (再度入力
)
3 3 . . 5 ユーザ認証 5 ユーザ認証
htpasswd コマンドにて .htpasswd ファイルが出来るので、適当なディ レクトリにコピーする
(クライアントからはアクセスでき ないディレクトリに置く)
所有者とパーミッションを変更する
$ chown apache:apache .htpasswd
$ chmod 600 .htpasswd
533 3 . . 5 ユーザ認証 5 ユーザ認証
(.htpasswd ファイルの例)
toyo:NbNKNUm38HWwc
ユーザ名 暗号化されたパスワー ド
3 3 . . 5 ユーザ認証 5 ユーザ認証
httpd.conf によるパスワード認証 httpd.conf に以下を記述
<Directory ディレクトリパス >
:
AuthUserFile /etc/httpd/conf/.htpasswd AuthType Basic
AuthName "My page"
Require user toyo
</Directory>
55
3 3 . . 5 ユーザ認証 5 ユーザ認証
.htaccess によるパスワード認証 .htaccess に以下を記述
AuthUserFile /etc/httpd/conf/.htpasswd AuthType Basic
AuthName "My page"
Require user toyo
3 3 . . 5 ユーザ認証 5 ユーザ認証
パスワードファイルの場所
4 4 . Web . Web サーバの監視 サーバの監視
57
4 . 1 アクセスログの解析
4 . 2 サーバ資源の監視
4 4 . Web . Web サーバの監視 サーバの監視
Web サーバの資源は有限
画像ファイル等が大きすぎる
効率の悪いスクリプトを実行
アクセスが集中
レスポンスが悪くなる
Web サーバの監視が必要
アクセスログ解析
Appache のアクセスログは
/var/log/httpd/access_log 等
以下のようなデータを調べる
時間帯によるアクセスの傾向や アクセス元の情報
ページ毎のアクセス数
転送サイズ など
59
4 4 . . 1 アクセスログの解析 1 アクセスログの解析
ログ解析ツール
webalizer
AWStats
どちらも、ログを調査し、 Web ペー ジとして見える(つまり HTML フォー マットの)レポートを作成する
4 4 . . 1 アクセスログの解析 1 アクセスログの解析
( webalizer の出力例)
61
4 4 . . 1 アクセスログの解析 1 アクセスログの解析
サーバ資源の監視
次のような項目をモニタリングする
CPU 使用率
ネットワークの転送量
ディスクの使用量 など
4 4 . . 2 サーバ資源の監視 2 サーバ資源の監視
一定時間毎にモニタリングし、
グラフ化するツール
MRTG
Munin
( MRTG の出力例)
63