Apache HTTP Serverのインストール手順について執筆します。
※ 今回はAzure VM Linux(RHEL)を使っています。
1.Apache HTTP Serverとは
世界中で広く使われている無料で使えるオープンソースのWebサーバソフトウェアです。
Apache HTTP Serverは無償で利用することができ、WindowsやLinuxなどのOSで使用することができまるWEBアプリケーションサーバソフトウェアです。 無償で使えることと、情報の多さなどから個人から大企業まで多くのユーザーに利用されています。
余談ですが、Red Hat Enterprise Linux(RHEL)を使うことでApache HTTP Serverの脆弱性対策もバックポートの仕組みにより安心して商用でApache HTTP Serverを使用することができます。
その他参考情報 : Red Hat がサポートする Apache HTTPD バージョン
実際に、オーストリアに拠点をおくコンサルティング会社Q-Success社を母体とした、インターネットやWebテクノロジー専門の第三者調査機関のW3Techsの調査結果でもNginxに次いで全世界の約30%がApache HTTP Serverを使用していることが調査結果として出ています。
参考情報: W3TechsのWebサーバの使用統計調査結果
2.Webサーバとは
Webサーバは、インターネット上でWebページを提供するためのコンピュータやソフトウェアです。
Webブラウザ(Google ChromeやMicrosoft Edge)を使用してWebサイトにアクセスすると、その要求がWebサーバに送信されます。Webサーバは要求を受け取り、対応するWebページの情報(テキストや画像など)をWebブラウザに送信します。
Webブラウザはこの情報を解釈し、ユーザーが閲覧できるWebページとして表示します。このように、Webサーバはインターネット上でWebページを提供する重要な役割を果たしています。
3.Apache HTTP Serverのインストール手順
3-1.前提条件
・今回Apache HTTP Serverを導入するプラットフォームはAzure VM Linux(RHEL)8.7を使用しました。
・サーバがインターネットとの通信ができることを前提としています。
・CPUとメモリは余裕を見て2コアの4GiBとしました。
※AzureでのVMの構築は割愛します
3-2.Apache HTTP Serverインストール手順
3-2-1.ルート権限に切り替え
$ sudo su
3-2-2.SElinuxの無効化
RHELはSElinuxによりセキュリティ制御をかけているためセキュアに通信制御を保つことができる一方でApache HTTP Serverの通信制御が難しくなるため無効化にします。
※ AzureやAWSなどで使う場合はNSGやセキュリティグループなどOSより外のレイヤでの通信制限を実施した方がコントロールはしやすいのと、IP制限などしっかり制御すればセキュリティ的にも問題ないです。
任意のテキストエディタ(Vimやnanoなど)を使って”/etc/selinux/config”を開きます。
以下の設定を変更します。
設定前
SELINUX=enforching
設定変更後
SELINUX=disabled
# nano /etc/selinux/config
# ==========================================================================================
# 設定変更前
# ==========================================================================================
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of these three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
# ==========================================================================================
# 設定変更後
# ==========================================================================================
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
編集が完了したら保存してconfigを閉じます。
3-2-3.firewalldの停止
firewalldはLinuxに標準で搭載されているファイアウォール制御機能です。こちらもApache HTTP Serverの通信制御を細かく制御できる一方で制御が難しくなるため今回は停止します。
firewalldを停止するコマンドは”systemctl stop firewald”です。
# systemctl stop firewalld
また、firewalldが自動起動しないように以下のコマンドを実行します。
# systemctl disable firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
設定を反映するため”systemctl daemon-reload”コマンドを実行し設定を反映します。
# systemctl daemon-reload
3-2-4.Apache HTTP Serverをインストールする
Apache HTTP Serberをインストールするには”yum -y install httpd”コマンドを実行します。
“-y”はオプションでインストールする際のプロンプトからの問いかけを全てYESにしインストールを実行する意味があります。
# yum -y install httpd
Failed to set locale, defaulting to C.UTF-8
Red Hat Ansible Engine 2 for RHEL 8 x86_64 (RPMs) from RHUI 2.2 MB/s | 2.5 MB 00:01
Red Hat Enterprise Linux 8 for x86_64 - BaseOS from RHUI (RPMs) 18 MB/s | 67 MB 00:03
Red Hat CodeReady Linux Builder for RHEL 8 x86_64 (RPMs) from RHUI 7.1 MB/s | 9.2 MB 00:01
Red Hat Enterprise Linux 8 for x86_64 - Supplementary (RPMs) from RHUI 401 kB/s | 342 kB 00:00
Red Hat Enterprise Linux 8 for x86_64 - AppStream from RHUI (RPMs) 19 MB/s | 61 MB 00:03
Microsoft Azure RPMs for Red Hat Enterprise Linux 8 (rhel8) 4.2 kB/s | 2.0 kB 00:00
Dependencies resolved.
==============================================================================================================================================================
Package Architecture Version Repository Size
==============================================================================================================================================================
Installing:
httpd x86_64 2.4.37-62.module+el8.9.0+19699+7a7a2044 rhel-8-for-x86_64-appstream-rhui-rpms 1.4 M
Installing dependencies:
apr x86_64 1.6.3-12.el8 rhel-8-for-x86_64-appstream-rhui-rpms 130 k
apr-util x86_64 1.6.1-9.el8 rhel-8-for-x86_64-appstream-rhui-rpms 106 k
httpd-filesystem noarch 2.4.37-62.module+el8.9.0+19699+7a7a2044 rhel-8-for-x86_64-appstream-rhui-rpms 44 k
httpd-tools x86_64 2.4.37-62.module+el8.9.0+19699+7a7a2044 rhel-8-for-x86_64-appstream-rhui-rpms 111 k
mod_http2 x86_64 1.15.7-8.module+el8.9.0+21652+2dd1200b.5 rhel-8-for-x86_64-appstream-rhui-rpms 155 k
redhat-logos-httpd noarch 84.5-2.el8 rhel-8-for-x86_64-baseos-rhui-rpms 29 k
Installing weak dependencies:
apr-util-bdb x86_64 1.6.1-9.el8 rhel-8-for-x86_64-appstream-rhui-rpms 25 k
apr-util-openssl x86_64 1.6.1-9.el8 rhel-8-for-x86_64-appstream-rhui-rpms 27 k
Enabling module streams:
httpd 2.4
Transaction Summary
==============================================================================================================================================================
Install 9 Packages
Total download size: 2.0 M
Installed size: 5.4 M
Downloading Packages:
(1/9): apr-util-bdb-1.6.1-9.el8.x86_64.rpm 73 kB/s | 25 kB 00:00
(2/9): redhat-logos-httpd-84.5-2.el8.noarch.rpm 82 kB/s | 29 kB 00:00
(3/9): apr-util-openssl-1.6.1-9.el8.x86_64.rpm 298 kB/s | 27 kB 00:00
(4/9): apr-1.6.3-12.el8.x86_64.rpm 285 kB/s | 130 kB 00:00
(5/9): httpd-filesystem-2.4.37-62.module+el8.9.0+19699+7a7a2044.noarch.rpm 470 kB/s | 44 kB 00:00
(6/9): httpd-tools-2.4.37-62.module+el8.9.0+19699+7a7a2044.x86_64.rpm 691 kB/s | 111 kB 00:00
(7/9): apr-util-1.6.1-9.el8.x86_64.rpm 659 kB/s | 106 kB 00:00
(8/9): mod_http2-1.15.7-8.module+el8.9.0+21652+2dd1200b.5.x86_64.rpm 1.6 MB/s | 155 kB 00:00
(9/9): httpd-2.4.37-62.module+el8.9.0+19699+7a7a2044.x86_64.rpm 3.7 MB/s | 1.4 MB 00:00
--------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 2.7 MB/s | 2.0 MB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : apr-1.6.3-12.el8.x86_64 1/9
Running scriptlet: apr-1.6.3-12.el8.x86_64 1/9
Installing : apr-util-bdb-1.6.1-9.el8.x86_64 2/9
Installing : apr-util-openssl-1.6.1-9.el8.x86_64 3/9
Installing : apr-util-1.6.1-9.el8.x86_64 4/9
Running scriptlet: apr-util-1.6.1-9.el8.x86_64 4/9
Installing : httpd-tools-2.4.37-62.module+el8.9.0+19699+7a7a2044.x86_64 5/9
Running scriptlet: httpd-filesystem-2.4.37-62.module+el8.9.0+19699+7a7a2044.noarch 6/9
Installing : httpd-filesystem-2.4.37-62.module+el8.9.0+19699+7a7a2044.noarch 6/9
Installing : redhat-logos-httpd-84.5-2.el8.noarch 7/9
Installing : mod_http2-1.15.7-8.module+el8.9.0+21652+2dd1200b.5.x86_64 8/9
Installing : httpd-2.4.37-62.module+el8.9.0+19699+7a7a2044.x86_64 9/9
Running scriptlet: httpd-2.4.37-62.module+el8.9.0+19699+7a7a2044.x86_64 9/9
Verifying : redhat-logos-httpd-84.5-2.el8.noarch 1/9
Verifying : apr-1.6.3-12.el8.x86_64 2/9
Verifying : apr-util-bdb-1.6.1-9.el8.x86_64 3/9
Verifying : apr-util-openssl-1.6.1-9.el8.x86_64 4/9
Verifying : httpd-2.4.37-62.module+el8.9.0+19699+7a7a2044.x86_64 5/9
Verifying : httpd-filesystem-2.4.37-62.module+el8.9.0+19699+7a7a2044.noarch 6/9
Verifying : httpd-tools-2.4.37-62.module+el8.9.0+19699+7a7a2044.x86_64 7/9
Verifying : apr-util-1.6.1-9.el8.x86_64 8/9
Verifying : mod_http2-1.15.7-8.module+el8.9.0+21652+2dd1200b.5.x86_64 9/9
Installed products updated.
Installed:
apr-1.6.3-12.el8.x86_64 apr-util-1.6.1-9.el8.x86_64
apr-util-bdb-1.6.1-9.el8.x86_64 apr-util-openssl-1.6.1-9.el8.x86_64
httpd-2.4.37-62.module+el8.9.0+19699+7a7a2044.x86_64 httpd-filesystem-2.4.37-62.module+el8.9.0+19699+7a7a2044.noarch
httpd-tools-2.4.37-62.module+el8.9.0+19699+7a7a2044.x86_64 mod_http2-1.15.7-8.module+el8.9.0+21652+2dd1200b.5.x86_64
redhat-logos-httpd-84.5-2.el8.noarch
Complete!
“Complite!”と表示されたらインストール完了です。
“httpd-version”コマンドでインストールされたApache httpdのバージョンが確認できます。
# httpd -version
Server version: Apache/2.4.37 (Red Hat Enterprise Linux)
Server built: Aug 17 2023 10:52:25
余談ですが、逆にApache HTTP Serverをアンインストールする際は以下のコマンドを実行します。
# yum -y remove httpd
Failed to set locale, defaulting to C.UTF-8
Dependencies resolved.
==============================================================================================================================================================
Package Architecture Version Repository Size
==============================================================================================================================================================
Removing:
httpd x86_64 2.4.37-62.module+el8.9.0+19699+7a7a2044 @rhel-8-for-x86_64-appstream-rhui-rpms 4.3 M
Removing unused dependencies:
apr x86_64 1.6.3-12.el8 @rhel-8-for-x86_64-appstream-rhui-rpms 272 k
apr-util x86_64 1.6.1-9.el8 @rhel-8-for-x86_64-appstream-rhui-rpms 217 k
apr-util-bdb x86_64 1.6.1-9.el8 @rhel-8-for-x86_64-appstream-rhui-rpms 12 k
apr-util-openssl x86_64 1.6.1-9.el8 @rhel-8-for-x86_64-appstream-rhui-rpms 20 k
httpd-filesystem noarch 2.4.37-62.module+el8.9.0+19699+7a7a2044 @rhel-8-for-x86_64-appstream-rhui-rpms 400
httpd-tools x86_64 2.4.37-62.module+el8.9.0+19699+7a7a2044 @rhel-8-for-x86_64-appstream-rhui-rpms 194 k
mod_http2 x86_64 1.15.7-8.module+el8.9.0+21652+2dd1200b.5 @rhel-8-for-x86_64-appstream-rhui-rpms 394 k
redhat-logos-httpd noarch 84.5-2.el8 @rhel-8-for-x86_64-baseos-rhui-rpms 8.2 k
Transaction Summary
==============================================================================================================================================================
Remove 9 Packages
Freed space: 5.4 M
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Running scriptlet: httpd-2.4.37-62.module+el8.9.0+19699+7a7a2044.x86_64 1/1
Running scriptlet: httpd-2.4.37-62.module+el8.9.0+19699+7a7a2044.x86_64 1/9
Erasing : httpd-2.4.37-62.module+el8.9.0+19699+7a7a2044.x86_64 1/9
Running scriptlet: httpd-2.4.37-62.module+el8.9.0+19699+7a7a2044.x86_64 1/9
Erasing : httpd-filesystem-2.4.37-62.module+el8.9.0+19699+7a7a2044.noarch 2/9
Running scriptlet: httpd-filesystem-2.4.37-62.module+el8.9.0+19699+7a7a2044.noarch 2/9
Erasing : redhat-logos-httpd-84.5-2.el8.noarch 3/9
Erasing : httpd-tools-2.4.37-62.module+el8.9.0+19699+7a7a2044.x86_64 4/9
Erasing : apr-util-1.6.1-9.el8.x86_64 5/9
Running scriptlet: apr-util-1.6.1-9.el8.x86_64 5/9
Erasing : apr-1.6.3-12.el8.x86_64 6/9
Running scriptlet: apr-1.6.3-12.el8.x86_64 6/9
Erasing : apr-util-bdb-1.6.1-9.el8.x86_64 7/9
Erasing : apr-util-openssl-1.6.1-9.el8.x86_64 8/9
Erasing : mod_http2-1.15.7-8.module+el8.9.0+21652+2dd1200b.5.x86_64 9/9
Running scriptlet: mod_http2-1.15.7-8.module+el8.9.0+21652+2dd1200b.5.x86_64 9/9
Verifying : apr-1.6.3-12.el8.x86_64 1/9
Verifying : apr-util-1.6.1-9.el8.x86_64 2/9
Verifying : apr-util-bdb-1.6.1-9.el8.x86_64 3/9
Verifying : apr-util-openssl-1.6.1-9.el8.x86_64 4/9
Verifying : httpd-2.4.37-62.module+el8.9.0+19699+7a7a2044.x86_64 5/9
Verifying : httpd-filesystem-2.4.37-62.module+el8.9.0+19699+7a7a2044.noarch 6/9
Verifying : httpd-tools-2.4.37-62.module+el8.9.0+19699+7a7a2044.x86_64 7/9
Verifying : mod_http2-1.15.7-8.module+el8.9.0+21652+2dd1200b.5.x86_64 8/9
Verifying : redhat-logos-httpd-84.5-2.el8.noarch 9/9
Installed products updated.
Removed:
apr-1.6.3-12.el8.x86_64 apr-util-1.6.1-9.el8.x86_64
apr-util-bdb-1.6.1-9.el8.x86_64 apr-util-openssl-1.6.1-9.el8.x86_64
httpd-2.4.37-62.module+el8.9.0+19699+7a7a2044.x86_64 httpd-filesystem-2.4.37-62.module+el8.9.0+19699+7a7a2044.noarch
httpd-tools-2.4.37-62.module+el8.9.0+19699+7a7a2044.x86_64 mod_http2-1.15.7-8.module+el8.9.0+21652+2dd1200b.5.x86_64
redhat-logos-httpd-84.5-2.el8.noarch
Complete!
Apache HTTP Serverをアンインストールするとバージョンの確認ができなくなります。
# httpd -version
bash: /sbin/httpd: No such file or directory
3-2-4.Apache HTTP Serverの起動・停止・再起動
Apache HTTP Serverのインストール完了後は、まだWebサーバは起動していませんのでApache HTTP Serverを起動します。
Apache HTTP Serverの状態は”systemctl status httpd”コマンドで確認することができます。
# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: inactive (dead)
Docs: man:httpd.service(8)
“systemctl start httpd”コマンドでApache HTTP Serverを起動します。コマンド実行後にApache HTTP Serverが起動しているか”systemctl status httpd”コマンドで状態を確認します。
# systemctl start httpd
# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: active (running) since Sun 2024-05-12 07:24:29 UTC; 7s ago
Docs: man:httpd.service(8)
Main PID: 31510 (httpd)
Status: "Started, listening on: port 80"
Tasks: 213 (limit: 23319)
Memory: 29.8M
CGroup: /system.slice/httpd.service
├─31510 /usr/sbin/httpd -DFOREGROUND
├─31511 /usr/sbin/httpd -DFOREGROUND
├─31512 /usr/sbin/httpd -DFOREGROUND
├─31513 /usr/sbin/httpd -DFOREGROUND
└─31514 /usr/sbin/httpd -DFOREGROUND
May 12 07:24:29 training-WEBAP-vm03 systemd[1]: Starting The Apache HTTP Server...
May 12 07:24:29 training-WEBAP-vm03 systemd[1]: Started The Apache HTTP Server.
May 12 07:24:29 training-WEBAP-vm03 httpd[31510]: Server configured, listening on: port 80
Active: active (running)になっていればApache HTTP Serverが正常に起動しています。
補足として停止と再起動のコマンドは以下です。
停止コマンド: systemctl stop httpd
# systemctl stop httpd
# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: inactive (dead)
Docs: man:httpd.service(8)
May 12 07:24:29 training-WEBAP-vm03 systemd[1]: Starting The Apache HTTP Server...
May 12 07:24:29 training-WEBAP-vm03 systemd[1]: Started The Apache HTTP Server.
May 12 07:24:29 training-WEBAP-vm03 httpd[31510]: Server configured, listening on: port 80
May 12 07:26:06 training-WEBAP-vm03 systemd[1]: Stopping The Apache HTTP Server...
May 12 07:26:07 training-WEBAP-vm03 systemd[1]: httpd.service: Succeeded.
May 12 07:26:07 training-WEBAP-vm03 systemd[1]: Stopped The Apache HTTP Server.
再起動コマンド: systemctl restart httpd
※ Apache HTTP Serverの設定ファイルなどを編集した際に設定反映のために使用します。
# systemctl restart httpd
# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: active (running) since Sun 2024-05-12 07:27:34 UTC; 3s ago
Docs: man:httpd.service(8)
Main PID: 31988 (httpd)
Status: "Started, listening on: port 80"
Tasks: 213 (limit: 23319)
Memory: 25.3M
CGroup: /system.slice/httpd.service
├─31988 /usr/sbin/httpd -DFOREGROUND
├─31989 /usr/sbin/httpd -DFOREGROUND
├─31990 /usr/sbin/httpd -DFOREGROUND
├─31991 /usr/sbin/httpd -DFOREGROUND
└─31992 /usr/sbin/httpd -DFOREGROUND
May 12 07:27:34 training-WEBAP-vm03 systemd[1]: httpd.service: Succeeded.
May 12 07:27:34 training-WEBAP-vm03 systemd[1]: Stopped The Apache HTTP Server.
May 12 07:27:34 training-WEBAP-vm03 systemd[1]: Starting The Apache HTTP Server...
May 12 07:27:34 training-WEBAP-vm03 systemd[1]: Started The Apache HTTP Server.
May 12 07:27:34 training-WEBAP-vm03 httpd[31988]: Server configured, listening on: port 80
3-3.テストページ表示
任意のブラウザ(Google Chorme、Microsoft Edgeなど)からパブリックIPアドレスを入力し、Apache HTTP Serverのテストページが表示されるか確認します。
3-4.テストページ表示2
デフォルトのテストページの他に任意のhtmlファイルをApache HTTP Serverで表示するようにやってみます。 “index.html”という名前のファイルを”/var/www/html”ディレクトリの配下に作成します。
# cd /var/www/html/
# ls
# pwd
/var/www/html
# nano index.html
<html>
<head>
<title>Test Page</title>
</head>
<body>
<h1>Hello, World!</h1>
</body>
</html>
任意のテキストエディタ(Vim、nano)を使用してindex.htmlに以下のテスト用HTMLコードを記述します。
<html>
<head>
<title>Test Page</title>
</head>
<body>
<h1>Hello, World!</h1>
</body>
</html>
保存してテキストエディタを終了します。
任意のブラウザ(Google Chorme、Microsoft Edgeなど)からパブリックIPアドレスを入力し、Apache HTTP Serverのテストページが表示されるか確認します。
終わりに
以上、Linux RHELにApache HTTP Serverをインストールする方法を整理しました。
Apache HTTP Serverをインストールする際に役に立てれば幸いです。