(1) Apache HTTP Serverとは?概要や主要な機能についてご紹介
(1-1) Apacheとは?
(1-2) Apacheの主な機能
(1-3) Apacheの使用例
(1) Apache HTTP Serverとは?概要や主要な機能についてご紹介
(1-1) Apacheとは?
・Apacheは非常に有名なOSS(ソースが公開されており拡張や再配布が可)のHTTPサーバー(インターネットを通じてコンテンツを提供するコンピュータ)で、高いシェアを誇っています(世界の約40%のウェブサイトで利用されていると言われています)。
・Apache自体はWebアプリを提供するための1コンポーネントであり、実際は複数のソフトウェアが連携する事でWebサーバーとしての役割を果たします。
・よくある構成の例では、LAMP(Linux、Apache、MySQL、PHP/Perl/Pythonの頭文字を取った単語)が非常に有名です。
(表)
名称 | 区分 | 概要 |
Linux | OS | アプリケーションの操作を担当するOSです。 |
Apache | Webサーバー | HTTP通信によりクライアントからのリクエストを受けて、資源やコンテンツをレスポンスとして返却します。 |
MySQL | データベース | 全てのデータを保持するデータベースで、照会や更新処理を容易にします。 |
PHP | CGIプログラム | Apacheと連携して動的なコンテンツを生成するためのプログラミング言語です。 |
(図111)
(補足)
・PHPは元々cgiwrapプロセス(CGIスクリプトにアクセスする為のプロセス)における「CGIスクリプト」として設計され、画面を処理・表示する役割を果たしていました。
・CGIはCommon Gateway Interfaceの略で、Webサーバが受領したリクエストを、アプリケーションに連携(処理依頼)し、その結果を受け取りクライアントに返すための仕組みです。CGIの役割を果たすプログラムは様々な言語で作る事が出来て、C言語等のコンパイル言語で作られているものもあれば、PerlやPHPなど色々な種類があります。
・cgiwrapプロセスを使用するためには、ウェブサイトの「public_html」ディレクトリ配下に「cgi-bin」というフォルダを作成して、配下にCGIのスクリプトを配置していきます。
(1-2) Apacheの主な機能
Apacheにはおおくの機能が備わっていますが、いくつか代表的なものをピックアップしてご紹介いたします。
(表)Apacheの主要な機能
No | 機能名 | モジュール名 | 説明 |
1 | 静的コンテンツの処理 | – | – |
2 | モジュールの追加削除 | – | Apacheはモジュールベースで作られており、必要な機能のみを追加し、不要なモジュールを削除する事で、より高速に動作させる事ができます。 |
3 | Perl、PHPの利用 | – | – |
4 | 自動インデックス | mod_autoindex | ディレクトリのインデックスを生成するコマンドで、Linuxの「ls」やWindowsの「dir」コマンドと似ています。 この機能は、訪問者にWebサイトのディレクトリをブラウジングしてもらう際などで使用します。 |
5 | .htaccess | core mod_authn_file mod_authz_groupfile mod_cgi mod_include mod_mime |
「.htaccess」は「分散設定ファイル」と呼ばれており、ディレクトリ(≒フォルダ)単位で設定を変える機能を提供します。 |
6 | IPv6対応 | core mpm_common |
Apacheの「バインディング」と呼ばれる、Apacheで使うアドレスやポートの設定をする機能にてIPv6に対応しています。
Apacheは起動時にマシンのポートやアドレスに接続し、リクエストを待ちます。デフォルトでは全てのポート、アドレスが対象となりますが、それを防ぐために「バインディング」で特定のポートやアドレスに限定します。 |
7 | HTTP/2対応 | mod_http2 | ApacheにおけるHTTP/2の機能は「mod_http2」と呼ばれるモジュールにて実装されており、http/httpsのいずれでも利用可能です。
ApacheのHTTP/2では新機能として「Server Push」が利用できます。「Server Push」はクライアントから来ていないリクエストに対するレスポンスをクライアントに届ける事が出来る機能です。なぜこのような機能があるか?といいますと「殆どの場合でクライアントが利用する」であろうコンポーネントを、事前にこちらから送付するケースなどで利用するためです。 |
8 | FTP接続 | mod_ftp | Apache(HTTPサーバ)に対するFTPプロトコルによるファイル送受信の機能を提供します。 |
9 | Gzip圧縮 | mod_deflate | Apache(HTTPサーバ)からの出力をネットワーク越しにクライアントに送る際に「圧縮」や「解凍」をするための機能です。 |
10 | 帯域制限 | mod_ratelimit | 「RATE_LIMIT」と呼ばれるフィルタをを作り、クライアントの帯域(=単位時間当たりのデータ送信量≒通信速度)を制限します。 この絞りはHTTPレスポンス単位で適用されます(IPアドレス/ホスト単位ではない) |
11 | 負荷分散 | mod_proxy mod_proxy_balancer |
Apacheのロードバランサー機能(負荷分散)です。方式は「リクエスト回数」に基づく分散と、「トラフィック量」に基づく分散との2種類が選択できます。 |
12 | セッショントラッキング | mod_session | ユーザー単位のセッション(通信の開始~終了まで)管理を提供します。これによりユーザーのログイン状態を保持したりといった処理が可能となります。 |
(1-3) Apacheの使用例
文章だけではイメージが湧きにくい部分もあると思いますので、実際にApacheを使った事例を少しご紹介いたします。
①Apacheのインストール
⇒【導入】CentOS7にApacheをインストール
②Apacheのリバースプロキシの利用
⇒【利用例】ApacheのリバースプロキシによるURLのポート番号非表示
③Apacheの仮想ホスト機能のご紹介
⇒【機能紹介】1つの物理サーバに複数のIPアドレスやドメインを設定する方法