Contenu connexe Similaire à Webサーバの基礎知識【編集済み】 Similaire à Webサーバの基礎知識【編集済み】 (20) Webサーバの基礎知識【編集済み】2. アジェンダ 00 .講習の導入 01 . WEB サーバとは? 02 .一般的な WEB サーバの紹介 03 . Apache WEB サーバ 04 . Apache とネットワーク 05 . Apache のインストール 06 . Apache のモジュール 07 . Apache の設定 08 . Virtual Host (仮想ホスト) 09 .認証 10 . MIME タイプ 11 .インデックス 12 .セキュリティ 13 . PHP 14 .ログの記録 3. 01 . WEB サーバとは? 出典:総務省「平成 21 年度 通信利用動向調査」 (平成 7 年) Windows95 発売 (平成 11 年 2 月) i モード開始 (平成 13 年 9 月) Yahoo BB! サービス開始 (平成 15 年頃) FTTH 普及拡大 4. 01 . WEB サーバとは? 出典:総務省「平成 21 年度 通信利用動向調査」 5. 01 . WEB サーバとは? ■ World Wide Web ( WWW )の 3 技術要素 ①. URI ( Uniform Resource Identifier ) URL ( Uniform Resource Locator ) ⇒ 情報資源を一意に決定する方法 ②. HTML ( HyperText Markup Language ) ⇒ WEB ページを記述するためのマークアップ言語 ③. HTTP ( HyperText Transfer Protocol ) ⇒ HTML 文書をインターネットを通して異なる コンピュータ間で送受信する規約 6. 01 . WEB サーバとは? ■ URL (参照) Apache ハンドブック P.1 http :// www.kago.com : 8888 / download / index.html スキーム ホスト ポート パス ファイル 7. 01 . WEB サーバとは? 出典: http://itpro.nikkeibp.co.jp/article/lecture/20061115/253796/ ■ WEB ページ閲覧の流れ (参照) Apache ハンドブック P.1 8. 02 .一般的な WEB サーバの紹介 出典: Netcraft ( http://news.netcraft.com/ )「 October 2010 Web Server Survey 」 ■ WEB サーバの台数 ( 2007 年) Google 巨大 DC 稼働 Apache, IIS シェア接近 nginx 急増 Apache の 1.5 倍の増加率 9. 02 .一般的な WEB サーバの紹介 出典: Netcraft ( http://news.netcraft.com/ )「 October 2010 Web Server Survey 」 ■ WEB サーバの台数 Web サーバ 2009 年 6 月 2010 年 6 月 推移 ⊿ 台数 シェア率 台数 シェア率 Apache 39,391,419 46.89% 47,215,212 54.37% 7.48% Microsoft 21,898,527 35.69% 15,821,508 18.22% -17.47% Google 9,526,725 9.00% 12,282,054 14.14% 5.14% nginx 2,941,539 3.35% 6,650,907 7.66% 4.31% Sun 159,685 0.19% -0.19% qq.com 48,453 0.06% -0.06% lighttpd 345,251 0.40% 0.40% 11. 02 .一般的な WEB サーバの紹介 ■ 代表的な WEB サーバ ● Apache HTTP Server ⇒ 世界中で現在最も利用されている Web サーバ 大規模な商用サイトから自宅サーバまで幅広く適用可能なオープンソース・ソフトウェア ● Internet Information Server ( IIS ) ⇒ Microsoft 社製の Web サーバ 技術的な難易度が高いためか、企業やネットワーク上級者に対してのシェアが高い ● Google Front End ( GFE ) ⇒ Google が自社で運用するサーバ(※ Apache ベース) 独自に手を加えて高速化しており、 Google 社内のみで全体の 10 %強のシェアを誇る ● nginx ⇒ ここ数年でシェアを拡大している軽量で高性能な Web サーバ BSD 系ライセンスでリリースされ、一般的なプラットフォーム OS をほぼサポートしている ● lighttpd ⇒ 高速性が重視される環境に最適化された Web サーバ 他の Web サーバと比較して CPU 負荷やメモリ消費量が少ないなどの特徴を有する (参照) Apache ハンドブック P.2 12. 03 . Apache WEB サーバ ◎ Apache の成り立ち ● 1989 年 欧州原子核研究機構 (CERN) に在籍していたティム・バーナーズ=リーが「 Information Management: A Proposal (情報管理:提案)」を執筆。彼が以前から持っていた Web システム の素案を目に見える形で提案。 ● 1990 年 11 月 World Wide Web をより具体化した提案書を発表。 1990 年 11 月 13 日から開発が開始。 ● 1990 年 12 月~ 1991 年 1 月 現 Web サーバ群の基になる HTTP サーバ『 CERN HTTPd 』と各種ツールをクリスマス休暇中に作成。 最初の Web ページを展開( BSD 系 OS である NEXTSTEP / NeXT ワークステーションに実装)。 ● 1991 年 8 月 Web サーバとラインベースのウェブブラウザによるプロジェクト成果の要約を投稿。 これが WWW と Web サーバのデビューとなった。 ● 1992 年とそれ以降 イリノイ大学の米国立スーパーコンピュータ応用研究所 (NCSA) のロバート・マックールらが CERN HTTPd に続く 2 番目の実装となる『 NCSA HTTPd 』を開発、また同じく NCSA の学生であった マーク・アンドリーセンらが画像も表示できるウェブブラウザ NCSA Mosaic を開発し急速に普及。 ※この時点では、 Web サーバの主役は『 CERN HTTPd 』や『 NCSA HTTPd 』 ⇒ 改修が進まないという不満が募る。 ⇒ NCSA HTTPd に修正を加えるためのパッチ (patch) を集積するプロジェクトを開始。 ⇒ プロジェクトに Apache Group という名前を付け、派生版である Apache HTTP Server が誕生。 13. 03 . Apache WEB サーバ 出典: http://www.w3.org/History/1994/WWW/Journals/CACM/screensnap2_24c.gif 世界最初の WWW ブラウザ ティム・バーナーズ=リー氏 NCSA Mosaic ブラウザ 14. 03 . Apache WEB サーバ ■ Apache が注目される理由 ①.ライセンスフリー ②.無保証/無対応 ③.高い信頼性 ④.高い安定性と軽快な動作 ⑤.豊富な機能 ⑥.多彩な動作環境 (参照) Apache ハンドブック P.3 15. 03 . Apache WEB サーバ ■ Apache HTTP Server の系譜 ◎ Apache バージョン 1.3x 系 ⇒ 最も”枯れた”バージョンでバグフィックスやパッチも豊富 ⇒ 非常に安定的な動作 ◎ Apache バージョン 2.0x 系 ⇒ コア部分に MPM, APR などの大幅な変更 ⇒ マルチスレッド対応やモジュール追加など新機能を導入 ◎ Apache バージョン 2.2x 系 ⇒ 認証やキャッシュなどの 2.0x 系の機能強化が主 ⇒ MPM なども新たな機能が追加 16. 03 . Apache WEB サーバ 出典: http://d.hatena.ne.jp/end0tknr/20090107/1231275627 ■ MPM ( Multi-Processing-Module ) (参照) prefork アーキテクチャ (参照) worker アーキテクチャ 参考: winnt アーキテクチャ 17. 03 . Apache WEB サーバ ■ APR ( Apache-Portable-Runtime ) 出典: http://blog.csdn.net/yacsha/archive/2007/05/19/1616402.aspx プラットフォーム間の 違いを吸収する API 群 18. 03 . Apache WEB サーバ ■ APR に含まれるプラットフォーム非依存の機能 ①.動的メモリアロケーションとメモリプール ②.分割不能操作(アトミックオペレーション) ③.ライブラリの動的読み込み ④.ファイル入出力 ⑤.コマンド引数の構文解析 ⑥.ロック ⑦.ハッシュテーブルと配列 ⑧. mmap ⑨.ソケットとプロトコル ⑩.スレッド/プロセス/ミューテックス ⑪.共有メモリ ⑫.時間関係 ⑬.ユーザ ID とグループ ID 関係 19. 04 . Apache とネットワーク ■ OSI 参照モデルと TCP/IP 出典: http://blog.csdn.net/yacsha/archive/2007/05/19/1616402.aspx (参照) Apache ハンドブック P.5 ~ P.8 ビット フレーム パケット セグメント/データグラム メッセージ 20. 04 . Apache とネットワーク ■ IP アドレスとネットマスク 出典: http://www.atmarkit.co.jp/fwin2k/network/baswinlan007/baswinlan007_03.html 21. 04 . Apache とネットワーク ■ ウェルノウン( well-known )ポート ポート TCP/IP プロトコル 用途 20 TCP ftp-data ファイル転送(データ本体) 21 TCP ftp ファイル転送(コントロール) 22 TCP ssh リモートログイン(セキュア) 23 TCP telnet リモートログイン 25 TCP smtp メール送信 53 TCP/UDP domain DNS ( UDP :名前解決 , TCP :ゾーン転送) 67 UDP boot/dhcp (server) IP アドレスの自動取得 68 UDP boot/dhcp (client) IP アドレスの自動取得 69 UDP tftp ファイル転送 80 TCP http www 110 TCP pop3 メール受信 123 UDP ntp 時刻合せ 143 TCP imap メール受信 443 TCP https www (セキュア) 520 UDP rip ルーティングプロトコル 22. 04 . Apache とネットワーク 【簡易実習】 ①. ipconfig ②. netstat ③. route ④. nslookup ⑤. tracert ⑥. ping 23. 05 . Apache のインストール 【実習】 ①. Apache 2.2.16 のインストール ※その他いくつかのツールも併せてインストール ②. Apache の起動/停止 ③. http サービスの確認 - ブラウザ - コマンドプロンプト - タスクマネージャ - コントロールパネル - telnet - WFetch (ツール) - WireShark (ツール) … ※他の受講生のサーバへのアクセス前提 ④. Xperia, IS01 から LAN 経由接続確認 24. 05 . Apache のインストール(補足) ■ HTML の基本 ※ その他のタグは「 HTML タグボード( http://www.dspt.net/ )」等を参考 <html> </html> <head> <title> WEB ページのタイトル </title> </head> <body> </body> <h1> 見出し </h1> <p> 段落 <br/> (※改行) </p> 25. 06 . Apache のモジュール 【実習】 ①. Apache の built-in モジュール確認 ②. modules ディレクトリの確認 ⇒ http://httpd.apache.org/docs/2.2/ja/mod/ も一読 ※大まかな Apache の機能を把握 (参照) Apache ハンドブック P.38 ~ P.39 26. 07 . Apache の設定 【実習】 ①. Apache インストールディレクトリ再確認 【実習】 ①. httpd.conf ファイルのバックアップ ②.基本的なディレクティブ確認 - ServerName - DocumentRoot - ServerRoot - ErrorLog - PidFile … ※明記されていないがデフォルト値確認 - TypesConfig - ErrorDocument ③.ディレクティブの変更&動作確認 - DocumentRoot - ErrorDocument (参照) Apache ハンドブック P.41 ~ P.42 (参照) Apache ハンドブック P.63 ~ P.68 27. 07 . Apache の設定 【実習】 ①.主なブロックディレクティブ確認 - <VirtualHost> … ※詳細は別途説明 - <Directory> - <Files> - <Location> - <IfDefine> - <IfModule> 【実習】 ①. KeepAlive ディレクティブの設定 - KeepAlive - KeepAliveTimeout - MaxKeepAliveRequests ②. ab ( Apache Bench )による動作の変化 注.外部の公開サーバへの ab の実行は DoS 攻撃とみなされる可能性アリ! (参照) Apache ハンドブック P.77 ~ P.80 (参照) Apache ハンドブック P.85 28. 08 . VirtualHost (仮想ホスト) ■ Virtual Host ◎ Virtual Host とは… 「 1 台の 物理的なホスト 上に 複数の論理的なホスト を構築する機能」 ◎ Virtual Host 機能が無い場合 ①.サーバを複数台(物理的)用意する ⇒ マシンの設備投資及び物理的なロケーションが必要 ⇒ 必然的に IP アドレスも複数必要 ②. Ethernet カードを複数(物理的)用意する ⇒ 設備投資は小さいが IP アドレスが複数必要 ⇒ 複数の Apache (※親プロセス)によるリソースの大量消費 ③. Virtual-InterFace ( VIF )を利用する ⇒ 設備投資は不要だが IP アドレスは複数必要 ⇒ リソース消費は上記同様 29. 08 . VirtualHost (仮想ホスト) ■ Virtual Host ◎名前ベースバーチャルホスト ○ IP アドレスベースバーチャルホスト ○ポートベースバーチャルホスト 【実習】 ①.バーチャルホストを構築 ⇒ ホスト名(例. www.vhosts.com )を 2 ~ 3 つ作成 ②.スタンドアロン環境での動作確認 ⇒ hosts ファイル利用 ③. LAN 環境での動作確認 ⇒ 簡易 DNS サービスを利用 (参照) Apache ハンドブック P.99 ~ P.105 30. 08 . VirtualHost (仮想ホスト) 出典: http://rina.jpn.ph/~rance/linux/apache/virtualhost.html 31. 09 .認証 出典: http://itpro.nikkeibp.co.jp/article/COLUMN/20080513/301605/?ST=oss Basic 認証の仕組み Digest 認証の仕組み (参照) Apache ハンドブック P.113 ~ P.126 32. 09 .認証 【実習】 ①.” .htaccess” ファイル作成 ②. Basic 認証の環境構築 ③.ブラウザ等による動作確認 ④. WFetch による確認 ⑤. WireShark による確認 (参照) Apache ハンドブック P.139 ~ P.144 33. 09 .認証(補足) ■ 個体識別情報(取得方法) キャリア 種別 取得方法等 docomo 個体識別情報 UserAgent より取得 ※ html タグに” utn ” 文字列を指定 i モード ID ( guid ) HTTP リクエストにクエリ文字列 “ guid=ON ” を付与 au 個体識別情報( EZ 番号) ※ サブスクライバ ID HTTP 拡張ヘッダ” X-UP-SUBNO ” より取得 softbank 個体識別情報 UserAgent より取得 X_JPHONE_UID HTTP 拡張ヘッダ” X-JPHONE-UID ” より取得 34. 09 .認証(補足) ■ 個体識別情報(実際の値) ◎ docomo ・ FOMA 端末: DoCoMo/2.0 YYYY(c10; serXXXXXXXXXXXXXXX ; iccxxxxxxxxxxxxxxxxxxxx ) ※ FOMA 端末製造番号 ⇒ serXXXXXXXXXXXXXXX ( 15 桁英数字) ※ UIM 製造番号 ⇒ iccxxxxxxxxxxxxxxxxxxxx ( 20 桁英数字) ・ 非 FOMA 端末: DoCoMo/1.0/X503i/c10/ ser*********** ※製造番号 ⇒ ser*********** ( 11 桁英数字) ◎ au ・ 全端末: xxxxxxxxxx_xx.ezweb.ne.jp ※ EZ 番号(サブスクライバ ID ) ⇒ xxxxxxxxxx_xx ( 10 桁 _2 桁英数字) ◎ softbank ・ 3GC 型端末 SoftBank/1.0/910T/TJ001/ SN*************** ※製造番号 ⇒ SN*************** ( 15 桁英数字) 35. 10 . MIME タイプ 【実習】 ①. mime.types を確認 ②.講師 http サーバ( Apache )より各種コンテンツ DL ⇒ WireShark / WFetch にて通信内容確認 ※ WFetch 使用時はヘッダのみ表示 ③. Content-Type の確認及びブラウザ動作確認 ⇒ DL されるもの/オープンされるもの (参照) Apache ハンドブック P.145 ~ P.147 36. 11 .インデックス 【実習】 ①. DirectoryIndex の値を変更&動作確認 ②.ディレクトリ一覧表示/非表示の設定&動作確認 ⇒ Options の設定を変更 (参照) Apache ハンドブック P.178 ~ P.182 37. 12 .セキュリティ 出典: http://www.twsvc.com/about_ssl (参照) Apache ハンドブック P.243 ~ P.301 38. 12 .セキュリティ 【実習】 ①.サーバ証明書(※自署)の作成 ②. Apache + OpenSSL の設定 ③. https ( 443 )の動作確認 ④. WireShark による通信内容の暗号化確認 39. 13 . PHP 【実習】 ①. PHP 5.2.14 のインストール ②. Apache + PHP の実行環境構築 ③. phpinfo() を利用したサンプル作成&動作確認 ④. User-Agent を表示するサンプル作成&動作確認 ※個体識別情報の表示&動作確認もチャレンジ! ⑤. Firefox & FireMobileSimulator を利用した動作確認 (参照) Apache ハンドブック P.363 ~ P.369 40. 14 .ログの記録 【実習】 ①. httpd.conf のデフォルト設定を確認 ②. tail コマンドによる access.log, error.log の確認 ③.ログフォーマットの変更設定&動作確認 ④. server-status の出力内容を再確認 ⑤. Analog によるログ解析&結果確認 (参照) Apache ハンドブック P.225 ~ P.241 41. 質疑 ~ ご意見/ご提案など ~ 忌憚ないご意見をお願い致します。 43. (付録)大規模サイトにおける Apache 2 台 1 組 1. 画像変換(縮小) 2. テンポラリ置き場 3. ストレージに転送 4. Mapping DB に追加 出典:大規模画像配信を支える Perl