(最終更新月:2023年9月)
✔このような方へおすすめの記事です
「Apacheの設定がどういうものか詳しく知りたい」
「Apacheの設定のやり方を覚えたい」
「Apache設定の実例が目に見える形で欲しい」
✔当記事を読むことで得られる知識
- Apacheの基本的な設定について
- Apacheの設定方法とその洗練された応用
- Apache設定の実践的な例
当記事では、Apacheの基本設定から最適化まで、事例を通じて詳細な手順を紹介しています。
ぜひ最後までお読みください。
皆様のApache設定スキルの向上に必ず貢献できる内容となっています。
Apacheの設定手順
Apacheを使用する際の基本的な設定手順について詳しく解説します。
正確な設定により、Webサイトの安定性やセキュリティを向上させられるでしょう。
- インストール後のディレクトリ修正
- ポート番号の変更
- ServerNameの設定
インストール後のディレクトリ修正
Apacheをインストールしたのち、デフォルトのディレクトリ構造を、必要に応じて変更することがおすすめです。
デフォルトのディレクトリ構造は一般的な用途に適しているものの、特定のプロジェクトやセキュリティ上の要件に応じて変更することが望ましい場合があります。
/etc/httpd/
(Ubuntuの場合、/etc/apache2/)
このディレクトリにはApacheの主要な設定ファイルやモジュールの設定が格納されています。独自の設定やモジュールを追加する場合、このディレクトリ内を編集する必要があります。/var/www/html
これはデフォルトのドキュメントルートで、ウェブサイトの公開ファイルやディレクトリが配置されます。異なるパスにドキュメントルートを設定するには、Apacheの設定ファイルでDocumentRoot
ディレクティブを変更します。
ポート番号の変更
デフォルトではApacheはポート80で動作しますが、異なるポート番号で動作させることも可能です。
httpd.conf
または適切な設定ファイル内のListen
ディレクティブを変更します。
Apacheをポート8080で動作させる場合、以下のように設定します。
Listen 8080
ServerNameの設定
ServerName
ディレクティブは、Apacheサーバーがどのドメイン名やIPアドレスで応答するかを指定します。
これは特に仮想ホストを使用して複数のウェブサイトを同じApacheインスタンスでホストする場合に重要です。
ServerName www.example.com
ServerName
を正確に設定することで、クライアントのリクエストが正確なウェブサイトやアプリケーションにルーティングされることを確保します。
誤った設定は、リクエストが誤ったサイトにルーティングされる原因となるため、注意が必要です。
任意の設定方法
Apacheの基本設定の次に、より詳細な設定方法を学びましょう。
サイトの動作を最適化する方法です。
- ドキュメントルートの変更
- 設定ファイルの読み込み方
- 仮想ホストの設定手順
ドキュメントルートの変更
ドキュメントルートは、クライアントからのリクエストが対象とするファイルやディレクトリの基準となる場所です。
デフォルトのドキュメントルート(多くの場合 /var/www/html
)以外の場所にウェブコンテンツを置く場合や、特定のプロジェクトのために異なるルートを設定する場合に変更することがあります。
httpd.conf
または適当な設定ファイルにある DocumentRoot
ディレクティブを変更することで可能です。
DocumentRoot "/path/to/your/webroot"
<Directory "/path/to/your/webroot">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
設定ファイルの読み込み方
Apacheの主要な設定ファイルは httpd.conf
ですが、実際には多くの追加設定やモジュールの設定は別のファイルに格納されています。
それらのファイルは、大元の httpd.conf
からインクルードされて読み込まれているのです。
これにより、設定を整理しやすく、モジュールごとやサイトごとに分割できます。
IncludeOptional conf/extra/httpd-vhosts.conf
仮想ホストの設定手順
仮想ホストを使用すると、ひとつのApacheサーバーインスタンスで複数のWebサイトをホストできます
基本的な手順は以下のとおりです。
httpd.conf
または適当な設定ファイルで、NameVirtualHost *:80
ディレクティブを有効にする- 同じファイル内に
<VirtualHost>
ブロックを追加し、各サイトの設定を記述する
<VirtualHost *:80>
ServerAdmin webmaster@example1.com
DocumentRoot "/path/to/site1"
ServerName example1.com
ErrorLog "logs/example1.com-error.log"
CustomLog "logs/example1.com-access.log" common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@example2.com
DocumentRoot "/path/to/site2"
ServerName example2.com
ErrorLog "logs/example2.com-error.log"
CustomLog "logs/example2.com-access.log" common
</VirtualHost>
PHPの基本設定方法
Apacheと連携して動作させるPHPの設定方法について詳しく解説します。
PHPは動的なWebページの生成に広く使用されるスクリプト言語であり、Apacheとの組み合わせは非常に一般的です。
- PHP インストール手順
- PHP設定の調整
PHP インストール手順
PHPをApacheと連携させる前に、まずはPHP自体をインストールする必要があります。
異なる方法でのインストール手順を見ていきましょう。
- yumを使用したインストール方法
- MacPortsを使用したインストール方法
yumを使用したインストール方法
CentOSやRed HatなどのLinuxディストリビューションでのPHPのインストールは、yumパッケージマネージャを使用して簡単に行うことができます。
sudo yum install php
このコマンドを実行することで、最新のPHPがインストールされます。
MacPortsを使用したインストール方法
Macユーザーは、MacPortsを使用してPHPをインストールすることができます。
sudo port install php
このコマンドを実行することで、MacにPHPがインストールされます。
PHP設定の調整
PHPをインストールした後、Apacheとの連携をスムーズにおこなうための設定調整が必要です。
- PHPモジュールのパス設定
- 実行可能なPHPの拡張子の設定
PHPモジュールのパス設定
ApacheがPHPモジュールを正しく読み込むためには、httpd.conf
に以下の行を追加する必要があります。
LoadModule php_module modules/libphp.so
実行可能なPHPの拡張子の設定
PHPスクリプトを実行するためには、ApacheにどのファイルをPHPとして扱うかを知らせる必要があります。
以下の設定をhttpd.conf
に追加します。
AddType application/x-httpd-php .php
Apache設定エラーの解決法
Apacheの設定中にはさまざまなエラーが発生する可能性があります。
以下は主なエラーと、その解決方法です。
エラーカテゴリ | 症状 | 原因 | 解決方法 |
---|---|---|---|
構文エラー | Apacheが起動しない | 設定ファイルの誤ったディレクティブや構文 | httpd -t でエラー箇所確認、該当箇所の修正 |
ポート競合 | Apacheが特定のポートで起動できない | 別のアプリケーションが同じポート使用中 | 使用中のポート確認、競合アプリの停止またはApacheのポート変更 |
設定ファイルの読み込みエラー | 指定した設定ファイルが見つからない、読み込めない | ファイルパスの誤り、欠落、パーミッション問題 | 正しいパス指定、ファイル配置、適切なパーミッション設定 |
モジュールのエラー | 指定したモジュールが読み込めない、動作しない | モジュールのパス誤り、未インストール、互換性問題 | モジュールのパス確認・修正、インストール、適切なバージョン利用 |
SSL/TLS設定の問題 | HTTPS接続不可、証明書エラー表示 | 証明書や鍵ファイルの問題、設定の不備 | 証明書や鍵のパス確認、設定見直し、証明書の有効期限/一致確認 |
Apache設定の凡例
Apacheの設定を最適化するためのヒントや、より高度な設定方法について解説します。
- セキュリティ強化のための設定
- パフォーマンス向上のための設定
セキュリティ強化のための設定
セキュリティ強化には以下のような設定を見ていく必要があります。
- ServerTokens と ServerSignature
- ServerSignature
- SSL/TLS の使用
- セキュアなHTTPヘッダーの追加
1. ServerTokens と ServerSignature
ServerTokensは、クライアントに返されるサーバーの応答ヘッダーに表示される情報を制御するもの。
セキュリティを強化するためには、最小限の情報だけを表示する設定 (Prod
) が推奨されます。
ServerTokens Prod
2.ServerSignature
これは、サーバー生成のページ(例えばエラーページ)のフッターにApacheのバージョン情報などを表示するかを制御します。
セキュリティの観点からは、Off
に設定することがおすすめです。
ServerSignature Off
3. ディレクトリのリスティングを禁止
ディレクトリにインデックスファイルがない場合、その内容が公開されてしまうことを防ぐために、以下の設定をおこないます。
Options -Indexes
4. SSL/TLS の使用
HTTPS を使用してデータの暗号化を行い、Man-in-the-Middle攻撃などからサイトを守ります。
Let’s Encryptのようなサービスを使用して無料のSSL証明書を取得することも可能です。
5. セキュアなHTTPヘッダーの追加
例えば、Header set
ディレクティブを使用して、セキュリティヘッダーを追加できます。
パフォーマンス向上のための設定
パフォーマンス向上のための設定をご覧いただきます。
- コンテンツ圧縮 (mod_deflate)
- キャッシング (mod_expires と mod_headers)
- KeepAlive
- ワーカー数や接続数の調整
1.コンテンツ圧縮 (mod_deflate)
mod_deflate
モジュールを使用して、テキストベースのコンテンツを圧縮することで、帯域幅の使用を減少させ、ページの読み込み時間を短縮します。
2. キャッシング (mod_expires と mod_headers)
静的コンテンツのキャッシュ設定を最適化して、ブラウザの再度のリクエストを減少させます。
<FilesMatch ".(jpg|jpeg|png|gif|js|css)$">
ExpiresActive On
ExpiresDefault "access plus 1 year"
</FilesMatch>
3. KeepAlive
KeepAlive を On
に設定することで、複数のリクエストを同じコネクションで処理できるようになります。
4. ワーカー数や接続数の調整
MaxRequestWorkers
や MaxConnectionsPerChild
などの設定を最適化することで、リソースの使用を最適化し、サーバーの応答性を向上させられます。
上記は一部の一般的なセキュリティ強化とパフォーマンス向上のための設定です。
サーバーの状態やニーズに応じて、適切な設定を行うことが重要です。
まとめ
当記事の内容をまとめます。
- apacheの設定では、ドキュメントルートなどを確認・変更するところから始めよう
- 複数のドメインで運用するならServerNameの設定が必須
- 設定を目的ごとに分割することで、あとからの変更が容易になる
Apacheは設定により、さまざまなことが可能です。
Dockerなどを活用することで、お試しの環境を構築できます。
ぜひいろいろと触りながら、学んでみてください。