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

はじめに

Apache HTTPサーバーは世界で最も広く利用されているWebサーバーです。ダイナミックにロード可能なモジュール、堅牢なメディアサポート、および他の人気ソフトウェアとの幅広い統合など、多くの強力な機能を提供しています。

このガイドでは、Ubuntu 22.04サーバーにApache Webサーバーをインストールする方法を学びます。

DigitalOcean App Platformを使用してGitHubからアプリケーションを展開します。DigitalOceanにアプリのスケーリングを任せましょう。

前提条件

このガイドを開始する前に、sudo特権を持つ非rootユーザーが設定されたUbuntu 22.04サーバーと、非必須ポートをブロックするファイアウォールが有効に設定されている必要があります。これについては、当社のUbuntu 22.04用の初期サーバー設定ガイドに従って学ぶことができます。

これらの設定が完了したら、非rootユーザーとしてログインし、最初のステップに進んでください。

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

Apacheは、Ubuntuのデフォルトのソフトウェアリポジトリ内に存在しており、従来のパッケージ管理ツールを使用してインストールすることが可能です。

まず、ローカルのパッケージインデックスを最新のアップストリームの変更に反映させるために、以下のコマンドを実行します:

  1. sudo apt update

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

  1. sudo apt install apache2

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

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

Apacheをテストする前に、デフォルトのWebポートへの外部アクセスを許可するようにファイアウォールの設定を変更する必要があります。事前準備の手順に従っていれば、サーバーへのアクセスを制限するためにUFWファイアウォールが設定されているはずです。

インストール中、Apacheは自身をUFWに登録し、ファイアウォールを介してApacheへのアクセスを有効または無効にするために使用できるいくつかのアプリケーションプロファイルを提供します。

以下のコマンドを実行して、ufw アプリケーションプロファイルのリストを表示します:

  1. sudo ufw app list

出力はアプリケーションプロファイルのリストになります:

Output
Available applications: Apache Apache Full Apache Secure OpenSSH

出力に示されているように、Apache用に利用可能な3つのプロファイルがあります。

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

構成したトラフィックを許可する最も制限の厳しいプロファイルを有効にすることを推奨します。このガイドではまだサーバーにSSLを構成していないため、ポート80でのトラフィックのみを許可する必要があります:

  1. sudo ufw allow 'Apache'

変更を確認するには、状態を確認します:

  1. sudo ufw status

出力には許可されたHTTPトラフィックのリストが表示されます:

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

出力によれば、プロファイルが有効になり、Apache Webサーバーへのアクセスが許可されました。

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

インストールプロセスの最後に、Ubuntu 22.04はApacheを起動します。Webサーバーはすでに起動しています。

systemdイニシャルシステムのコマンドを実行して、サービスがアクティブであることを確認します:

  1. sudo systemctl status apache2
Output
● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor prese> Active: active (running) since Tue 2022-04-26 15:33:21 UTC; 43s ago Docs: https://httpd.apache.org/docs/2.4/ Main PID: 5089 (apache2) Tasks: 55 (limit: 1119) Memory: 4.8M CPU: 33ms CGroup: /system.slice/apache2.service ├─5089 /usr/sbin/apache2 -k start ├─5091 /usr/sbin/apache2 -k start └─5092 /usr/sbin/apache2 -k start

この出力により、サービスが正常に開始されましたが、これをテストする最良の方法は、Apacheからページをリクエストすることです。

デフォルトのApacheランディングページにアクセスして、ソフトウェアが正常に動作していることを確認できます。サーバーのIPアドレスがわからない場合は、いくつかの方法でコマンドラインから取得できます。

サーバーのコマンドプロンプトに次のように入力してみてください:

  1. hostname -I

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

別のオプションは、無料のicanhazip.comツールを使用することです。これは、アクセスすると、インターネット上の別の場所から読み取られたマシンの公開IPアドレスを返すウェブサイトです:

  1. curl -4 icanhazip.com

サーバーのIPアドレスを取得したら、ブラウザのアドレスバーに入力してください:

http://your_server_ip

以下のように、デフォルトのUbuntu 22.04 Apacheウェブページが表示されます:

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

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

ウェブサーバーが稼働しているので、systemctlを使用した基本的な管理コマンドを見てみましょう。

ウェブサーバーを停止するには、次のコマンドを実行します:

  1. sudo systemctl stop apache2

停止したウェブサーバーを再開するには、次のコマンドを実行します:

  1. sudo systemctl start apache2

サービスを停止してから再開するには、次のコマンドを実行します:

  1. sudo systemctl restart apache2

単に構成変更を行っている場合、Apache は接続を切断せずにリロードできることがよくあります。これを行うには、次のコマンドを使用します:

  1. sudo systemctl reload apache2

デフォルトでは、Apache はサーバーの起動時に自動的に開始されるように構成されています。これが望ましくない場合は、次のコマンドを実行してこの動作を無効にします:

  1. sudo systemctl disable apache2

再び起動時にサービスを有効にするには、次のコマンドを実行します:

  1. sudo systemctl enable apache2

Apache は次回サーバーが起動するときに自動的に開始されます。

Apache ウェブサーバーを使用する際には、1 台のサーバーから複数のドメインをホストし、構成の詳細をカプセル化するために、仮想ホスト(Nginx のサーバーブロックに類似)を使用できます。ここでは your_domain というドメインを設定しますが、これは独自のドメイン名に置き換えてください

情報: DigitalOcean でドメイン名を設定する場合は、Networking Documentation を参照してください。

Apache on Ubuntu 22.04には、デフォルトで1つのサーバーブロックが有効になっており、/var/www/htmlディレクトリからドキュメントを提供するように構成されています。これは単一のサイトではうまく機能しますが、複数のサイトをホストする場合は扱いづらくなる可能性があります。 / var / www 内に / var / www / html を修正する代わりに、 your_domain サイト用のディレクトリ構造を作成し、クライアントリクエストが他のサイトに一致しない場合に提供されるデフォルトディレクトリとして/var/www/htmlをそのままにします。

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

  1. sudo mkdir /var/www/your_domain

次に、次のコマンドを使用して、ディレクトリの所有権を現在ログインしているユーザーに割り当てます:

  1. sudo chown -R $USER:$USER /var/www/your_domain

umask値を変更していない場合、Webルートのアクセス許可が正しいはずです。所有者にファイルを読み取り、書き込み、実行する権限を許可し、グループとその他には読み取りと実行の権限のみを付与するには、次のコマンドを入力します:

  1. sudo chmod -R 755 /var/www/your_domain

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

  1. 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>

終了したら、ファイルを保存して閉じます。 nanoを使用している場合は、 CTRL + X Y ENTER を押して保存できます。

Apacheがこのコンテンツを提供するためには、正しいディレクティブを含む仮想ホストファイルを作成する必要があります。デフォルトの構成ファイル(/etc/apache2/sites-available/000-default.conf)を直接変更する代わりに、新しいファイルを/etc/apache2/sites-available/your_domain.confに作成してください。

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

以下の構成ブロックを追加します。これはデフォルトに似ていますが、新しいディレクトリとドメイン名に更新されています:

/etc/apache2/sites-available/your_domain.conf
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    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ツールを使用してファイルを有効にします:

  1. sudo a2ensite your_domain.conf

000-default.confで定義されたデフォルトサイトを無効にします:

  1. sudo a2dissite 000-default.conf

次に、構成エラーをテストします:

  1. sudo apache2ctl configtest

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

Output
. . . Syntax OK

変更を実装するためにApacheを再起動します:

  1. sudo systemctl restart apache2

これでApacheはあなたのドメイン名を提供するようになりました。これを確認するには、http://your_domainに移動してください。そこでは次のようなものが表示されます:

ステップ6 – 重要なApacheファイルとディレクトリに慣れる

Apacheサービス自体の管理方法を知っているので、重要なディレクトリとファイルをいくつか把握するために数分を割いてください。

内容

  • /var/www/html:実際のウェブコンテンツは、デフォルトで/var/www/htmlディレクトリから提供されます。これは、前述のデフォルトのApacheページのみで構成されます。これは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/sites-enabled/:有効になっているサイトごとの仮想ホストが保存されるディレクトリです。通常、これらはsites-availableディレクトリにある構成ファイルにリンクされて作成されます。a2ensiteを使用します。Apacheは、起動時または再読み込み時にこのディレクトリ内の構成ファイルとリンクを読み取って完全な構成をコンパイルします。
  • /etc/apache2/conf-available//etc/apache2/conf-enabled/:これらのディレクトリはsites-availablesites-enabledディレクトリと同じ関係を持ちますが、仮想ホストに属さない構成フラグメントを保存するために使用されます。 conf-availableディレクトリ内のファイルは、a2enconfコマンドで有効にでき、a2disconfコマンドで無効にできます。
  • /etc/apache2/mods-available//etc/apache2/mods-enabled/:これらのディレクトリには、それぞれ利用可能なモジュールと有効になっているモジュールが含まれています。拡張子が.loadで終わるファイルには特定のモジュールをロードするためのフラグメントが含まれており、.confで終わるファイルにはそれらのモジュールの構成が含まれています。モジュールはa2enmodおよびa2dismodコマンドを使用して有効または無効にできます。

サーバーログ

  • /var/log/apache2/access.log:デフォルトでは、Apacheが別のように構成されていない限り、ウェブサーバーへのすべてのリクエストがこのログファイルに記録されます。
  • /var/log/apache2/error.log:デフォルトでは、すべてのエラーがこのファイルに記録されます。Apacheの構成でLogLevelディレクティブがエラーログに含まれる詳細の程度を指定します。

結論

ウェブサーバーがインストールされたので、提供できるコンテンツの種類や、より豊かなエクスペリエンスを作成するために使用できる技術には多くのオプションがあります。

より完全なアプリケーションスタックを構築したい場合は、Ubuntu 22.04でLAMPスタックを構成する方法に関するこの記事を読んでください。

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-ubuntu-22-04