Ubuntu20.04にApacheWebサーバーをインストールする方法
序章
Apache HTTPサーバーは、世界で最も広く使用されているWebサーバーです。 動的にロード可能なモジュール、堅牢なメディアサポート、他の一般的なソフトウェアとの広範な統合など、多くの強力な機能を提供します。
このガイドでは、Ubuntu20.04サーバーにApacheWebサーバーをインストールする方法について説明します。
前提条件
このガイドを開始する前に、サーバーに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サーバーを確認する
インストールプロセスの最後に、Ubuntu20.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ブラウザーでそれぞれを試して、機能するかどうかを判断できます。
もう1つのオプションは、Icanhazipツールを使用することです。これにより、インターネット上の別の場所から読み取ったパブリックIPアドレスが提供されます。
- curl -4 icanhazip.com
サーバーのIPアドレスを取得したら、それをブラウザのアドレスバーに入力します。
http://your_server_ip
デフォルトのUbuntu20.04ApacheWebページが表示されます。
このページは、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
を変更する代わりに、 your_domain サイトの/var/www
内にディレクトリ構造を作成し、/var/www/html
をデフォルトのディレクトリとして残します。クライアントリクエストが他のサイトと一致しません。
次のように、your_domainのディレクトリを作成します。
- sudo mkdir /var/www/your_domain
次に、$USER
環境変数を使用してディレクトリの所有権を割り当てます。
- sudo chown -R $USER:$USER /var/www/your_domain
デフォルトのファイル権限を設定するumask値を変更していない場合は、Webルートの権限が正しいはずです。 アクセス許可が正しいことを確認し、所有者がファイルの読み取り、書き込み、および実行を許可し、グループなどに読み取りと実行のアクセス許可のみを付与するには、次のコマンドを入力できます。
- 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-available/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
に移動します。ここで、次のように表示されます。
ステップ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/sites-enabled/
:有効なサイトごとの仮想ホストが保存されているディレクトリ。 通常、これらはsites-available
ディレクトリにある構成ファイルにa2ensite
でリンクすることによって作成されます。 Apacheは、完全な設定をコンパイルするために起動またはリロードするときに、このディレクトリにある設定ファイルとリンクを読み取ります。/etc/apache2/conf-available/
、/etc/apache2/conf-enabled/
:これらのディレクトリは、sites-available
およびsites-enabled
ディレクトリと同じ関係にありますが、仮想ホスト。conf-available
ディレクトリ内のファイルは、a2enconf
コマンドで有効にし、a2disconf
コマンドで無効にすることができます。/etc/apache2/mods-available/
、/etc/apache2/mods-enabled/
:これらのディレクトリには、それぞれ使用可能なモジュールと有効なモジュールが含まれています。.load
で終わるファイルには、特定のモジュールをロードするためのフラグメントが含まれ、.conf
で終わるファイルには、それらのモジュールの構成が含まれます。 モジュールは、a2enmod
およびa2dismod
コマンドを使用して有効または無効にできます。
サーバーログ
/var/log/apache2/access.log
:デフォルトでは、Apacheが別の方法で設定されていない限り、Webサーバーへのすべてのリクエストがこのログファイルに記録されます。/var/log/apache2/error.log
:デフォルトでは、すべてのエラーがこのファイルに記録されます。 Apache構成のLogLevel
ディレクティブは、エラーログに含まれる詳細を指定します。
結論
Webサーバーがインストールされたので、提供できるコンテンツの種類と、より豊かなエクスペリエンスを作成するために使用できるテクノロジーについて、多くのオプションがあります。
より完全なアプリケーションスタックを構築したい場合は、 Ubuntu20.04でLAMPスタックを構成する方法に関するこの記事を読むことができます。