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 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 または $ curl -4 icanhazip.com
サーバーのIPアドレスを参照すると、次の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-available
とsites-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/
出力は以下のようになります。
出力から、設定されたコンテキストは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/
出力にhttpd_log_t
れているように、コンテキストタイプがhttpd_log_t
変更されていることに注意してください。
変更を適用するためにApacheを再起動します。
$ sudo systemctl restart httpd
次に示すように、Apacheがログファイルにログファイルを保存しているかどうかを確認するには、その内容をリストします。
$ ls -l /var/www/crazytechgeek.info/log/
次の2つのログファイルが表示されるはずです。エラーログファイルとリクエストログファイル。
Apache仮想ホストのテスト
最後に、Apache Webサーバーが仮想ホストファイルを提供していることを確認する必要があります。これを行うには、ブラウザーを開き、サーバーのIPアドレスまたはドメイン名に移動します。
http://ドメイン名
パーフェクト!これは、すべてが順調に進んでおり、仮想ホストが期待どおりに機能していることを示しています。
結論
このガイドでは、 CentOS 8およびRHEL 8に Apacheウェブサーバーをインストールする方法と、追加のドメインのコンテンツを提供するように仮想ホストファイルを構成する方法について学びました。追加のドメインに対応するのに適していると思われる場合は、複数の仮想ホストファイルを自由に構成してください。
完全なホスティングスタックをセットアップする場合は、LAMPスタックをCentOS 8にインストールすることをお勧めします。