UbuntuまたはDebian VPSでApache Webサーバーを構成する方法

導入

Apacheはインターネット上で最も人気のあるウェブサーバーの1つです。現在稼働しているウェブサイトの半分以上を提供しています。コンテンツを提供するためには多くの適切なウェブサーバーがありますが、Apacheの動作原理を理解することは有益です。

この記事では、一般的な設定ファイルとそれらで制御できるオプションについて調査します。この記事では、Ubuntu/DebianのApacheファイルのレイアウトに従いますが、他のディストリビューションが構成階層をどのように構築するかとは異なります。

前提条件

Ubuntuバージョン16.04またはそれ以下を使用している場合は、これらのバージョンのサポートがUbuntuによって提供されなくなったため、より最新のバージョンにアップグレードすることをお勧めします。このガイドのコレクションが、Ubuntuバージョンのアップグレードに役立ちます。

  • Ubuntuを実行しているサーバーと、sudo権限を持つノンルートユーザー、アクティブなファイアウォールが必要です。これらの設定方法についてのガイダンスは、このリストからディストリビューションを選択し、当社の初期サーバーセットアップガイドに従ってください。

  • Apacheの設定を探索する前に、サーバーにApacheをインストールしておく必要があります。UbuntuにApache Webサーバーをインストールする方法については、「UbuntuにApache Webサーバーをインストールする方法」のチュートリアルに従って学ぶことができます。22.04 / 20.04 / 18.04、またはDebian 10にApache Webサーバーをインストールする方法のチュートリアルに従ってください。

UbuntuでApache Webサーバーを設定する5つの手順

  1. Apacheファイル階層
  2. Apache2.confファイルの調査
  3. Apacheのグローバル設定を設定する
  4. Apache仮想ホストファイルを設定する
  5. サイトとモジュールを有効にする

ステップ1:Apacheファイル階層

Apacheは、そのメインの設定ファイルを/etc/apache2フォルダー内に保持しています。以下のコマンドを実行すると、このフォルダー内のすべてのファイルがリストされます:

  1. ls -f /etc/apache2
Output
envars sites-available . apache2.conf .. sites-enabled mods-available ports.conf magic mods-enabled conf-enabled conf-available

このディレクトリ内には、いくつかのプレーンテキストファイルといくつかのサブディレクトリがあります。ここでは覚えておくと便利な場所をいくつか紹介します:

  • apache2.conf: これはサーバーのメインの設定ファイルです。ほぼすべての設定はこのファイル内で行うことができますが、簡易性のために別々の指定されたファイルを使用することが推奨されています。このファイルはデフォルトを構成し、サーバーが設定の詳細を読み取るための中心的なアクセスポイントとなります。
  • ports.conf: このファイルは、仮想ホストがリッスンするポートを指定するために使用されます。SSLを設定している場合は、このファイルが正しいことを確認してください。
  • sites-available/およびsites-enabled/: sites-availableディレクトリには仮想ホストファイルの設定が含まれています。このフォルダー内の設定は、どのコンテンツがどのリクエストに対して提供されるかを確立します。これは、sites-enabledディレクトリにリンクして有効にすることで実現され、有効化された仮想ホスト設定ファイルが保存されます。Apacheが開始または再読み込みされると、設定ファイルとsites-enabledディレクトリ内のリンクを読み取り、完全な構成をコンパイルします。
  • conf-available/およびconf-enabled/: これらのディレクトリには、仮想ホスト設定ファイルにアタッチされていない設定フラグメントが格納されています。
  • mods-enabled/mods-available/: これらのディレクトリは、オプションでロードできるモジュールを定義します。これらのディレクトリには2つのコンポーネントが含まれています: 特定のモジュールをロードするフラグメントを含む.loadで終わるファイルと、これらのモジュールの構成を保存する.confで終わるファイルです。

Apacheの構成は単一の一枚岩のファイルではなく、新しいファイルを必要に応じて追加および変更できるモジュラーデザインを通じて行われます。

ステップ2: Apache2.confファイルの探索

Apacheサーバーのメイン構成の詳細は、/etc/apache2/apache2.conf ファイルに保持されます。
このファイルは主に3つのセクションに分かれています:

  • グローバルApacheサーバープロセスの構成
  • デフォルトサーバーの構成
  • 仮想ホストの構成。

お好みのテキストエディタでこのファイルを開きます。以下の例では nano を使用しています:

  1. sudo nano /etc/apache2/apache2.conf

UbuntuとDebianでは、このファイルはグローバルな定義を構成するために使用されます。デフォルトサーバーと仮想ホストの構成は、Include ディレクティブを使用して処理されます。
Include ディレクティブにより、Apacheは他の構成ファイルを現在のファイルに指定した位置に読み込むことができます。その結果、Apacheは起動時に包括的な構成ファイルを動的に生成します。

このファイル内には、いくつかの異なるIncludeおよびIncludeOptionalステートメントが含まれています。これらのディレクティブは、モジュール定義、ports.confドキュメント、conf-enabled/ディレクトリ内の特定の設定ファイル、およびsites-enabled/ディレクトリ内の仮想ホスト定義をロードします。

/etc/apache2/apache2.conf
…
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
…
Include ports.conf
…
IncludeOptional conf-enabled/*.conf
…
IncludeOptional sites-enabled/*.conf

ステップ3:Apacheグローバル設定のセットアップ

グローバル設定で変更したいオプションがいくつかあります:

タイムアウト

デフォルトでは、このパラメータは300に設定されています。これは、サーバーが各リクエストを処理するために最大で300秒の時間制限があることを意味します。
このパラメータは、安全に30から60秒の間に設定できます。

KeepAlive

このオプションは、Onに設定されている場合、各接続が同じクライアントからの複数のリクエストを処理するために開いたままになります。
Offに設定されている場合、各リクエストは新しい接続を確立する必要があります。これは、設定やトラフィック状況によっては、かなりのオーバーヘッドになる可能性があります。

MaxKeepAliveRequests

これは、各接続が死ぬ前に処理する別々のリクエストの数を制御します。この数を高く設定すると、Apacheは各クライアントに効果的にコンテンツを提供できます。
デフォルト設定は100になっています。この値を0に設定すると、Apacheは各接続で無制限のリクエストを処理できます。

KeepAliveTimeout

この設定は、最後のリクエストを完了した後に次のリクエストを待機する時間を指定します。タイムアウトの閾値に達すると、接続が切断されます。
これはつまり、次にコンテンツが要求されると、サーバーがページを構成するコンテンツの要求を処理するために新しい接続を確立することを意味します。デフォルトは5に設定されています。

この設定ファイルの内容を調べた後は、CTRL+Xを押して閉じることができます。

マルチプロセッシングモジュール

A Multi-Processing Module (MPM) extends Apache’s modular design. MPMs are responsible for listening, directing, and handling different network requests. You can cross-reference which section your Apache installation was compiled in with using the following command:

  1. apache2 -L
Output
Compiled in modules: core.c mod_so.c mod_watchdog.c http_core.c mod_log_config.c mod_logio.c mod_version.c mod_unixd.c

サーバーでMPMタイプを確認するには、a2query -Mコマンドを使用します:

  1. a2query -M
Output
event

出力によると、このサーバーでevent MPMが使用されています。インストールには複数の選択肢があるかもしれませんが、選択できるのは1つだけです。

ステップ4:Apache仮想ホストファイルの更新

デフォルトの仮想ホスト宣言は、sites-available/ディレクトリ内の000-default.confというファイルにあります。このファイルを調べることで、仮想ホストファイルの一般的な形式について学ぶことができます。

次のコマンドを使用してファイルを開きます:

  1. sudo nano /etc/apache2/sites-available/000-default.conf
/etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
…
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
…
ErrorLog ${APACHE LOG DIR}/error.log
CustomLog ${APACHE LOG DIR}/access.log combined
…

デフォルトの仮想ホストは、ポート80(標準のHTTPポート)でのすべてのリクエストを処理するように構成されています。これは、宣言ヘッダーで*:80と記述されている部分で定義されています。
ただし、これは必ずしもこのポートへのサーバーへのすべてのリクエストを処理することを意味しません。Apacheは、リクエストに一致する最も具体的な仮想ホスト定義を使用します。より具体的な定義がある場合、これらの定義が優先される可能性があります。ファイルを調べた後は、CTRL+Xを押して閉じることができます。

Apache仮想ホストの設定

以下のオプションは、他の下位サブ宣言の外で仮想ホストの定義内に設定されています。これらは仮想ホスト全体に適用されます。
まず、conf-available/ディレクトリ内のsecurity.confファイルを開いてください:

  1. sudo nano /etc/apache2/conf-available/security.conf

このファイルには、Server Signatureディレクティブが含まれており、サーバーに問題が発生した場合に使用する連絡先メールを指定できます。デフォルトのオプションをOnからEMailに変更すると、サーバー管理者のメールアドレスが表示されます。この設定を調整する場合は、メールを受信する意思があることを確認してください:

/etc/apache2/conf-available/security.conf
…
ServerSignature EMail

ファイルを閉じるには、CTRL+Xを押します。構成ファイルを編集した後、プロンプトが表示され、変更を確認するように求められます。ファイルに変更を保存するにはYを、破棄するにはNを押します。

仮想ホストファイル内で、このリクエストを処理するドメイン名またはIPアドレスを指定するServerNameディレクティブを追加できます。これは、仮想ホストに特定性を追加し、ServerNameの値と一致する場合にデフォルトの定義をオーバーライドできるオプションです。

以下のコマンドを実行して、仮想ホストファイルを開いてください。ただし、your_domain変数を実際のドメイン名に置き換えてください:

  1. sudo nano /etc/apache2/sites-available/your_domain.conf

your_domainServerNameディレクティブに追加してください。

/etc/apache2/sites-available/your_domain.conf
…
ServerName your_domain

同様に、ServerAliasディレクティブを使用して、仮想ホストを複数の名前に適用することもできます。これにより、同じコンテンツにアクセスする別のパスが提供されます。これの良い使用例は、wwwで始まる同じドメインを追加することです。

/etc/apache2/sites-available/your_domain.conf
…
ServerAlias www.your_domain.com

DocumentRootディレクティブは、この仮想ホストにリクエストされたコンテンツが配置される場所を指定します。Ubuntuでは、デフォルトの仮想ホストが/var/www/ディレクトリからコンテンツを提供するように設定されています。

/etc/apache2/sites-available/your_domain.conf
…
DocumentRoot /var/www/your_domain/public_html

ディレクトリの定義

仮想ホストの定義内には、ファイルシステム内の異なるディレクトリをサーバーがどのように処理するかに関する定義があります。Apacheはこれらの方向性を最短から最長まで順番に適用するため、以前のオプションを上書きする可能性が再びあります。

このコマンドでapache2.confファイルを開いてください:

  1. sudo nano /etc/apache2/apache2.conf
/etc/apache2/apache2.conf
…
<Directory />
        Options FollowSymLinks
        AllowOverride None
        Require all denied
</Directory>

<Directory /usr/share>
        AllowOverride None
        Require all granted
</Directory>

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>
…

最初のディレクトリ定義は、/またはrootディレクトリに対するルールを適用します。これは、ファイルシステム上で提供されるすべてのファイルに適用される基本構成を提供します。このファイルに含まれるディレクトリ構成オプションと便利なコメントに注目してください。このデフォルトの構成では、後続のディレクトリ定義で特に指定されていない限り、すべてのコンテンツへのアクセスを拒否します。

Requireディレクティブは、サーバー内のさまざまなリソースへのアクセスを制限または開くことができます。
AllowOverrideディレクティブは、.htaccessファイルがコンテンツディレクトリに配置された場合に設定を上書きできるかどうかを決定するために使用されます。これはデフォルトでは許可されていませんが、さまざまな状況で有効にすると便利です。
このファイルの内容を調べた後、CTRL+Xを押して閉じることができます。

AliasおよびScriptAliasステートメント

ディレクトリ定義は、AliasまたはScriptAliasディレクティブによって前置されることがあります。
このコマンドを使用して、仮想ホストの設定ファイルを開き、your_domain変数をドメイン名に置き換えます。

  1. sudo nano /etc/apache2/sites-available/your_domain.conf

Aliasディレクティブは、URLパスをディレクトリパスにマッピングします。たとえば、your_domainへのリクエストを処理する仮想ホストでは、次のようにすることで、your_domain.com/content/に移動すると/usr/local/apache/content/内のコンテンツにアクセスできます。

/etc/apache2/sites-available/your_domain.conf
Alias “/content/” “/usr/local/apache/content/”

ScriptAliasディレクティブは同じ方法で動作しますが、実行可能なコンポーネントが含まれるディレクトリを定義するために使用されます。

/etc/apache2/sites-available/your_domain.conf
ScriptAlias "/cgi-bin/" "/usr/local/apache2/cgi-bin/"

前のセクションで議論したように、アクセス権を持つディレクトリを定義してください。ファイルの編集が完了したら、CTRL+Xを押してファイルを終了します。このファイルに変更を加えた場合は、Yを押して変更内容をファイルに保存し、構成を変更するか、変更前の状態でファイルを残すかを指定します。

ステップ5:サイトとモジュールの有効化

要件を満たす仮想ホストファイルがある場合、Apacheに含まれるツールを使用してそれをライブウェブサイトに移行できます。
sites-availableディレクトリ内の既存ファイルに対してsites-enabledディレクトリにシンボリックリンクを作成するには、次のコマンドを入力します。自分の仮想ホストサイト構成ファイルの名前でyour_domainを置き換えてください。

  1. sudo a2ensite your_domain

サイトを有効にした後、次のコマンドを入力してApacheにその構成ファイルを再読み込みさせ、変更を適用します。

  1. sudo systemctl restart apache2

仮想ホストを無効にするための関連コマンドもあります。これはsites-enabledディレクトリからシンボリックリンクを削除することで機能します。たとえば、仮想ホストサイトが有効になっている場合、デフォルトの000-defaultサイトを無効にできます。

  1. sudo a2dissite 000-default

モジュールは、それぞれa2enmodおよびa2dismodコマンドを使用して有効または無効にできます。これらのコマンドのバージョンであるa2ensiteおよびa2dissiteも同様の方法で機能します。たとえば、infoモジュールを有効にするには、次のコマンドを使用できます:

  1. sudo a2enmod info

同様に、a2dismodコマンドを使用してモジュールを無効にすることもできます:

  1. sudo a2dismod info

設定ファイルを変更し、モジュールを有効または無効にした後は、Apacheを再起動することを忘れないでください。

結論

Apacheは多機能で非常にモジュラーなため、設定ニーズはセットアップに応じて異なります。
上記の一般的な使用例を検討した後、主要な設定ファイルが何に使用されており、それらがどのように相互作用するかについて理解が得られるはずです。特定の設定オプションについて知りたい場合は、提供されているファイルに十分なコメントが付いており、Apacheは優れたドキュメントを提供しています。設定ファイルがもはや恐ろしくなくなり、自分のニーズに合わせて実験や変更を行うことがより快適に感じられることを願っています。

Source:
https://www.digitalocean.com/community/tutorials/how-to-configure-the-apache-web-server-on-an-ubuntu-or-debian-vps