Ubuntu 20.04にApache Webサーバーをインストールする方法

はじめに

Apache HTTPサーバーは、世界で最も広く使用されているWebサーバーです。動的にロード可能なモジュール、堅牢なメディアサポート、他の一般的なソフトウェアとの広範な統合性など、多くの強力な機能を提供します。

このガイドでは、Ubuntu 20.04サーバーにApache Webサーバーをインストールする方法を説明します。

前提条件

このガイドを始める前に、サーバーにsudo権限を持つ通常のroot以外のユーザーが設定されている必要があります。さらに、重要でないポートをブロックするには、基本的なファイアウォールを有効にする必要があります。通常のユーザーアカウントとファイアウォールを設定する方法については、Ubuntu 20.04 初期サーバーセットアップガイドを参照してください。

アカウントを使用できるようになったら、root以外のユーザーとしてログインして開始します。

ステップ1— Apacheのインストール

ApacheはUbuntuのデフォルトのソフトウェアリポジトリで利用できるため、従来のパッケージ管理ツールを使用してインストールします。

最初に、ローカルパッケージインデックスを更新して、最新のアップストリームの変更を反映させます。

  • sudo apt update

次に、apache2パッケージをインストールします。

  • sudo apt install apache2

インストールを確認した後、aptはApacheと必要なすべての依存関係をインストールします。

ステップ2 ー ファイアウォールの調整

Apacheをテストする前に、ファイアウォール設定を変更して、外部からデフォルトWebポートへのアクセスを許可する必要があります。前提条件の指示に従っていれば、サーバーへのアクセスを制限するUFWファイアウォールが設定されているはずです。

インストール中、ApacheはUFWに自らを登録し、ファイアウォールを介したApacheへのアクセスを有効/無効にするアプリケーションプロファイルをいくつか追加します。  

以下を入力して、ufwアプリケーションプロファイルを一覧表示します。

  • sudo ufw app list

アプリケーションプロファイルが一覧表示されます。

OutputAvailable applications:   Apache   Apache Full   Apache Secure   OpenSSH 

ご覧のとおり、Apacheにはプロファイルが3つあります。

  • Apache: このプロファイルは、ポート80(通常の暗号化されていないWebトラフィック)のみを開きます。
  • Apache Full: このプロファイルは、ポート80(通常の暗号化されていないWebトラフィック)とポート443(TLS/SSL暗号化トラフィック)の両方を開きます。
  • Apache Secure: このプロファイルは、ポート443 (TLS/SSL暗号化トラフィック)のみを開きます。

設定したトラフィックを許可しながら、最も制限の厳しいプロファイルを有効にすることをお勧めします。現時点ではまだ、サーバーにSSLを設定していないため、ポート80のトラフィックのみを許可すればよいでしょう。

  • sudo ufw allow 'Apache'

次のように入力して、変更を確認できます。

  • sudo ufw status

出力は、許可されたHTTPトラフィックを一覧表示します。

OutputStatus: active  To                         Action      From --                         ------      ---- OpenSSH                    ALLOW       Anywhere                   Apache                     ALLOW       Anywhere                 OpenSSH (v6)               ALLOW       Anywhere (v6)              Apache (v6)                ALLOW       Anywhere (v6) 

ご覧のように、プロファイルはApacheWebサーバーへのアクセスを許可するためにアクティブになりました。

ステップ3 ー Webサーバーの確認

インストールプロセスの最後に、Ubuntu 20.04がApacheを起動します。Webサーバーは既に稼働している必要があります。

次のように入力して、systemd initシステムでサービスが稼働中であることを確認します。

  • sudo systemctl status apache2
Output● apache2.service - The Apache HTTP Server      Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)      Active: active (running) since Thu 2020-04-23 22:36:30 UTC; 20h ago        Docs: https://httpd.apache.org/docs/2.4/    Main PID: 29435 (apache2)       Tasks: 55 (limit: 1137)      Memory: 8.0M      CGroup: /system.slice/apache2.service              ├─29435 /usr/sbin/apache2 -k start              ├─29437 /usr/sbin/apache2 -k start              └─29438 /usr/sbin/apache2 -k start  

上記を見ると分かるように、サービスは正常に開始されています。ただし、これをテストする最良の方法は、実際にApacheからページをリクエストすることです。

デフォルトのApacheランディングページにアクセスして、ソフトウェアがIPアドレスを介して適切に実行されていることを確認できます。サーバーのIPアドレスが分からない場合は、コマンドラインから取得する方法がいくつかあります。

サーバーのコマンドプロンプトでこれを入力してみてください。

  • hostname -I

スペースで区切られたいくつかのアドレスが返されます。 Webブラウザでそれぞれ試して、動作するか確認できます。

また、Icanhazip ツールを使用する方法もあります。このツールを使用すれば、インターネット上の別の場所から見たパブリックIPアドレスが分かります。 

  • curl -4 icanhazip.com

サーバーのIPアドレスが分かったら、ブラウザのアドレスバーに入力します。

http://your_server_ip 

デフォルトのUbuntu 20.04 Apache webページが表示されます。

Apacheの デフォルトページ

このページは、Apacheが正常に機能していることを示します。また、重要なApacheファイルとディレクトリの場所に関する基本的な情報も含まれています。

ステップ4 — Apacheプロセスの管理

Webサーバーが起動し稼働しているので、systemctlを使用して、基本的な管理コマンドをいくつか見ていきましょう。

Webサーバーを停止するには、次を入力します。

  • sudo systemctl stop apache2

Webサーバーが停止したときに起動するには、次のように入力します。

  • sudo systemctl start apache2

サービスを停止してから再び開始するには、次のように入力します。

  • sudo systemctl restart apache2

設定を変更するだけなら、Apacheは接続を切断せずにリロードできます。これを行うには、次のコマンドを使用します。

  • sudo systemctl reload apache2

デフォルトでは、Apacheはサーバーの起動時に自動的に起動するように設定されています。これを望まない場合は、次のように入力してこの動作を無効にできます。

  • sudo systemctl disable apache2

ブート時に起動するサービスを再度有効にするには、次を入力します。

  • sudo systemctl enable apache2

これで、サーバーが再起動すると、Apacheも自動的に起動します。

ステップ5 — 仮想ホストの設定 (推奨)

Apache Webサーバーを使用している場合、仮想ホスト (Nginx のサーバーブロックに類似) を作成して設定の詳細をカプセル化し、単一のサーバーから複数のドメインをホストすることができます。 your_domainというドメインを設定しますが、これを自分のドメイン名に置き換える必要があります。DigitalOceanを使用したドメイン名の設定の詳細については、ネットワーキングドキュメントをご覧ください。

Ubuntu 20.04上のApacheには、/var/www/htmlディレクトリからドキュメントを提供するように設定されているデフォルトで有効になっている1つのサーバーブロックがあります。これは単一のサイトではうまく機能しますが、複数のサイトをホストしている場合は扱いにくいことがあります。/var/www/htmlは変更せず、クライアントの要求がどのサイトとも一致しないときに表示するデフォルトディレクトリとして/var/www/htmlをそのまま置いておき、your_domainサイトの/var/www内にディレクトリ構造を作成しましょう。

your_domainのディレクトリを次のように作成します。

  • sudo mkdir /var/www/your_domain

次に、$USER環境変数を使用してディレクトリの所有権を割り当てます。

  • sudo chown -R $USER:$USER /var/www/your_domain

デフォルトのファイルパー権限を設定するumaskの値を変更していなければ、 rootの権限は正しいはずです。正しい権限を確実に設定し、所有者には読み取り・書き込み・実行可能権限を、グループには読み取り・実行可能権限のみをそれぞれ付与するには、次のコマンドを入力します。

  • sudo chmod -R 755 /var/www/your_domain

次に、nanoまたはお気に入りのエディタを使用して、サンプルindex.htmlページを作成します。

  • sudo nano /var/www/your_domain/index.html

内部に次のサンプルHTMLを追加します。

/var/www/your_domain/index.html

<html>     <head>         <title>Welcome to Your_domain!</title>     </head>     <body>         <h1>Success!  The your_domain virtual host is working!</h1>     </body> </html> 

完了したら、ファイルを保存して閉じます。

Apacheがこのコンテンツを提供するには、正しいディレクティブで仮想ホストを作成する必要があります。/etc/apache2/sites-able/000-default.confでデフォルトの設定ファイルを直接変更する代わりに、/etc/apache2/sites-available/your_domain.confで新しい設定ファイルを作成しましょう。

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

次の構成ブロックに貼り付けます。これはデフォルトに似ていますが、新しいディレクトリとドメイン名に合わせて更新されています。

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

<VirtualHost *:80>     ServerAdmin [email protected]     ServerName your_domain     ServerAlias www.your_domain     DocumentRoot /var/www/your_domain     ErrorLog ${APACHE_LOG_DIR}/error.log     CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> 

DocumentRootが新しいディレクトリに更新され、ServerAdminyour_domainサイト管理者がアクセスできるメールアドレスに更新されたことに注意してください。また、2つのディレクティブが追加されています。 ServerNameは、この仮想ホスト定義に適合するベースドメインを確立します。ServerAliasは、ベースネームであるかのように適合する名前をさらに定義します。  

完了したら、ファイルを保存して閉じます。

a2ensiteツールを使用して、次のようにファイルを有効にしましょう。

  • sudo a2ensite your_domain.conf

000-default.confで定義されているデフォルトのサイトを無効にします。

  • sudo a2dissite 000-default.conf

次に、設定エラーがないかテストします。

  • sudo apache2ctl configtest

次の出力が表示されます。

OutputSyntax OK 

Apacheを再起動してこれらの変更を実装します。

  • sudo systemctl restart apache2

これで、Apacheがドメイン名を提供しているはずです。これをテストするには、http://your_domainに移動します。次のように表示されます。

Apache仮想ホストの例

ステップ6 ー Apacheの重要なファイルとディレクトリに精通する

Apacheサービス自体の管理方法が分かったところで、いくつかの重要なディレクトリとファイルに慣れるために少しみてみましょう。

コンテンツ

  • /var/www/html: 実際のWebコンテンツは、デフォルトでは先ほど見た既定のApacheページのみで構成され、/var/www/htmlディレクトリから提供されます。これは、Apache設定ファイルを変更することで変更できます。

サーバーの設定

  • /etc/apache2: Apache設定ディレクトリ。すべてのApache設定ファイルがここにあります。
  • /etc/apache2/apache2.conf:メインApache設定ファイル。これを変更して、Apacheのグローバル設定を変更できます。このファイルは、他の多くのファイルを設定ディレクトリにロードします。
  • /etc/apache2/ports.conf: このファイルは、Apacheがリッスンするポートを指定します。デフォルトでは、Apacheはポート80をリッスンし、SSL機能を提供するモジュールが有効であれば、ポート443もリッスンします。              
  • /etc/apache2/sites-available/: サイト内の仮想ホストが保存できるディレクトリ。Apacheは、sites-enabledディレクトリにリンクされない限り、このディレクトリにある設定ファイルを使用しません。通常、すべてのサーバーブロック設定はこのディレクトリで行われ、他のディレクトリにa2ensiteコマンドでリンクすることで有効になります。
  • /etc/apache2/site-abled/: 有効化されたサイト内の仮想ホストが保存されているディレクトリ。       通常、これらはsites-availableディレクトリにある設定ファイルにa2ensiteをリンクすることで作成されます。  Apacheは、このディレクトリの設定ファイルとリンクを読み込み、完全な設定をコンパイルするために起動またはリロードします。
  • /etc/apache2/conf-abvailable/、/etc/apache2/conf-enabled/: これらのディレクトリは、sites-availableディレクトリ、sites-enabledディレクトリと同様のリレーションシップを持っていますが、仮想ホストに属さない設定ファイル類の保存に使用します。conf-availableディレクトリ内のファイルは、a2enconfコマンドで有効に、a2disconfコマンドで無効にできます。
  • /etc/apache2/mods-ableted/、/etc/apache2/mods-ableted/:これらのディレクトリにはそれぞれ、使用可能なモジュール、有効になったモジュールが含まれます。拡張子が.loadのファイルには特定のモジュールをロードするフラグメントが、拡張子が.confのファイルにはそれらのモジュールの設定が含まれます。モジュールは、a2enmoda2dismodコマンドを使用して、有効/無効にできます。

サーバーログ

  • /var/log/apache2/access.log: デフォルトでは、Webサーバーへのリクエストはすべて、Apacheで特に設定されていない限り、このログファイルに記録されます。
  • /var/log/apache2/error.log: デフォルトでは、すべてのエラーはこのファイルに記録されます。Apache設定のLogLevelディレクティブは、エラーログに記録されるレベルを指定します。

まとめ

Webサーバーがインストールされたので、提供できるコンテンツの種類や、より豊かなエクスペリエンスを生み出すために利用できる技術について、たくさんの選択肢ができました。

より完全なアプリケーションスタックを構築する場合は、Ubuntu 20.04 にLAMP スタックをインストールする方法をご 覧ください。