Apache HTTPサーバーは、世界で最も広く使用されているWebサーバーです。動的にロード可能なモジュール、堅牢なメディアサポート、他の一般的なソフトウェアとの広範な統合性など、多くの強力な機能を提供します。
このガイドでは、Ubuntu 20.04サーバーにApache Webサーバーをインストールする方法を説明します。
このガイドを始める前に、サーバーにsudo権限を持つ通常のroot以外のユーザーが設定されている必要があります。さらに、重要でないポートをブロックするには、基本的なファイアウォールを有効にする必要があります。通常のユーザーアカウントとファイアウォールを設定する方法については、Ubuntu 20.04 初期サーバーセットアップガイドを参照してください。
アカウントを使用できるようになったら、root以外のユーザーとしてログインして開始します。
ApacheはUbuntuのデフォルトのソフトウェアリポジトリで利用できるため、従来のパッケージ管理ツールを使用してインストールします。
最初に、ローカルパッケージインデックスを更新して、最新のアップストリームの変更を反映させます。
- sudo apt update
次に、apache2
パッケージをインストールします。
- sudo apt install apache2
インストールを確認した後、apt
はApacheと必要なすべての依存関係をインストールします。
Apacheをテストする前に、ファイアウォール設定を変更して、外部からデフォルトWebポートへのアクセスを許可する必要があります。前提条件の指示に従っていれば、サーバーへのアクセスを制限するUFWファイアウォールが設定されているはずです。
インストール中、ApacheはUFWに自らを登録し、ファイアウォールを介したApacheへのアクセスを有効/無効にするアプリケーションプロファイルをいくつか追加します。
以下を入力して、ufw
アプリケーションプロファイルを一覧表示します。
- sudo ufw app list
アプリケーションプロファイルが一覧表示されます。
OutputAvailable applications:
Apache
Apache Full
Apache Secure
OpenSSH
ご覧のとおり、Apacheにはプロファイルが3つあります。
設定したトラフィックを許可しながら、最も制限の厳しいプロファイルを有効にすることをお勧めします。現時点ではまだ、サーバーに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サーバーへのアクセスを許可するためにアクティブになりました。
インストールプロセスの最後に、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ファイルとディレクトリの場所に関する基本的な情報も含まれています。
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も自動的に起動します。
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を追加します。
<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
次の構成ブロックに貼り付けます。これはデフォルトに似ていますが、新しいディレクトリとドメイン名に合わせて更新されています。
<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
が新しいディレクトリに更新され、ServerAdmin
がyour_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サービス自体の管理方法が分かったところで、いくつかの重要なディレクトリとファイルに慣れるために少しみてみましょう。
/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
のファイルにはそれらのモジュールの設定が含まれます。モジュールは、a2enmod
/a2dismod
コマンドを使用して、有効/無効にできます。/var/log/apache2/access.log
: デフォルトでは、Webサーバーへのリクエストはすべて、Apacheで特に設定されていない限り、このログファイルに記録されます。/var/log/apache2/error.log
: デフォルトでは、すべてのエラーはこのファイルに記録されます。Apache設定のLogLevel
ディレクティブは、エラーログに記録されるレベルを指定します。Webサーバーがインストールされたので、提供できるコンテンツの種類や、より豊かなエクスペリエンスを生み出すために利用できる技術について、たくさんの選択肢ができました。
より完全なアプリケーションスタックを構築する場合は、Ubuntu 20.04 にLAMP スタックをインストールする方法をご 覧ください。
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!