CentOS 8 に仮想ホストを使用して Apache をインストールする方法
Apache Web サーバーは、オープンソースの人気のある HTTP Web サーバーであり、ホスティング業界で大きな市場シェアを獲得し続けています。ほんの数例を挙げると、モジュールの機能強化、マルチプロトコルのサポート、簡素化された構成、多言語のサポートなど、多くの機能が付属しています。
こちらもお読みください: CentOS 8 に Nginx をインストールする方法
このガイドでは、仮想ホスト環境を使用してCentOS 8 およびRHEL 8 にApache ウェブサーバーをインストールする手順を説明します。このチュートリアルの執筆時点での 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 8 と RHEL 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 8 に Apache ウェブサーバーをインストールする方法と、仮想ホスト ファイルを構成する方法を学習しました。追加のドメインのコンテンツを提供します。追加のドメインに対応できるように、複数の仮想ホスト ファイルを自由に構成できます。
完全なホスティング スタックをセットアップしたい場合は、CentOS 8 に LAMP スタックをインストールすることをお勧めします。