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をインストールする際に役に立てれば幸いです。

投稿者 izumi kikumura

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です