Apache(アパッチ)は現在のWeb開発で最も多く使用されているWebサーバーのうちの一つです。
ここではApacheとは,Apacheの設定方法などApacheの基礎的な部分を紹介します。
httpd.confの設定と基本的な使い方については、httpd.confの設定と基本的な使い方を参考にしてみてください。
Apacheとは
Apache(アパッチ)とは、ブラウザからのHTTPリクエストを受け取り、HTMLや画像などのファイルを返すWebサーバーソフトウェアです。
正式名称はApache HTTP Serverで、Apacheソフトウェア財団がオープンソースで開発しています。
現在の主流バージョンは2.4系で、Windows・Mac・Linuxのどれでも動きます。
モジュール単位で機能を追加したり、削除したりできるのが特徴で、PHPやWordPressを動かすレンタルサーバーの多くもApacheを採用しています。
同じWebサーバーにはNginx(エンジンエックス)もあります。
Apacheは.htaccessでディレクトリごとに設定を変えられる柔軟さがあり、Nginxは静的ファイルの配信や同時接続に強い、という違いがあります。
ApacheはWeb3層アーキテクチャのプレゼンテーション層
Apacheは、Web3層アーキテクチャのプレゼンテーション層にあたります。
Web3層アーキテクチャ(Web3層構造)は、作成するWebシステム全体のサーバー構造のことで、Webアプリケーション(Webシステム)を構築するときの物理的なサーバーの構造のことです。
- プレゼンテーション層
- アプリケーション層
- データ層
Web3層アーキテクチャは、上の3つで構成されています。
プレゼンテーション層は、Webサーバーと呼ばれたりもします。
役割としては、HTTPリクエストの送受信や、
静的コンテンツ(HTML/CSS/JavaScript/画像/動画…)を配信することです。
アプリケーション層(アプリケーションサーバー)は、アプリケーション(Java/SpringBoot)・動的処理を実行します。ビジネスロジックの実行を担います。
データ層(DBサーバー)は、データの保持(書き込み、取得)などデータベースの機能を提供します。MySQL、PostgreSQLなどです。
Web3層アーキテクチャ(Web3層構造)とMVCフレームワーク
MVCフレームワークは、3層の真ん中、アプリケーションサーバーでアプリケーションを構築するときのモジュール構成(クラス構成)のことなので、Web3層アーキテクチャの一部の層の話ということになります。
Apacheのモジュール
Apacheはモジュール単位で機能を追加、削除できます。そのモジュールを一部紹介します。
- mod_auth_basic:基本認証
- mod_dir: ディレクトリ毎に設定
- mod_rewrite: URLの書き換え
などがあります。
mod_auth_basicを読み込めば、ベーシック認証を付与できます。
現在読み込まれているモジュールは、httpd -M(またはapachectl -M)で一覧できます。
mod_rewriteの具体的な書き方は、RewriteRuleでURLを書き換える方法を参考にしてみてください。
Apacheの設定方法
- Apacheの設定は、httpd.conf、または.htaccessファイルに記載します。
- ディレクティブ名は大文字小文字を区別しません(引数のパスなどは区別されます)。
- セクションによって、適用範囲を指定できます。
- ディレクティブによって設定値を変更します。
ディレクティブを設定ファイル(httpd.conf、または.htaccessファイル)に追記していくことで、設定内容を変更できます。
httpd.confはサーバー全体の設定で、変更後はApacheの再起動(またはapachectl graceful)が必要です。
.htaccessはディレクトリ単位の設定で、ファイルを置くだけで即時反映されますが、httpd.conf側でAllowOverrideが許可されていないと無視されます。
設定を書き換えたのに反映されないときは、まずapachectl configtestで文法エラーがないかを確認し、次にどのファイルが読み込まれているかを確認します。
ディレクティブを書ける場所(コンテキスト)の違いはApacheのディレクティブとコンテキストとは、.htaccessの書き方はApache .htaccessの書き方と使い方、エラーログの場所はApacheログの場所と確認方法にまとめています。