2022-06-10

[RHEL9] httpd の設定

Apache HTTP Server (httpd) は、Apache License 2.0 の条件でリリースされるフリーでオープンソースのクロスプラットフォームの Web サーバソフトウェアです。Apache は Apache ソフトウェア財団の支援のもと、開発者のオープンコミュニティによって開発・保守されています。

Wikipedia より抜粋、修正
今回のテーマ

サーバー用 PC に Web 関連パッケージをインストールして、サーバーの各ユーザーアカウント内で Web コンテンツの作成をできるように設定します。

--- OUTLINE ---

Apache HTTP Server (httpd) をインストールおよび設定をする OS は下記のとおりです。

OS Red Hat Enterprise Linux 9.0 (Plow) x86_64

 

httpd の設定

Apache HTTP Server httpd と httpd-devel をインストールしました。

Apache HTTP Server のインストール
[bitwalk@rhel9 ~]$ sudo dnf install httpd httpd-devel
[sudo] bitwalk のパスワード:
サブスクリプション管理リポジトリーを更新しています。
メタデータの期限切れの最終確認: 3:36:41 時間前の 2022年06月09日 03時26分40秒 に 実施しました。
依存関係が解決しました。
================================================================================
 パッケージ       Arch   バージョン      リポジトリー                     サイズ
================================================================================
インストール:
 httpd            x86_64 2.4.51-7.el9_0  rhel-9-for-x86_64-appstream-rpms 1.5 M
 httpd-devel      x86_64 2.4.51-7.el9_0  rhel-9-for-x86_64-appstream-rpms 209 k
依存関係のインストール:
 apr              x86_64 1.7.0-11.el9    rhel-9-for-x86_64-appstream-rpms 127 k
 apr-devel        x86_64 1.7.0-11.el9    rhel-9-for-x86_64-appstream-rpms 234 k
 apr-util         x86_64 1.6.1-20.el9    rhel-9-for-x86_64-appstream-rpms  98 k
 apr-util-bdb     x86_64 1.6.1-20.el9    rhel-9-for-x86_64-appstream-rpms  15 k
 apr-util-devel   x86_64 1.6.1-20.el9    rhel-9-for-x86_64-appstream-rpms  80 k
 cyrus-sasl       x86_64 2.1.27-20.el9   rhel-9-for-x86_64-baseos-rpms     77 k
 cyrus-sasl-devel x86_64 2.1.27-20.el9   rhel-9-for-x86_64-appstream-rpms 117 k
 expat-devel      x86_64 2.2.10-12.el9_0 rhel-9-for-x86_64-appstream-rpms  52 k
 httpd-filesystem noarch 2.4.51-7.el9_0  rhel-9-for-x86_64-appstream-rpms  17 k
 httpd-tools      x86_64 2.4.51-7.el9_0  rhel-9-for-x86_64-appstream-rpms  88 k
 libdb-devel      x86_64 5.3.28-53.el9   rhel-9-for-x86_64-appstream-rpms  40 k
 openldap-devel   x86_64 2.4.59-4.el9_0  rhel-9-for-x86_64-appstream-rpms 746 k
 redhat-logos-httpd
                  noarch 90.4-1.el9      rhel-9-for-x86_64-appstream-rpms  18 k
弱い依存関係のインストール:
 apr-util-openssl x86_64 1.6.1-20.el9    rhel-9-for-x86_64-appstream-rpms  17 k
 mod_http2        x86_64 1.15.19-2.el9   rhel-9-for-x86_64-appstream-rpms 153 k
 mod_lua          x86_64 2.4.51-7.el9_0  rhel-9-for-x86_64-appstream-rpms  63 k

トランザクションの概要
================================================================================
インストール  18 パッケージ

ダウンロードサイズの合計: 3.6 M
インストール後のサイズ: 12 M
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
(1/18): apr-util-openssl-1.6.1-20.el9.x86_64.rp  33 kB/s |  17 kB     00:00
   :
   :
   :
(18/18): openldap-devel-2.4.59-4.el9_0.x86_64.r 2.3 MB/s | 746 kB     00:00
--------------------------------------------------------------------------------
合計                                            1.7 MB/s | 3.6 MB     00:02
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
  準備             :                                                        1/1
  インストール中   : apr-1.7.0-11.el9.x86_64                               1/18
   :
   :
   :
  インストール中   : httpd-devel-2.4.51-7.el9_0.x86_64                    18/18
  scriptletの実行中: httpd-2.4.51-7.el9_0.x86_64                          18/18
  scriptletの実行中: httpd-devel-2.4.51-7.el9_0.x86_64                    18/18
  検証             : cyrus-sasl-2.1.27-20.el9.x86_64                       1/18
   :
   :
   :
  検証             : openldap-devel-2.4.59-4.el9_0.x86_64                 18/18
インストール済みの製品が更新されています。

インストール済み:
  apr-1.7.0-11.el9.x86_64               apr-devel-1.7.0-11.el9.x86_64
  apr-util-1.6.1-20.el9.x86_64          apr-util-bdb-1.6.1-20.el9.x86_64
  apr-util-devel-1.6.1-20.el9.x86_64    apr-util-openssl-1.6.1-20.el9.x86_64
  cyrus-sasl-2.1.27-20.el9.x86_64       cyrus-sasl-devel-2.1.27-20.el9.x86_64
  expat-devel-2.2.10-12.el9_0.x86_64    httpd-2.4.51-7.el9_0.x86_64
  httpd-devel-2.4.51-7.el9_0.x86_64     httpd-filesystem-2.4.51-7.el9_0.noarch
  httpd-tools-2.4.51-7.el9_0.x86_64     libdb-devel-5.3.28-53.el9.x86_64
  mod_http2-1.15.19-2.el9.x86_64        mod_lua-2.4.51-7.el9_0.x86_64
  openldap-devel-2.4.59-4.el9_0.x86_64  redhat-logos-httpd-90.4-1.el9.noarch

完了しました!
[bitwalk@rhel9 ~]$

 

サービスの起動

Apache HTTP Server のサービス、httpd を起動 (start) します。また、OS 起動後にサービスが使えるように有効化 (enable) しておきます。

httpd の起動 
[bitwalk@rhel9 ~]$ sudo systemctl start httpd
[bitwalk@rhel9 ~]$ sudo systemctl enable httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
[bitwalk@rhel9 ~]$

 

ファイアーウォールの設定

HTTP で通信できるようにサービスを追加した後、ファイアーウォールの設定を再ロードします。

ファイアーウォールの設定 
[bitwalk@rhel9 ~]$ sudo firewall-cmd --zone=public --permanent --add-service=http
success
[bitwalk@rhel9 ~]$ sudo firewall-cmd --reload
success
[bitwalk@rhel9 ~]$

LAN 内の他の PC のブラウザからこの RHEL の Web サーバ (192.168.150.63) へアクセスして、トップページが表示されることを確認します。

他の PC のブラウザからアクセスした例

 

ユーザ毎のディレクトリの設定

ユーザアカウント内の public_html 内をウェブサイトとして利用できるように /etc/httpd/conf.d/userdir.conf を編集します。下記に変更した箇所を赤字で示しました。

/etc/httpd/conf.d/userdir.conf の設定 
#
# UserDir: The name of the directory that is appended onto a user's home
# directory if a ~user request is received.
#
# The path to the end user account 'public_html' directory must be
# accessible to the webserver userid.  This usually means that ~userid
# must have permissions of 711, ~userid/public_html must have permissions
# of 755, and documents contained therein must be world-readable.
# Otherwise, the client will only receive a "403 Forbidden" message.
#
<IfModule mod_userdir.c>
    #
    # UserDir is disabled by default since it can confirm the presence
    # of a username on the system (depending on home directory
    # permissions).
    #
    #UserDir disabled
    UserDir public_html

    #
    # To enable requests to /~user/ to serve the user's public_html
    # directory, remove the "UserDir disabled" line above, and uncomment
    # the following line instead:

ユーザアカウント内に public_html ディレクトリを作成します。この例ではユーザアカウントは bitwalk のみです。パーミッションは下記のようになっています。

ユーザアカウントのディレクトリとパーミッション 
[bitwalk@rhel9 ~]$ cd ~
[bitwalk@rhel9 ~]$ mkdir public_html
[bitwalk@rhel9 ~]$ chmod 755 /home/bitwalk
[bitwalk@rhel9 ~]$ ll -d /home/bitwalk
drwxr-xr-x. 18 bitwalk bitwalk 4096  6月  9 07:12 /home/bitwalk
[bitwalk@rhel9 ~]$ ll -d /home/bitwalk/public_html
drwxr-xr-x. 2 bitwalk bitwalk 6  6月  9 07:12 /home/bitwalk/public_html
[bitwalk@rhel9 ~]$

httpd を再起動します。

httpd サービスの再起動 
[bitwalk@rhel9 ~]$ sudo systemctl restart httpd

SELinux の設定

最後に SELinux 下で httpd がユーザーディレクトリをアクセスできるように httpd_enable_homedirs を有効にします。

SELinux の httpd_enable_homedirs を有効化
[bitwalk@rhel9 ~]$ sudo setsebool -P httpd_enable_homedirs 1

 

ユーザーサイトのアクセス確認

LAN 内の他の PC から、ユーザーサイト http://192.168.150.63/~bitwalk がアクセスできることを確認します。事前に index.html を用意して /home/bitwalk/public_html/ に保存しておきました。

テストページでユーザーサイトの確認

 

mod_ssl のインストール

mod_ssl のインストール 

SSL/TLS による HTTPS 通信の設定ですが、Web サーバーの公開鍵証明書と秘密鍵を入手しなければなりません。

家庭内の LAN で動作確認するだけですので、既にインストールされていた下記証明書と秘密鍵で、それっぽく動作を確認をしました。詳細は、参考サイト [1] を参照してください。

  • /etc/pki/tls/certs/localhost.crt
  • /etc/pki/tls/private/localhost.key

※ これらのファイルについて rpm -qf コマンドでは、どのパッケージに属しているのか判りませんでしたが、タイムスタンプから察するに mod_ssl をインストールしたときにポストスクリプト (scriptlet) で作成された自己署名証明書と思われます。

前置きが長くなりましたが、下記のように mod_ssl をインストールします。

[bitwalk@rhel9 ~]$ sudo dnf -y install mod_ssl
[sudo] bitwalk のパスワード:
サブスクリプション管理リポジトリーを更新しています。
メタデータの期限切れの最終確認: 4:16:23 時間前の 2022年06月09日 03時26分40秒 に 実施しました。
依存関係が解決しました。
================================================================================
 パッケージ
           Arch     バージョン         リポジトリー                       サイズ
================================================================================
インストール:
 mod_ssl   x86_64   1:2.4.51-7.el9_0   rhel-9-for-x86_64-appstream-rpms   114 k

トランザクションの概要
================================================================================
インストール  1 パッケージ

ダウンロードサイズの合計: 114 k
インストール後のサイズ: 261 k
パッケージのダウンロード:
mod_ssl-2.4.51-7.el9_0.x86_64.rpm               221 kB/s | 114 kB     00:00
--------------------------------------------------------------------------------
合計                                            220 kB/s | 114 kB     00:00
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
  準備             :                                                        1/1
  インストール中   : mod_ssl-1:2.4.51-7.el9_0.x86_64                        1/1
  scriptletの実行中: mod_ssl-1:2.4.51-7.el9_0.x86_64                        1/1
  検証             : mod_ssl-1:2.4.51-7.el9_0.x86_64                        1/1
インストール済みの製品が更新されています。

インストール済み:
  mod_ssl-1:2.4.51-7.el9_0.x86_64

完了しました!
[bitwalk@rhel9 ~]$

ポート 443 を利用できるようにファイアウォールを設定します。

ファイアーウォールの設定 (2) 
[bitwalk@rhel9 ~]$ sudo firewall-cmd --permanent --add-port=443/tcp
success
[bitwalk@rhel9 ~]$ sudo firewall-cmd --reload
success

httpd を再起動します。

httpd サービスの再起動 
[bitwalk@rhel9 ~]$ sudo systemctl restart httpd

LAN 内の他の PC のブラウザからこの RHEL の Web サーバ (192.168.150.63) へ https:// でアクセスしてみます。

https でアクセスした例 (1)

「この接続ではプライバシーが保護されません」という警告が出ますが、アクセスすることはできます。

https でアクセスした例 (2)

 

まとめ

最低限の設定ですが、動作を確認できました。

 

参考サイト

  1. 1.8. Apache HTTP サーバーで TLS 暗号化の設定 Red Hat Enterprise Linux 9 | Red Hat Customer Portal
  2. SSL/TLS サーバー証明書の基礎知識|BLOG|サイバートラスト

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ Linuxへ
にほんブログ村
このエントリーをはてなブックマークに追加

0 件のコメント: