ブログに戻る

UbuntuまたはDebian VPSでのApache Webサーバーの設定

UbuntuまたはDebian VPSでのApache Webサーバーの設定

はじめに

Apacheは、現在世界で最も広く使用されているWebサーバーです。20年以上前に開発されたオープンソースソフトウェアであり、the Apache Software Foundationによって保守されています。2020年9月現在、世界の全Webサイトトラフィックの35%.

を処理していると推定されています。開発者は、その速度、セキュリティ、信頼性、堅牢性、そしてカスタマイズの容易さからApacheを好みます。さらに、Apacheはさまざまな拡張機能やモジュールのインストールが可能なため、多くの環境のニーズを満たすことができます。これは、開発者やサーバー管理者がさまざまな目的に合わせて変更できる一連の設定のおかげで可能になります。このチュートリアルでは、UbuntuおよびDebianサーバーで異なる結果に影響を与える可能性のある、一般的な設定ファイルとオプションについて説明します。

DebianUbuntuは、最もよく選ばれるサーバーオペレーティングシステムのトップクラスに入ります。この2つには多くの共通点があります。例えば、どちらもAPT package managerDEB packages を手動インストールに使用します。Apacheの設定やディレクトリ構造の扱いも同様です。そのため、どちらのオペレーティングシステムでもこのチュートリアルを進めることができます。まず、こちらのチュートリアルに従って、いくつかのステップでUbuntuサーバーをセットアップできます。.

次に、sudo権限を持つ非rootユーザーとしてログインし、始めましょう!

UbuntuおよびDebianにApacheをインストールする方法

サーバーにまだApacheがインストールされていない場合は、1つのコマンドで簡単にインストールできます。まず、アップデートコマンドを実行します。

次に、以下のコマンドを実行してApacheをインストールします。

インストールが完了したら、次のコマンドを使用してインストールされたバージョンを確認できます。

このチュートリアル執筆時点でのバージョンは以下の通りでした:

Apache Web Server

その後、サーバーのIPアドレスまたはドメイン名にアクセスします。デフォルトのApacheインデックスページが表示されるはずです。

Apache Web Server

UbuntuおよびDebianディストリビューションにおけるApacheのファイル階層

UbuntuとDebianディストリビューションはどちらもapt package managerを使用しています。同様に、パッケージをインストールすると、同様のファイル階層が作成されます。今回のケースでは、UbuntuとDebianの両方で、Apacheは設定ファイルを「/etc/apache2」ディレクトリ内に保持します。次のコマンドを使用してディレクトリに移動し、ディレクトリの内容を一覧表示します。

コマンドの出力は、以下のスクリーンショットで確認できます。

screenshot

Apacheサーバーのセットアップを設定する際に知っておくべき、いくつかのファイルとサブディレクトリが表示されています。以下にその説明を示します。

  • apache2.conf – Apacheサーバーのメイン設定ファイルです。また、すべてのデフォルト設定が含まれています。ほぼすべての設定をこのファイル内から行うことができますが、シンプルさを保ち、このデフォルトファイルが破損するのを防ぐために、常に個別の専用ファイルを使用することをお勧めします。
  • conf-available – 追加のローカル設定ファイルや、まだどのモジュールにも関連付けられていない他のアプリケーションのファイルが含まれるディレクトリです。このディレクトリ内の設定は、有効にしない限りアクティブになりません。コマンドa2enconf  を使用して設定ファイルを有効にできます。このディレクトリの内容は以下の通りです:

Apache Web Server

  • conf-enabled – 対応するモジュールに関連付けられた、追加のローカル設定および他のアプリケーションの設定ファイルが含まれるディレクトリです。このディレクトリ内の設定ファイルはアクティブであり、Apacheの動作に影響を与えます。コマンドa2disconf を使用して設定ファイルを無効にできます。このディレクトリの内容は以下の通りです:

conf-enabled

  • envvars – Apache2の環境変数が含まれているファイルです。このファイル内の変数はApacheにのみ影響し、Linuxシステムには関係ありません。ファイルの内容は以下の通りです:

envvars

  • magic – ファイルのMIMEタイプを決定するための指示が含まれているファイルです。サーバーがファイルの種類を判断するのに役立ちます。
  • mods-available – モジュールをロードして設定するための設定ファイルが含まれるディレクトリです。ただし、これらはまだ有効化されていません。有効化するには、a2enmod コマンドを使用します。
  • mods-enabled – モジュールをロードして設定するための設定ファイルが含まれるディレクトリです。このディレクトリ内の設定はすでに有効化されており、対応するモジュールにリンクされています。モジュールを無効化するには、a2dismod コマンドを使用します。 
  • ports-conf – バーチャルホストに利用可能なポートと、ApacheがリスンするTCPポートを指定するファイルです。
  • sites-available – Apacheのバーチャルホスト用の利用可能な設定ファイルが含まれるディレクトリです。バーチャルホストを使用すると、Apacheは異なるウェブサイトを提供できます。このディレクトリ内のファイルはまだアクティブではありません。バーチャルホストファイルを有効化するには、次のコマンドを使用します:a2ensite.
  • sites-enabled – 有効化されたバーチャルホスト設定ファイルが含まれるディレクトリです。通常、sites-availableディレクトリ内のファイルへのシンボリックリンクが含まれています。バーチャルホストファイルを無効化するには、次のコマンドを使用します:a2dissite.

Apache設定ファイルのモジュール設計により、必要に応じてファイルを変更および追加できます。

Apache2.conf ファイルの内容

/etc/apache2/apache2.conf” にあるファイルは、Apacheのメイン設定ファイルを含んでいます。より具体的には、サーバーに指示を与える設定ディレクティブが含まれています。これは、次の3つのセクションで構成され、グローバルサーバー のプロセス設定、デフォルトサーバー の設定、およびバーチャルホスト の設定を定義します。

UbuntuおよびDebianシステムでは、ファイルの大部分にグローバルサーバープロセス設定が含まれています。下部の方には、“Include” ディレクティブを使用して、デフォルトサーバーとバーチャルホストの設定を確認できます。Apacheは “Include” ディレクティブを使用して他の設定ファイルを読み込み、ディレクティブが表示された位置から現在の設定ファイルにそれらを取り込みます。これはApacheサーバーの起動時に行われます。

apache2.conf ファイルの最下部までスクロールすると、いくつかの include ディレクティブが表示されます。これらのディレクティブは、mods-enabled ディレクトリ内のモジュール定義、ports.conf ファイル、conf-enabled ディレクトリ内のローカル設定、およびsites-enabled ディレクトリ内のバーチャルホストの設定をロードします。

グローバルサーバー設定セクション

グローバルサーバー設定セクションには、Apacheがグローバルに動作する方法を制御する設定と指示が含まれています。Apacheの動作を変更するために値を変更できるいくつかのディレクティブが用意されています。それらのいくつかについて説明しましょう:

  • Timeout – このディレクティブは、サーバーがリクエストを処理する最大時間を指定します。デフォルトは300秒ですが、より応答の速いアプリを開発している場合は高すぎる可能性があります。サーバーに十分なリソースがある場合は、これをより小さな値に変更できます。
  • KeepAlive – 同じクライアントからの複数のリクエストを処理するために、各接続を開いたままにするかどうかを指定します。デフォルトでは「On」に設定されています。ただし、「Off」に設定されている場合、同じクライアントからであっても、リクエストごとに新しい接続を確立する必要があります。これにより、サーバーに大きな負荷がかかる可能性があります。
  • MaxKeepAliveRequests – 1回の持続的な接続中に許可するリクエストの最大数を制御します。無制限の接続を許可するには、値を0に設定します。最大のパフォーマンスと効率を得るには、この数値を可能な限り高く設定します。
  • KeepAliveTimeout – 最後の接続が切断される前に、同じクライアントからの次のリクエストを待機する最大秒数を決定します。デフォルトは5秒です。この時間が経過すると、次のリクエストでは、リクエストを処理するために新しい接続が作成されます。
  • HostnameLookups – DNSルックアップを有効にするかどうかを決定します。デフォルトではオフです。有効にすると、すべてのリクエストでネームサーバーへのルックアップが少なくとも1回発生し、サーバーのパフォーマンスに大きな悪影響を及ぼします。

デフォルトのバーチャルホストファイル

Apacheサーバーを新規インストールすると、デフォルトのバーチャルホストファイルが付属しています。その名前は 000-default.conf です。これは、デフォルトのApacheのindex.htmlページを提供するファイルです。このファイルはsites-availableディレクトリに配置されます。このファイルの内容を見ることで、Apacheのバーチャルホストファイルの形式を大まかに理解することができます。次のコマンドを入力してファイルを開きます:

ファイルの内容は以下の通りです。簡潔にするためにコメントは削除しています:

設定ヘッダーの VirtualHost *:80 で確認できるように、デフォルトでこのバーチャルホストはポート80でのリクエストを処理するように設定されています。これは標準的なHTTPポートです。

Apacheは、特定のリクエストに一致する最も具体的なバーチャルホスト定義を使用するように設計されています。これは、この特定のバーチャルホストが必ずしもサーバーへのすべてのリクエストを処理するとは限らないことを意味します。むしろ、より具体的な定義を持つ別のバーチャルホストファイルがある場合、そのファイルがこのファイルよりも優先されます。

バーチャルホストファイル内のディレクティブの説明は以下の通りです:

  • ServerAdmin – サーバーに問題が発生したときに使用する連絡先メールアドレスを指定します。Apacheは通常、生成されたエラーページにこれを表示します。もし、ServerSignature を「Email」に設定すると、/etc/apache2/conf-enabled/security.conf ファイル内で、ここで指定されたメールアドレスが、mailto
  • DocumentRoot – このディレクティブは、ウェブサイトのファイルが含まれるディレクトリを指します。デフォルトのApacheのウェルカムインデックスページは、Ubuntu 20.04の /var/www/html ディレクトリにあります。
  • ErrorLog – このディレクティブは、エラーログファイルの場所を決定します。
  • CustomLog – このディレクティブは、アクセスログの場所とログの表示形式を示します。

追加のバーチャルホストディレクティブ

  • ServerName – バーチャルホストが処理すべきドメイン名またはIPアドレスを指定します。Apacheサーバーが複数のウェブサイトを提供できるように複数のバーチャルホストを定義する場合は、ServerNameディレクティブを追加し、各バーチャルホストが提供すべきドメインを指定します。
  • ServerAlias – このディレクティブは、1つのバーチャルホストファイルを複数の名前に適用できるようにし、同じコンテンツにアクセスするための代替ドメインを提供します。たとえば、ユーザーがドメイン名の前に www を付けても同じコンテンツにアクセスできるようにする場合などです。たとえば、example.com ドメインのバーチャルホストに以下を追加できます:

ディレクトリ定義ディレクティブ

実際のケースでは、ウェブサイトのファイルが複数のディレクトリに分かれている可能性が高いでしょう。デフォルトのバーチャルホストファイルには Directory ディレクティブがありません。これは、1つのindex.htmlファイルしか提供できないためです。Directory ディレクティブは、Apacheがウェブサイトのドキュメントルート内の異なるディレクトリをどのように処理するかを指定します。このディレクティブでは、ファイルシステムへのアクセス制限も定義します。デフォルトでは、Apacheは /var/www ディレクトリ内のファイルへのインターネットアクセスのみを許可します。このディレクトリ内に、ウェブサイトのファイルを保持する他のディレクトリを作成できます。さらに、ディレクトリ内のファイルへのアクセス方法を指定することもできます。定義のサンプルは以下のようになります:

The <Directory /var/www/html> は、これらのルールが適用されるディレクトリを指定します。「AllowOverride” オプションは、指定されたディレクトリに “.htaccess” ファイルを配置した場合に、設定を上書きするかどうかを指定します。これは、.htaccessやURL書き換えを利用するLaravelなどのフレームワークを扱う場合に必要となります。

バーチャルホストの詳細については、こちらのチュートリアル「Ubuntu 20.04でApacheバーチャルホストを設定する方法」をご覧ください。以下は、定義したすべてのディレクティブを含むバーチャルホストファイルのサンプルです:

Redirect、Alias、および ScriptAlias ディレクティブ

場合によっては、DocumentRoot ディレクトリの直下にないウェブサイトのファイルや実行ファイルにアクセスしたいことがあります。そこで登場するのが、これら3つのディレクティブです。

The Redirect ディレクティブは、クライアントに対して異なる URL で新しいリクエストを行うよう指示します。通常、ウェブサイトの訪問者を別のドメイン名や IP アドレスに誘導したい場合に使用します。なお、Redirect は Alias や ScriptAlias よりも先に実行されます。Alias ディレクティブは、URL をディレクトリパスにマッピングします。ScriptAlias ディレクティブは、実行可能スクリプトを含むディレクトリに URL をマッピングします。Alias と ScriptAlias を機能させるには、ディレクトリの権限をウェブサーバーが使用する www-data ユーザーに設定する必要があります。

Apache でサイトとモジュールを有効にする方法

バーチャルホストとモジュールは、有効化されて初めてアクティブになり、Apache プロセスからアクセスできるようになります。さらに、説明したように、バーチャルホストは sites-available ディレクトリ内に作成されます。もし、example.com.conf という名前のバーチャルホストファイルがある場合、次のコマンドを使用して有効にできます:

このコマンドによりバーチャルホストが有効になります。ただし、変更を反映させるには、次のコマンドを入力して Apache に設定ファイルを再読み込みさせる必要があります:

Apache がリクエストの処理に使用しないように、example.com.conf というバーチャルホストファイルを無効化したい場合があります。その場合は、次のコマンドを入力してファイルを無効にします:

ここでも、変更をすぐに反映させるには、次のコマンドを入力して Apache に設定ファイルを再読み込みさせる必要があります:

同様に、同じ構文を使用してモジュールを有効化および無効化できます。モジュールを有効にするコマンドは “a2enmod” で、モジュールを無効にするコマンドは “a2dismod.” です。たとえば、.htaccess の設定に応じて URL を書き換えるのを支援する mod_rewrite という Apache モジュールがあります。.htaccess ファイルを機能させるには、このモジュールを有効にする必要があります。次のコマンドを入力することで有効にできます:

この変更を反映させるには、Apache の設定を再読み込みする必要があります。また、次のコマンドを入力してモジュールを無効にすることもできます:

その後、Apache2 の設定を再読み込みして、変更をすぐに反映させます。

最後に、Apache ウェブサーバーに慣れるのに役立つその他のリソースをいくつか紹介します:

結論

このチュートリアルでは、UbuntuおよびDebianシステムにおける基本的なApache設定ファイルを定義しました。実証したように、Apacheは高度にモジュール化されているため、さまざまなタスクを実行するために多くのモジュールをインストールできます。

これらのモジュールは簡単に有効化または無効化でき、他の設定を変更して異なる結果を得ることができます。これで、メインの設定ファイルに含まれるローカル設定ファイルを変更できるようになりました。そのため、グローバル設定ファイルを破損する心配はありません。

快適なコンピューティングを!

author

Manpreet Singh

著者 · CloudSigma

Preslav DobrevはCloudSigmaのクリエイティブデザイナーであり、従来型および革新的なマーケティングチャネルを活用した一貫性のあるビジネスアイデンティティに注力しています。彼は芸術的なビジョンと戦略的マーケティングを融合させ、インパクトのあるブランドナラティブを生み出すことに長けています。

コメント

コメントはまだありません。最初のコメントを投稿しましょう。