情報システム管理 Webサーバ

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