Ubuntu22.04にApacheWebサーバーをインストールする方法
序章
Apache HTTPサーバーは、世界で最も広く使用されているWebサーバーです。 動的にロード可能なモジュール、堅牢なメディアサポート、他の一般的なソフトウェアとの広範な統合など、多くの強力な機能を提供します。
このガイドでは、Ubuntu22.04サーバーにApacheWebサーバーをインストールする方法を学習します。
前提条件
このガイドを開始する前に、sudo
権限を持つ非root ユーザーでセットアップされたUbuntu22.04サーバーと、必須でないポートをブロックするためのファイアウォールが有効になっている必要があります。 これを行う方法については、 Ubuntu22.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サーバーを確認する
インストールプロセスの最後に、Ubuntu22.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 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アドレスを介して正しく実行されていることを確認できます。 サーバーのIPアドレスがわからない場合は、コマンドラインからいくつかの異なる方法で取得できます。
サーバーのコマンドプロンプトで次のように記述してみてください。
hostname -I
スペースで区切られたいくつかのアドレスを受け取ります。 Webブラウザーでそれぞれを試して、機能するかどうかを判断できます。
もう1つのオプションは、無料のicanhazip.com
ツールを使用することです。 これは、アクセスされると、インターネット上の別の場所から読み取られたマシンのパブリックIPアドレスを返すWebサイトです。
curl -4 icanhazip.com
サーバーのIPアドレスを取得したら、それをブラウザのアドレスバーに入力します。
http://your_server_ip
次のようなデフォルトのUbuntu22.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 22.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を追加します。
/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
で新しい構成ファイルを作成します。
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
を新しいディレクトリに更新し、ServerAdmin
をyour_domainサイト管理者がアクセスできる電子メールに更新したことに注意してください。 また、この仮想ホスト定義に一致するベースドメインを確立するServerName
と、ベース名であるかのように一致するさらなる名前を定義するServerAlias
の2つのディレクティブを追加しました。 。
終了したら、ファイルを保存して閉じます。
次に、a2ensite
ツールを使用してファイルを有効にします。
sudo a2ensite your_domain.conf
000-default.conf
で定義されているデフォルトサイトを無効にします。
sudo a2dissite 000-default.conf
次に、構成エラーをテストします。
sudo apache2ctl configtest
次の出力が表示されます。
Output. . . Syntax 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サーバーがインストールされたので、提供できるコンテンツの種類と、より豊かなエクスペリエンスを作成するために使用できるテクノロジーについて、多くのオプションがあります。
より完全なアプリケーションスタックを構築したい場合は、 Ubuntu22.04でLAMPスタックを構成する方法に関するこの記事を読むことができます。