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
次のように入力して、サービスが実行されていることを確認するinitsystem。
- 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では、デフォルトで1つのサーバーブロックが有効になっており、 /var/www/html
ディレクトリ。 これは単一のサイトではうまく機能しますが、複数のサイトをホストしている場合は扱いにくくなる可能性があります。 変更する代わりに /var/www/html
、内にディレクトリ構造を作成しましょう /var/www
your_domain サイトの場合、 /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
次に、サンプルを作成します index.html
使用するページ nano
またはお気に入りの編集者:
- 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
:デフォルトでは、すべてのエラーがこのファイルに記録されます。 TheLogLevel
Apache構成のディレクティブは、エラーログに含まれる詳細を指定します。
結論
Webサーバーがインストールされたので、提供できるコンテンツの種類と、より豊かなエクスペリエンスを作成するために使用できるテクノロジーについて、多くのオプションがあります。
より完全なアプリケーションスタックを構築したい場合は、 Ubuntu20.04でLAMPスタックを構成する方法に関するこの記事を読むことができます。