CentOS 8に仮想ホストでApacheをインストールする方法

Apacheウェブサーバーは、ホスティング業界で大規模な市場シェアを享受し続けているオープンソースで人気のあるHTTPウェブサーバーです。これには、モジュールの拡張機能、マルチプロトコルのサポート、簡素化された構成、ほんの一部のマルチ言語のサポートなど、多くの機能が含まれています。

このガイドでは、仮想ホスト環境を使用したCentOS 8およびRHEL 8へのApache Webサーバーのインストールについて説明します。このチュートリアルを書いている時点では、Apacheの最新バージョンはApache 2.2.43です。

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

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

 $ sudo dnf update

アップデートが完了したら、次のコマンドを実行してApacheウェブサーバーをインストールします。

 $ sudo dnf install httpd

 

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

 $ rpm -qi httpd

Apacheのバージョンを確認する

Apacheのバージョンを確認する

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

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

 $ sudo systemctl start httpd

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

 $ sudo systemctl status httpd

Apacheサービスステータスの確認

Apacheサービスステータスの確認

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

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

 http:// server-ip

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

 $ curl ifconfig.me または $ curl -4 icanhazip.com

CentOSサーバーのIPアドレスを見つける

CentOSサーバーのIPアドレスを見つける

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

Apache Webページを確認する

Apache Webページを確認する

これは、Webサーバーが実行されていることの確認です。

Apacheウェブサーバーの管理

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サイトのみを提供またはホストするように構成されています。 1つのWebサイトのみをホストする場合は、この手順は必要ありません。ただし、サーバーで複数のドメインをホストする予定の場合は、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に指示します。ただし、先へ進むには、2つのディレクトリを作成する必要がありsites-availablesites-enabledディレクトリです。

仮想ホストファイルは、 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ディレクトリにシンボリックリンクを作成して、仮想ホストファイルをsites-enabledにし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が同梱されています。前のステップでカスタムログディレクトリを設定したので、ディレクトリに書き込むようにApacheウェブサーバーに指示するために、いくつかのSELinuxポリシーを更新する必要があります。

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

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

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

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

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

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

ApacheログディレクトリにSELinuxポリシーを設定する

ApacheログディレクトリにSELinuxポリシーを設定する

出力から、設定されたコンテキストはhttpd_sys_content_tです。これは、ウェブサーバーがログディレクトリ内のファイルのみを読み取ることができることを示しています。 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/

SELinuxコンテキストタイプの確認

SELinuxコンテキストタイプの確認

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

変更を適用するためにApacheを再起動します。

 $ sudo systemctl restart httpd

次に示すように、Apacheがログファイルにログファイルを保存しているかどうかを確認するには、その内容をリストします。

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

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

Apacheログファイルを確認する

Apacheログファイルを確認する

Apache仮想ホストのテスト

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

 http://ドメイン名

ウェブサイトのApache仮想ホストを確認する

ウェブサイトのApache仮想ホストを確認する

パーフェクト!これは、すべてが順調に進んでおり、仮想ホストが期待どおりに機能していることを示しています。

結論

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

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

Source