CentOS 7にApache Webサーバーをインストールする方法

前書き

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

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

前提条件

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

ステップ1-Apacheのインストール

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

前提条件で設定された非ルートsudoユーザーとして、ローカルのApache `+ httpd +`パッケージインデックスを更新して、最新のアップストリームの変更を反映させます。

sudo yum update httpd

パッケージが更新されたら、Apacheパッケージをインストールします。

sudo yum install httpd

インストールを確認した後、 `+ yum +`はApacheと必要なすべての依存関係をインストールします。 インストールが完了すると、サービスを開始する準備が整います。

ステップ2-Webサーバーの確認

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

sudo systemctl start httpd

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

sudo systemctl status httpd

サービスの実行中は、「+ active +」ステータスが表示されます。

OutputRedirecting to /bin/systemctl status httpd.service
● httpd.service - The Apache HTTP Server
  Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
  Active:  since Wed 2019-02-20 01:29:08 UTC; 5s ago
    Docs: man:httpd(8)
          man:apachectl(8)
Main PID: 1290 (httpd)
  Status: "Processing requests..."
  CGroup: /system.slice/httpd.service
          ├─1290 /usr/sbin/httpd -DFOREGROUND
          ├─1291 /usr/sbin/httpd -DFOREGROUND
          ├─1292 /usr/sbin/httpd -DFOREGROUND
          ├─1293 /usr/sbin/httpd -DFOREGROUND
          ├─1294 /usr/sbin/httpd -DFOREGROUND
          └─1295 /usr/sbin/httpd -DFOREGROUND
...

この出力からわかるように、サービスは正常に開始されたように見えます。 ただし、これをテストする最良の方法は、Apacheからページをリクエストすることです。

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

サーバーのコマンドプロンプトでこれを入力します。

hostname -I

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

別の方法として、 + curl`を使用して + icanhazip.com + `からIPを要求することもできます。これにより、インターネット上の別の場所から見たパブリックIPv4アドレスが得られます。

curl -4 icanhazip.com

サーバーのIPアドレスがわかったら、ブラウザのアドレスバーに入力します。

http://

デフォルトのCentOS 7 Apache Webページが表示されます。

image:https://assets.digitalocean.com/articles/CART-65406/apache_default_page.png [CentOS 7のデフォルトのApacheページ]

このページは、Apacheが正しく機能していることを示しています。 また、重要なApacheファイルとディレクトリの場所に関する基本的な情報も含まれています。 サービスがインストールされ、実行されたので、異なる `+ systemctl +`コマンドを使用してサービスを管理できるようになりました。

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

Webサーバーを稼働させたので、基本的な管理コマンドを見ていきましょう。

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

sudo systemctl stop httpd

Webサーバーが停止したときに起動するには、次のように入力します。

sudo systemctl start httpd

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

sudo systemctl restart httpd

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

sudo systemctl reload httpd

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

sudo systemctl disable httpd

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

sudo systemctl enable httpd

サーバーが再起動すると、Apacheは自動的に起動します。

Apacheのデフォルト設定では、サーバーで単一のWebサイトをホストできます。 サーバーで複数のドメインをホストする予定の場合は、Apache Webサーバーで仮想ホストを構成する必要があります。

ステップ4-仮想ホストのセットアップ(推奨)

Apache Webサーバーを使用する場合、virtual hosts(Nginxのサーバーブロックに類似)を使用して、構成の詳細をカプセル化し、単一のサーバーから複数のドメインをホストできます。 このステップでは、「+ example.com +」というドメインを設定しますが、これを独自のドメイン名に置き換える必要があります。 DigitalOceanを使用したドメイン名の設定の詳細については、https://www.digitalocean.com/community/tutorials/an-introduction-to-digitalocean-dns [DigitalOcean DNSの紹介]をご覧ください。

CentOS 7上のApacheには、デフォルトで有効になっているサーバーブロックが1つあり、 `+ / var / www / html `ディレクトリからドキュメントを提供するように設定されています。 これは単一のサイトではうまく機能しますが、複数のサイトをホストしている場合は扱いにくい場合があります。 ` / var / www / html `を変更する代わりに、 ` / var / www / html `をそのまま残して、 ` example.com `サイトの ` / var / www +`内にディレクトリ構造を作成しますクライアントリクエストが他のサイトと一致しない場合に提供されるデフォルトディレクトリ。

`+ -p `フラグを使用して必要な親ディレクトリを作成し、次のように ` example.com `の ` html`ディレクトリを作成します。

sudo mkdir -p /var/www//html

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

sudo mkdir -p /var/www//log

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

sudo chown -R $USER:$USER /var/www//html

Webルートにデフォルトのパーミッションが設定されていることを確認してください。

sudo chmod -R 755 /var/www

次に、 + vi`またはお気に入りのエディターを使用して、サンプルの + index.html`ページを作成します。

sudo vi /var/www//html/index.html

「+ i 」を押して「 INSERT +」モードに切り替え、次のサンプルHTMLをファイルに追加します。

/var/www/example.com/html/index.html

<html>
 <head>
   <title>Welcome to !</title>
 </head>
 <body>
   <h1>Success! The  virtual host is working!</h1>
 </body>
</html>

ファイルを保存して閉じるには、「+ ESC」を押し、「:w +」と入力して、「 ENTER」を押します。

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

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

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

次に、 `+ sites-enabled +`ディレクトリで仮想ホストを探すようApacheに指示します。 これを実現するには、Apacheのメイン構成ファイルを編集し、追加の構成ファイル用のオプションのディレクトリを宣言する行を追加します。

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

この行をファイルの最後に追加します。

IncludeOptional sites-enabled/*.conf

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

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

sudo vi /etc/httpd/sites-available/.conf

次の構成ブロックを追加し、 `+ example.com +`ドメインをドメイン名に変更します。

/etc/httpd/sites-available/example.com.conf

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

これにより、一般公開されているWebドキュメントを保持するルートを直接見つける場所をApacheに指示します。 また、この特定のサイトのエラーおよびリクエストログの保存場所をApacheに指示します。

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

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

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

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

ステップ5-仮想ホストのSELinuxパーミッションの調整(推奨)

SELinuxは、デフォルトのApache構成で動作するように構成されています。 仮想ホスト構成ファイルにカスタムログディレクトリを設定しているため、Apacheサービスを開始しようとするとエラーが表示されます。 これを解決するには、Apacheが必要なファイルに書き込むことができるようにSELinuxポリシーを更新する必要があります。 SELinuxはCentOS 7環境のセキュリティを強化するため、カーネルモジュールを完全に無効にすることはお勧めしません。

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

Apacheポリシーをユニバーサルに調整する

Apacheポリシーを普遍的に設定すると、 `+ httpd_unified +`ブール値を使用して、すべてのApacheプロセスを同一に処理するようにSELinuxに指示します。 このアプローチはより便利ですが、ファイルまたはディレクトリポリシーに焦点を当てたアプローチと同じレベルの制御を提供しません。

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

sudo setsebool -P httpd_unified 1

`+ setsebool `コマンドは、SELinuxのブール値を変更します。 ` -P `フラグはブート時の値を更新し、この変更をリブート後も維持します。 ` httpd_unified `は、すべてのApacheプロセスを同じタイプとして扱うようにSELinuxに指示するブール値なので、 ` 1 +`の値で有効にしました。

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

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

まず、SELinuxが `+ / var / www // log +`ディレクトリに与えたコンテキストタイプを確認します。

sudo ls -dZ /var/www//log/

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

Outputdrwxr-xr-x. root root unconfined_u:object_r::s0 /var/www//log/

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

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

次に、 `+ restorecon +`コマンドを使用してこれらの変更を適用し、再起動後も保持します。

sudo restorecon -R -v /var/www//log

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

Outputrestorecon reset /var/www/example.com/log context unconfined_u:object_r::s0->unconfined_u:object_r::s0

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

sudo ls -dZ /var/www//log/

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

Outputdrwxr-xr-x. root root unconfined_u:object_r::s0 /var/www//log

`+ / var / www // log `ディレクトリが ` httpd_log_t +`タイプを使用しているので、仮想ホスト設定をテストする準備ができました。

ステップ6-仮想ホストのテスト(推奨)

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

sudo systemctl restart httpd

`+ / var / www // log +`ディレクトリの内容を一覧表示して、Apacheがログファイルを作成したかどうかを確認します。

ls -lZ /var/www//log

Apacheは、仮想ホスト設定で指定された `+ error.log `および ` requests.log +`ファイルを作成できたことがわかります。

Output-rw-r--r--. 1 root root 0 Feb 26 22:54 error.log
-rw-r--r--. 1 root root 0 Feb 26 22:54 requests.log

仮想ホストが設定され、SELinuxパーミッションが更新されたので、Apacheはドメイン名を提供します。 これをテストするには、「+ http:// +」に移動します。次のように表示されます。

image:https://assets.digitalocean.com/articles/CART-65406/virtual_host_success.png [成功! example.com仮想ホストは機能しています!]

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

結論

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

より完全なアプリケーションスタックを構築する場合は、https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysqlの構成方法に関するこの記事をご覧ください。 -php-lamp-stack-on-centos-7#step-four-%E2%80%94-test-php-processing-on-your-web-server [CentOS 7のLAMPスタック]。

前の投稿:Ubuntu 14.04でCorosync、Pacemaker、Floating IPを使用して高可用性セットアップを作成する方法
次の投稿:Ubuntu 14.04でFail2Banを使用してNginxサーバーを保護する方法