はじめに
Apache HTTPサーバーは、世界で最も広く使用されているwebサーバーです。 動的にロード可能なモジュール、堅牢なメディアサポート、その他の一般的なソフトウェアとの広範な統合など、多くの強力な機能を提供します。このガイドでは、CentOS7サーバーに仮想ホストを含むApache webサーバーをインストールします。前提条件このガイドを完了するには、次のものが必要です。
前提条件
このガイドを完了するには、次のものが必要です。
CentOS7の初期サーバーセットアップガイドに従って設定された、サーバー上で構成されたsudo権限を持つ非rootユーザー。
-
-
-
-
- 新しいCentOS7サーバーガイドの追加推奨手順に従って構成された基本的なファイアウォール。つまり、
yum
パッケージマネージャーでインストールできます。前提条件で設定されている非root sudoユーザーとして、ローカルApache
httpd
パッケージインデックスを更新して、最新のアップストリームの変更を反映します。- sudo yum update httpd
パッケージが更新されたら、Apacheパッケージをインストールします。
- sudo yum install httpd
インストールを確認した後、
- sudo yum install httpd
yum
は、apacheと必要なすべての依存関係をインストールします。前提条件セクションに記載されている新しいCentOS7サーバーガイドの追加の推奨手順を完了した場合は、サーバーに
firewalld
firewalld
http
サービスを有効にすることでこれを行うことができます:- sudo firewall-cmd --permanent --add-service=http
HTTPS経由でコンテンツを提供するようにApacheを設定する場合は、ポートを開くこともできます
443
https
service:- sudo firewall-cmd --permanent --add-service=https
次に、ファイアウォールをリロードしますこれらの新しいルールを有効にするには:
- sudo firewall-cmd --reload
ファイアウォールのリロード後、サービスを開始してwebサーバーを確認する準備が整いました。
ステップ2—Webサーバーの確認
インストールが完了すると、ApacheはCentOSで自動的に起動しません。 Apacheプロセスを手動で開始する必要があります。
- sudo systemctl start httpd
次のコマンドでサービスが実行されていることを確認します。
- sudo systemctl status httpd
サービスが実行されているときに
active
ステータスが表示されます。デフォルトのApacheランディングページにアクセスして、ソフトウェアがIPアドレスを介して正常に実行されていることを確認できます。 サーバーのIPアドレスがわからない場合は、コマンドラインからいくつかの方法で取得できます。
サーバーのコマンドプロンプトで次のように入力します。
- hostname -I
このコマンドは、ホストのすべてのネットワークアドレスを表示するので、スペースで区切ったいくつかのIPアドレスが返されます。 あなたは、彼らが動作するかどうかを確認するために、webブラウザでそれぞれを試すことができます。または、
curl
icanhazip.com
からIPを要求すると、インターネット上の別の場所から見たパブリックIpv4ア:サーバーのIPアドレスを取得したら、ブラウザのアドレスバーに入力します。http://your_server_ip
デフォルトのCentOS7Apache webページが表示されます。
このページはapacheが正常に動作していることを示しています。 また、重要なApacheファイルとディレクトリの場所に関する基本的な情報も含まれています。 サービスがインストールされて実行されたので、別の
systemctl
コマンドを使用してサービスを管理できるようになりました。ステップ3-Apacheプロセスの管理webサーバーを起動して実行したので、いくつかの基本的な管理コマンドを見てみましょう。
webサーバーを停止するには、次のように入力します。
- sudo systemctl stop httpd
webサーバーが停止したときに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ウェブサーバー上でバーチャルホストを設定する必要があります。
ステップ4—仮想ホストの設定(推奨)
Apache webサーバーを使用する場合、仮想ホスト(Nginxのサーバーブロックに似ています)を使用して設定の詳細をカ このステップでは、
example.com
というドメインを設定しますが、これを独自のドメイン名に置き換える必要があります。 DigitalOceanを使用したドメイン名の設定の詳細については、DigitalOcean DNSの概要を参照してください。CentOS7のApacheには、
/var/www/html
/var/www/html
/var/www
example.com
/var/www/html
を残して、クライアントリクエストが他のサイトと一致しない場合に提供されるデフォルトディレクトリとして配置します。html
example.com
-p
フラグを使用して、必要な親ディレクトリを作成します。- sudo mkdir -p /var/www/example.com/html
サイトのログファイルを格納するための追加のディレクトリを作成します。
- sudo mkdir -p /var/www/example.com/html
- sudo mkdir -p /var/www/example.com/log
次に、
html
$USER
環境変数で割り当てます。- sudo chown -R $USER:$USER /var/www/example.com/html
webルートにデフォルトのパーミッションが設定されていることを確認してください:
- sudo chmod -R 755 /var/www
Next, create a sample
index.html
page usingvi
or your favorite editor:- sudo vi /var/www/example.com/html/index.html
Press
i
to switch toINSERT
mode and add the following sample HTML to the file:/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>
Save and close the file by pressing
ESC
, typing:wq
, and pressingENTER
.サイトディレクトリとサンプルインデックスファイルを配置すると、仮想ホストファイルを作成する準備がほぼ整いました。 仮想ホストファイルは、個別のサイトの構成を指定し、さまざまなドメイン要求に応答する方法をApache webサーバーに指示します。
仮想ホストを作成する前に、それらを格納するディレクトリを作成する必要があります。
sites-available
sites-enabled
ディレクトリを作成して、バーチャルホストが訪問者にサービスを提供する準備ができていることをApacheに伝えます。sites-enabled
ディレクトリは、公開したい仮想ホストへのシンボリックリンクを保持します。 次のコマンドで両方のディレクトリを作成します。- sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled
次に、
sites-enabled
ディレクトリでバーチャルホストを探すようにApacheに指示します。 これを行うには、Apacheのメイン設定ファイルを編集し、追加の設定ファイルのオプションのディレクトリを宣言する行を追加します。- sudo vi /etc/httpd/conf/httpd.conf
:p>
IncludeOptional sites-enabled/*.conf
その行の追加が完了したら、ファイルを保存して閉じます。 これで、仮想ホストディレクトリが用意されたので、仮想ホストファイルを作成します。
sites-available
ディレクトリに新しいファイルを作成することから始めます。- 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
ディレクトリに各仮想ホストのシンボリックリンクを作成します:p>- sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/example.com.conf
仮想ホストが構成され、コンテンツを提供する準備が整いました。 Apacheサービスを再起動する前に、SELinuxがバーチャルホストに適切なポリシーを設定していることを確認しましょう。ステップ5-仮想ホストのSELinux権限の調整(推奨)
SELinuxはデフォルトのApache設定で動作するように設定されています。 バーチャルホストの設定ファイルにカスタムログディレクトリを設定しているため、Apacheサービスを起動しようとするとエラーが表示されます。 これを解決するには、Apacheが必要なファイルに書き込むことを許可するようにSELinuxポリシーを更新する必要があります。 SELinuxはCentOS7環境に高いセキュリティをもたらしますので、カーネルモジュールを完全に無効にすることはお勧めしません。 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/example.com/log
ディレクトリのSELinux権限を個別に設定すると、Apacheポリシーをより詳細に制御できますが、より多くのメンテナンスが必要になることもあります。 このオプションは普遍的にポリシーを設定するものではないため、仮想ホスト構成で指定された新しいログディレクトリのコンテキストタイプを手動で設定する必要があります。まず、SELinuxが/var/www/example.com/log
ディレクトリを与えたコンテキストタイプを確認します。- sudo ls -dZ /var/www/example.com/log/
このコマンドは、ディレクトリのSELinuxコンテキストを一覧表示して出力します。 次のような出力が表示されます:現在のコンテキストは
httpd_sys_content_t
であり、Apacheプロセスはこのディレクトリに作成されたファイルのみを読み取ることができます。 このチュートリアルでは、/var/www/example.com/log
httpd_log_t
に変更します。 このタイプは、Apacheが生成し、webアプリケーションのログファイルに追加することができます。- sudo semanage fcontext -a -t httpd_log_t "/var/www/example.com/log(/.*)?"
次に、
restorecon
コマンドを使用して、こ:- sudo restorecon -R -v /var/www/example.com/log
-R
-v
フラグは、コマンドが行ったコンテキストの変更を出力します。 変更を確認する次の出力が表示されます。Outputrestorecon reset /var/www/example.com/log context unconfined_u:object_r:httpd_sys_content_t:s0->unconfined_u:object_r:httpd_log_t:s0コンテキストをもう一度一覧表示して変更を確認できます。
- sudo ls -dZ /var/www/example.com/log/
出力は更新されたコンテキストタイプを反映しています:これで、
/var/www/example.com/log
httpd_log_t
タイプを使用しているので、仮想ホスト構成をテストする準備が整いました。ステップ6—仮想ホストのテスト(推奨)
SELinuxコンテキストがいずれかの方法で更新されると、Apacheは
/var/www/example.com/log
ディレクトリに書き込むことができます。 これで、Apacheサービスを正常に再起動できます。- sudo systemctl restart httpd
/var/www/example.com/log
ディレクトリの内容を一覧表示して、Apacheがログファイルを作成したかどうかを確認:- ls -lZ /var/www/example.com/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仮想ホストをセットアップしてから、次のようにします。
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://example.com
に移動します。これにより、仮想ホストが正常に構成され、コンテンツが提供されていることが確認されます。 手順4と5を繰り返して、追加のドメインに対するSELinux権限を持つ新しい仮想ホストを作成します。
結論
このチュートリアルでは、Apache webサーバーをインストールして管理しました。 Webサーバーがインストールされたので、提供できるコンテンツの種類と、より豊かな体験を作成するために使用できるテクノロジについて、多くのオプシ
より完全なアプリケーションスタックを構築したい場合は、CentOS7でLAMPスタックを設定する方法に関するこの記事を見ることができます。
-
-
-