開発者ドキュメント

CentOS8にApacheWebサーバーをインストールする方法

序章

Apache HTTPサーバーは、世界で最も広く使用されているWebサーバーです。 動的にロード可能なモジュール、堅牢なメディアサポート、他の一般的なソフトウェアとの広範な統合など、多くの強力な機能を提供します。

このガイドでは、CentOS8サーバーに仮想ホストを備えたApacheWebサーバーをインストールします。

前提条件

このガイドを完了するには、次のものが必要です。

ステップ1—Apacheをインストールする

Apacheは、CentOSのデフォルトのソフトウェアリポジトリ内で利用できます。つまり、Apacheを使用してインストールできます。 dnf パッケージマネージャー。

前提条件で構成された非rootsudoユーザーとして、Apacheパッケージをインストールします。

  1. sudo dnf install httpd

インストールを確認した後、 dnf Apacheと必要なすべての依存関係をインストールします。

前提条件のセクションに記載されているCentOS8ガイドを使用したサーバーの初期セットアップのステップ4を完了すると、すでにインストールされています。 firewalld サーバー上でHTTP経由でリクエストを処理します。

HTTPS経由でコンテンツを提供するようにApacheを構成する場合も、ポートを開く必要があります。 443 を有効にすることによって https サービス:

  1. sudo firewall-cmd --permanent --add-service=https

次に、ファイアウォールをリロードして、次の新しいルールを有効にします。

  1. sudo firewall-cmd --reload

ファイアウォールがリロードされると、サービスを開始してWebサーバーを確認する準備が整います。

ステップ2—Webサーバーを確認する

インストールが完了すると、ApacheはCentOSで自動的に起動しないため、Apacheプロセスを手動で起動する必要があります。

  1. sudo systemctl start httpd

次のコマンドを使用して、サービスが実行されていることを確認します。

  1. sudo systemctl status httpd

あなたは受け取ります active サービス実行時のステータス:

Output
● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disa> Active: active (running) since Thu 2020-04-23 22:25:33 UTC; 11s ago Docs: man:httpd.service(8) Main PID: 14219 (httpd) Status: "Running, listening on: port 80" Tasks: 213 (limit: 5059) Memory: 24.9M CGroup: /system.slice/httpd.service ├─14219 /usr/sbin/httpd -DFOREGROUND ├─14220 /usr/sbin/httpd -DFOREGROUND ├─14221 /usr/sbin/httpd -DFOREGROUND ├─14222 /usr/sbin/httpd -DFOREGROUND └─14223 /usr/sbin/httpd -DFOREGROUND ...

この出力が示すように、サービスは正常に開始されました。 ただし、これをテストする最良の方法は、Apacheにページを要求することです。

デフォルトのApacheランディングページにアクセスして、ソフトウェアがIPアドレスを介して正しく実行されていることを確認できます。 サーバーのIPアドレスがわからない場合は、コマンドラインからいくつかの異なる方法で取得できます。

タイプ q コマンドプロンプトに戻り、次のように入力します。

  1. hostname -I

このコマンドは、ホストのすべてのネットワークアドレスを表示するため、スペースで区切られたいくつかのIPアドレスを取得します。 Webブラウザーでそれぞれを試して、機能するかどうかを判断できます。

または、 curl からIPをリクエストするには icanhazip.com、インターネット上の別の場所から読み取ったパブリックIPv4アドレスを提供します。

  1. curl -4 icanhazip.com

サーバーのIPアドレスを取得したら、それをブラウザのアドレスバーに入力します。

http://your_server_ip

デフォルトのCentOS8ApacheWebページが表示されます。

このページは、Apacheが正しく機能していることを示しています。 また、重要なApacheファイルとディレクトリの場所に関する基本的な情報も含まれています。

ステップ3—Apacheプロセスの管理

サービスがインストールされて実行されたので、さまざまなsystemctlコマンドを使用してサービスを管理できます。

Webサーバーを停止するには、次のように入力します。

  1. sudo systemctl stop httpd

停止時にWebサーバーを起動するには、次のように入力します。

  1. sudo systemctl start httpd

サービスを停止してから再開するには、次のように入力します。

  1. sudo systemctl restart httpd

単に構成を変更するだけの場合、Apacheは接続を切断せずにリロードできることがよくあります。 これを行うには、次のコマンドを使用します。

  1. sudo systemctl reload httpd

デフォルトでは、Apacheはサーバーの起動時に自動的に起動するように構成されています。 これが希望どおりでない場合は、次のように入力してこの動作を無効にします。

  1. sudo systemctl disable httpd

起動時にサービスを再度有効にするには、次のように入力します。

  1. sudo systemctl enable httpd

サーバーが再度起動すると、Apacheが自動的に起動するようになりました。

Apacheのデフォルト構成では、サーバーが単一のWebサイトをホストできるようになります。 サーバーで複数のドメインをホストすることを計画している場合は、ApacheWebサーバーで仮想ホストを構成する必要があります。

Apache Webサーバーを使用する場合、仮想ホスト(Nginxに精通している場合、これらはサーバーブロックに似ています)を使用して、構成の詳細をカプセル化し、単一のサーバーから複数のドメインをホストできます。 このステップでは、というドメインを設定します example.com、ただし、これを独自のドメイン名に置き換える必要があります。 DigitalOceanでドメイン名を設定する場合は、ネットワーキングドキュメントを参照してください。

CentOS 8上のApacheでは、デフォルトで1つの仮想ホストが有効になっており、 /var/www/html ディレクトリ。 これは単一のサイトではうまく機能しますが、複数のサイトをホストしている場合は扱いにくくなる可能性があります。 変更する代わりに /var/www/html、内にディレクトリ構造を作成します /var/www のために example.com サイト、去る /var/www/html クライアント要求が他のサイトと一致しない場合に提供されるデフォルトのディレクトリとして配置されます。

を作成します html のディレクトリ example.com 次のように、 -p 必要な親ディレクトリを作成するためのフラグ:

  1. sudo mkdir -p /var/www/example.com/html

サイトのログファイルを保存するための追加のディレクトリを作成します。

  1. sudo mkdir -p /var/www/example.com/log

次に、の所有権を割り当てます html ディレクトリと $USER 環境変数:

  1. sudo chown -R $USER:$USER /var/www/example.com/html

Webルートにデフォルトの権限が設定されていることを確認してください。

  1. sudo chmod -R 755 /var/www

次に、サンプルを作成します index.html 使用するページ vi またはお気に入りの編集者:

  1. sudo vi /var/www/example.com/html/index.html

プレス i に切り替えるには INSERT モードにして、次のサンプルHTMLをファイルに追加します。

/var/www/example.com/html/index.html
<html>
  <head>
    <title>Welcome to Example.com!</title>
  </head>
  <body>
    <h1>Success! The example.com virtual host is working!</h1>
  </body>
</html>

を押してファイルを保存して閉じます ESC、入力 :wq、を押します ENTER.

サイトディレクトリとサンプルインデックスファイルを配置すると、仮想ホストファイルを作成する準備がほぼ整います。 仮想ホストファイルは、個別のサイトの構成を指定し、ApacheWebサーバーにさまざまなドメイン要求に応答する方法を指示します。

仮想ホストを作成する前に、を作成する必要があります sites-available それらを保存するディレクトリ。 また、を作成します sites-enabled 仮想ホストが訪問者にサービスを提供する準備ができていることをApacheに通知するディレクトリ。 The sites-enabled ディレクトリは、公開する仮想ホストへのシンボリックリンクを保持します。 次のコマンドで両方のディレクトリを作成します。

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

次に、Apacheに仮想ホストを探すように指示します。 sites-enabled ディレクトリ。 これを実現するには、viまたはお気に入りのテキストエディタを使用してApacheのメイン構成ファイルを編集し、追加の構成ファイル用のオプションのディレクトリを宣言する行を追加します。

  1. sudo vi /etc/httpd/conf/httpd.conf

プレスキャピタル G ファイルの終わりに向かってナビゲートします。 次にを押します i に切り替えるには INSERT モードにして、ファイルの最後に次の行を追加します。

/etc/httpd/conf/httpd.conf
...
# Supplemental configuration
#
# Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf
IncludeOptional sites-enabled/*.conf

その行の追加が完了したら、ファイルを保存して閉じます。 仮想ホストディレクトリが配置されたので、仮想ホストファイルを作成します。

で新しいファイルを作成することから始めます sites-available ディレクトリ:

  1. sudo vi /etc/httpd/sites-available/example.com.conf

次の構成ブロックを追加し、 example.com ドメインからドメイン名へ:

/etc/httpd/sites-available/example.com.conf
<VirtualHost *:80>
    ServerName www.example.com
    ServerAlias example.com
    DocumentRoot /var/www/example.com/html
    ErrorLog /var/www/example.com/log/error.log
    CustomLog /var/www/example.com/log/requests.log combined
</VirtualHost>

これにより、公的にアクセス可能なWebドキュメントを保持するルートを直接見つける場所がApacheに通知されます。 また、この特定のサイトのエラーログとリクエストログを保存する場所をApacheに指示します。

終了したら、ファイルを保存して閉じます。

仮想ホストファイルを作成したので、それらを有効にして、Apacheが訪問者にそれらを提供することを認識できるようにします。 これを行うには、仮想ホストごとにシンボリックリンクを作成します。 sites-enabled ディレクトリ:

  1. sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/example.com.conf

これで仮想ホストが構成され、コンテンツを提供する準備が整いました。 Apacheサービスを再起動する前に、SELinuxが仮想ホストに対して適切なポリシーを設定していることを確認しましょう。

SELinux は、Linuxシステムのセキュリティを強化するLinuxカーネルセキュリティモジュールです。 CentOS 8には、デフォルトのApache構成で動作するように構成されたSELinuxが装備されています。 仮想ホスト構成ファイルにカスタムログディレクトリを設定してデフォルト構成を変更したため、Apacheサービスを開始しようとするとエラーが発生します。 これを解決するには、SELinuxポリシーを更新して、Apacheが必要なファイルに書き込めるようにする必要があります。

SELinuxではセキュリティレベルをカスタマイズできるため、環境のニーズに基づいてポリシーを設定するさまざまな方法があります。 この手順では、Apacheポリシーを調整する2つの方法(ユニバーサルと特定のディレクトリ)について説明します。 ディレクトリのポリシーを調整する方が安全であるため、推奨されるアプローチです。

Apacheポリシーを普遍的に調整する

Apacheポリシーを普遍的に設定すると、SELinuxは、 httpd_unified ブール値。 このアプローチはより便利ですが、ファイルまたはディレクトリポリシーに焦点を当てたアプローチと同じレベルの制御は提供されません。

次のコマンドを実行して、ユニバーサルApacheポリシーを設定します。

  1. sudo setsebool -P httpd_unified 1

The setsebool コマンドはSELinuxブール値を変更します。 The -P フラグは起動時の値を更新し、この変更が再起動後も持続するようにします。 httpd_unified は、すべてのApacheプロセスを同じタイプとして扱うようにSELinuxに指示するブール値であるため、次の値で有効にしました。 1.

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

のSELinux権限を個別に設定する /var/www/example.com/log ディレクトリを使用すると、Apacheポリシーをより細かく制御できますが、より多くのメンテナンスが必要になる場合もあります。 このオプションはポリシーを普遍的に設定するものではないため、仮想ホスト構成で指定された新しいログディレクトリのコンテキストタイプを手動で設定する必要があります。

まず、SELinuxが提供したコンテキストタイプを確認します /var/www/example.com/log ディレクトリ:

  1. sudo ls -dlZ /var/www/example.com/log/

このコマンドは、ディレクトリのSELinuxコンテキストを一覧表示して出力します。 次のような出力が表示されます。

Output
drwxr-xr-x. 2 root root unconfined_u:object_r:httpd_sys_content_t:s0 6 Apr 23 23:51 /var/www/example.com/log/

現在のコンテキストは httpd_sys_content_t、これは、Apacheプロセスがこのディレクトリに作成されたファイルのみを読み取ることができることをSELinuxに通知します。 このチュートリアルでは、コンテキストタイプを変更します /var/www/example.com/log ディレクトリから httpd_log_t. このタイプにより、ApacheはWebアプリケーションのログファイルを生成して追加できます。

  1. sudo semanage fcontext -a -t httpd_log_t "/var/www/example.com/log(/.*)?"

次に、 restorecon これらの変更を適用し、再起動後も保持するコマンド:

  1. sudo restorecon -R -v /var/www/example.com/log

The -R flagはこのコマンドを再帰的に実行します。つまり、新しいコンテキストを使用するように既存のファイルを更新します。 The -v フラグは、コマンドが行ったコンテキスト変更を出力します。 変更を確認する次の出力が表示されます。

Output
Relabeled /var/www/example.com/log from unconfined_u:object_r:httpd_sys_content_t:s0 to unconfined_u:object_r:httpd_log_t:s0

コンテキストをもう一度リストして、変更を確認できます。

  1. sudo ls -dlZ /var/www/example.com/log/

出力には、更新されたコンテキストタイプが反映されます。

Output
drwxr-xr-x. 2 root root unconfined_u:object_r:httpd_log_t:s0 6 Apr 23 23:51 /var/www/example.com/log/

今では /var/www/example.com/log ディレクトリはを使用しています httpd_log_t タイプすると、仮想ホスト構成をテストする準備が整います。

SELinuxコンテキストがいずれかの方法で更新されると、Apacheはに書き込みできるようになります。 /var/www/example.com/log ディレクトリ。 これで、Apacheサービスを正常に再起動できます。

  1. sudo systemctl restart httpd

の内容を一覧表示します /var/www/example.com/log Apacheがログファイルを作成したかどうかを確認するディレクトリ:

  1. ls -lZ /var/www/example.com/log

Apacheが作成できたという確認を受け取ります error.logrequests.log 仮想ホスト構成で指定されたファイル:

Output
-rw-r--r--. 1 root root system_u:object_r:httpd_log_t:s0 0 Apr 24 00:06 error.log -rw-r--r--. 1 root root system_u:object_r:httpd_log_t:s0 0 Apr 24 00:06 requests.log

仮想ホストを設定し、SELinux権限を更新したので、Apacheがドメイン名を提供します。 次の場所に移動して、これをテストできます。 http://example.com、次のようなものが表示されます。

これにより、仮想ホストが正常に構成され、コンテンツが提供されていることが確認されます。 手順4と5を繰り返して、追加のドメインに対するSELinux権限を持つ新しい仮想ホストを作成します。

結論

このチュートリアルでは、ApacheWebサーバーをインストールして管理しました。 Webサーバーがインストールされたので、提供できるコンテンツの種類と、より豊かなエクスペリエンスを作成するために使用できるテクノロジーについて、多くのオプションがあります。

より完全なアプリケーションスタックを構築したい場合は、CentOS8LAMPスタックを構成する方法に関するこの記事を参照してください。

モバイルバージョンを終了