ウェブサイト検索

CentOS 8 に仮想ホストを使用して Apache をインストールする方法


Apache Web サーバーは、オープンソースの人気のある HTTP Web サーバーであり、ホスティング業界で大きな市場シェアを獲得し続けています。ほんの数例を挙げると、モジュールの機能強化、マルチプロトコルのサポート、簡素化された構成、多言語のサポートなど、多くの機能が付属しています。

こちらもお読みください: CentOS 8 に Nginx をインストールする方法

このガイドでは、仮想ホスト環境を使用してCentOS 8 およびRHEL 8Apache ウェブサーバーをインストールする手順を説明します。このチュートリアルの執筆時点での Apache の最新バージョンはApache 2.2.43 です。

Apache Webサーバーのインストール

まず、次の dnf コマンドを使用して、CentOS 8 または RHEL 8 システム パッケージ リストを更新します。

sudo dnf update

更新が完了したら、次のコマンドを実行してApache Webサーバーをインストールします。

sudo dnf install httpd

インストールしたら、rpm コマンドを実行して Apache のバージョンを確認できます。

rpm -qi httpd

このコマンドは、パッケージのバージョン、リリース日、ビルド、アーキテクチャなどの一連の情報を出力します。

Apache HTTP Web サービスを開始するには、systemctl コマンドを実行します。

sudo systemctl start httpd

サービスが実行されているかどうかを確認するには、実行します。

sudo systemctl status httpd

出力から、緑色の「アクティブ」ステータスは、Apache Web サーバーが稼働中であることを示します。

Web サーバーが実行されているという疑念を解消するには、示されているようにサーバーの IP アドレスまたはドメイン名を参照して、Apache からテスト ページをリクエストします。

http://server-ip  

ifconfig コマンドを実行すると、サーバー IP を取得できます。サーバーがクラウドでホストされている場合は、curl コマンドを実行してパブリック IP を取得できます。

curl ifconfig.me 
OR
curl -4 icanhazip.com

サーバーの IP アドレスを参照すると、次の Web ページが表示されるはずです。

これは、Web サーバーが実行されていることを確実に確認します。

Apache Webサーバーの管理

Apache をインストールして実行すると、systemctl 検査ツールを使用して Apache を管理できます。

たとえば、Apache を停止するには、次のコマンドを実行します。

sudo systemctl stop httpd

サービスを再度開始するには、次のコマンドを実行します。

sudo systemctl start httpd

構成ファイルのいずれかを変更し、変更を適用するために再起動する必要がある場合は、次のコマンドを実行します。

sudo systemctl restart httpd

通常、サービスを再起動するとサービスが中断されます。より良い方法は、接続を中断せずに単純にリロードすることです。

sudo systemctl reload httpd

起動または再起動時に Apache Web サーバーを自動的に起動するには、以下のコマンドを実行します。これにより、ユーザーの介入なしに Apache が自動的に起動します。

sudo systemctl enable httpd

起動時にサービスを自動的に開始しないことを選択した場合は、次を実行します。

sudo systemctl disable httpd

Apache 仮想ホストのセットアップ

デフォルトでは、Apache Web サーバーは 1 つの Web サイトのみを提供またはホストするように構成されています。 Web サイトを 1 つだけホストする場合、この手順は必要ありません。ただし、サーバー上で複数のドメインをホストする予定がある場合は、Apache 仮想ホストを構成する必要があります。

仮想ホストは、デフォルトのドメインとは別のドメインをセットアップできるようにする構成が含まれる別個のファイルです。このガイドでは、ドメイン crazytechgeek.info の仮想ホストをセットアップします。

デフォルトの仮想ホストは、/var/www/html ディレクトリにあります。これは単一のサイトでのみ機能します。ドメイン用に別の仮想ホストを作成するには、図に示すように、/var/www ディレクトリ内に別のディレクトリ構造を作成します。

sudo mkdir -p /var/www/crazytechgeek.info/html

さらに、ログ ファイルを保存するためのディレクトリを作成することもできます。

sudo mkdir -p /var/www/crazytechgeek.info/log

次に、図に示すように、$USER 環境変数を使用してファイルのアクセス許可を編集します。

sudo chown -R $USER:$USER /var/www/crazytechgeek.info/html

また、図のように webroot ディレクトリの権限を調整します。

sudo chmod -R 755 /var/www

次に、サンプルの index.html ファイルを次のように作成します。

sudo vim /var/www/crazytechgeek.info/html/index.html

キーボードで文字 'i' を押し、示されているように、仮想ホストのテスト時に Web ブラウザに表示されるサンプル コンテンツを貼り付けます。

<html>
  <head>
    <title>Welcome to crazytechgeek.info!</title>
  </head>
  <body>
    <h1>Success! The crazytechgeek.info virtual host is up and perfectly working!</h1>
  </body>
</html>

構成ファイルを保存して終了します。

サンプル インデックス ファイルとサイト ディレクトリが作成されたら、次に仮想ホスト ファイルを作成できます。仮想ホスト ファイルにはドメインのサイト構成が含まれており、クライアントのリクエストにどのように応答するかを Apache に指示します。

仮想ホスト ファイルにはドメインのサイト構成が含まれており、クライアントのリクエストにどのように応答するかを Apache に指示します。ただし、続行するには、sites-available ディレクトリと sites-enabled ディレクトリの 2 つのディレクトリを作成する必要があります。

仮想ホスト ファイルは sites-available ディレクトリに保存され、sites-enabled ディレクトリには仮想ホストへのシンボリック リンクが含まれます。

図のように両方のディレクトリを作成します。

sudo mkdir /etc/httpd/sites-available
sudo mkdir /etc/httpd/sites-enabled

次に、Apache Web サーバーのメイン構成ファイルを変更し、サイト対応ディレクトリ内の仮想ホストの場所を Apache に指示します。

sudo vim /etc/httpd/conf/httpd.conf

構成ファイルの最後に示されている行を追加します。

IncludeOptional sites-enabled/*.conf

保存して終了。

次に、次のように仮想ホスト ファイルを作成します。

sudo vim /etc/httpd/sites-available/crazytechgeek.info

以下の内容を貼り付け、crazytechgeek.info を独自のドメイン名に置き換えます。

<VirtualHost *:80>
    ServerName www.crazytechgeek.info
    ServerAlias crazytechgeek.info
    DocumentRoot /var/www/crazytechgeek.info/html
    ErrorLog /var/www/crazytechgeek.info/log/error.log
    CustomLog /var/www/crazytechgeek.info/log/requests.log combined
</VirtualHost>

ファイルを保存して終了します。

ここで、sites-enabled ディレクトリにシンボリック リンクを作成して、仮想ホスト ファイルを有効にします。

sudo ln -s /etc/httpd/sites-available/crazytechgeek.info.conf /etc/httpd/sites-enabled/crazytechgeek.info.conf

仮想ホストの SELinux 権限の調整

CentOS 8RHEL 8 には、Linux システムのセキュリティを強化するためのセキュリティ モジュールである SELinux が同梱されています。前の手順でカスタムログ ディレクトリを構成したため、一部の SELinux ポリシーを更新して、Apache Web サーバーにディレクトリへの書き込みを指示する必要があります。

SELinux Apache ポリシーの調整には 2 つのアプローチがあります。1 つは全体的に調整ポリシーを調整する方法、もう 1 つはディレクトリ上のポリシーを調整する方法です。後者の方がより好ましいため、後者の方が好ましい。

ディレクトリ上の SELinux ポリシーの調整

ログ ディレクトリの SELinux 権限を編集すると、Apache の Web サーバーのポリシーを完全に制御できるようになります。この方法は非常に時間がかかり、仮想ホスト構成ファイルで指定された追加ディレクトリのコンテキスト タイプを手動で構成する必要があります。

開始する前に、まず SELinux によってログ ディレクトリに割り当てられたコンテキスト タイプを確認します。

sudo ls -dlZ /var/www/crazytechgeek.info/log/

出力は以下のようになります。

出力から、設定されたコンテキストは httpd_sys_content_t です。これは、Web サーバーがログ ディレクトリ内のファイルのみを読み取ることができることを示します。 Apache がログ エントリを生成してディレクトリに追加できるようにするには、このコンテキストを httpd_log_t に変更する必要があります。

したがって、次のコマンドを実行します。

sudo semanage fcontext -a -t httpd_log_t "/var/www/crazytechgeek.info/log(/.*)?"

「semanage: command not found」というエラーが発生した場合。

これは、semanage コマンドを提供するパッケージがインストールされていないことを意味します。このエラーを修正するには、これらのパッケージをインストールする必要があります。ただし、その前に、次のコマンドを実行して、どのパッケージが semanage コマンドに提供されているかを確認します。

sudo dnf whatprovides /usr/sbin/semanage

出力により、semanage を提供するパッケージ、policycoreutils-python-utils が得られます。

ここで、DNF パッケージ マネージャーを使用して、示されているようにパッケージをインストールします。

sudo dnf install policycoreutils-python-utils

コンテキストを変更するコマンドが機能するようになりました。

sudo semanage fcontext -a -t httpd_log_t "/var/www/crazytechgeek.info/log(/.*)?"

変更を保存して永続化するには、次のように restorecon コマンドを発行します。

sudo restorecon -R -v /var/www/crazytechgeek.info/log

もう一度コマンドを実行すると、変更を確認できます。

sudo ls -dlZ /var/www/crazytechgeek.info/log/

出力に見られるように、コンテキスト タイプが httpd_log_t に変わっていることに注意してください。

変更を適用するには、Apache を再起動します。

sudo systemctl restart httpd

次に示すように内容をリストすることで、Apache がログ ファイルをログ ディレクトリに保存しているかどうかを確認できます。

ls -l /var/www/crazytechgeek.info/log/

図に示すように、エラー ログ ファイルとリクエスト ログ ファイルという 2 つのログ ファイルが表示されるはずです。

Apache仮想ホストのテスト

最後に、Apache Web サーバーが仮想ホスト ファイルを提供していることを確認する必要があります。これを行うには、ブラウザを開いてサーバーの IP アドレスまたはドメイン名に移動します。

http://domain-name

完璧!これは、すべてがうまくいき、仮想ホストが期待どおりに機能していることを示しています。

結論

このガイドでは、CentOS 8 および RHEL 8Apache ウェブサーバーをインストールする方法と、仮想ホスト ファイルを構成する方法を学習しました。追加のドメインのコンテンツを提供します。追加のドメインに対応できるように、複数の仮想ホスト ファイルを自由に構成できます。

完全なホスティング スタックをセットアップしたい場合は、CentOS 8 に LAMP スタックをインストールすることをお勧めします。