Apache HTTP Server (httpd) は、柔軟性、パフォーマンス、幅広い機能で知られる、最も人気があり堅牢な Web サーバーの 1 つです。Web サイトや Web アプリケーションのホスティングに広く使用されています。CentOS Stream 9 に Apache を設定すると、Web ホスティングのニーズに合わせてその強力な機能を活用できます。さらに、Let's Encrypt の無料 SSL 証明書で Web サイトを保護すると、サイトが暗号化され、信頼できるものになります。
CentOS Stream 9 に Apache HTTP Server をインストールし、Let's Encrypt SSL 証明書を設定するには、このガイドで説明されている手順に従ってください。これにより、安全で効率的な Web サーバー構成が実現します。
Apache をインストールする前に CentOS ストリーム システムが完全に更新されていることを確認する
CentOS Stream マシンへの Apache のインストールを進める前に、システムが完全に最新であることを確認する必要があります。これは単なる予防措置ではありません。システムを更新すると、互換性の問題を防ぎ、安定性、セキュリティ、パフォーマンスを大幅に向上させることができます。
これを実行するには、ターミナルで次のコマンドを実行します。
sudo dnf upgrade --refresh
このコマンドは更新メカニズムを起動し、システムの最新のソフトウェア更新とセキュリティ パッチを取得してインストールします。Apache のインストールに進む前に、更新プロセスが完全に完了するようにすることが重要です。これにより、システムが最適な状態になり、最適に構成され、問題や互換性の問題が発生することなく Apache を実行できるようになります。
DNF コマンドで Apache HTTPD をインストールする
2 番目のステップは、Apache または HTTPD を CentOS Stream システムにインストールすることです。これは、強力な DNF パッケージ マネージャーのおかげで、簡単なプロセスです。DNF (Dandified Yum) パッケージ マネージャーは、ソフトウェア パッケージのインストール、更新、および管理を簡素化します。
ターミナルで次のコマンドを実行して、Apache (HTTPD) のインストールを開始します。
sudo dnf install httpd
このコマンドはインストール メカニズムを開始し、Apache (HTTPD) をシステムで実行するために必要なすべてのコンポーネントを取得してインストールします。このプロセスは数分で完了します。その後、Apache (HTTPD) が完全にインストールされ、使用できるようになります。
システム起動時に実行するための Apache HTTPD の有効化と構成
CentOS Stream システムに Apache (HTTPD) を正常にインストールした後、次の重要なアクションは、サービスをアクティブ化し、システムの起動時に自動的に起動するように設定するということです。Apache (HTTPD) は常にアクティブであり、システムの電源が投入されると Web 要求に対応する準備ができています。
Apache (HTTPD) サービスがアクティブでないか、デフォルトで実行するように設定されていない場合は、ターミナルで次のコマンドを使用してサービスを開始し、システムの起動時に実行されるようにします。
sudo systemctl start httpd
sudo systemctl enable httpd
最初のコマンド sudo systemctl start httpd は Apache (HTTPD) サービスを起動し、2 番目のコマンド sudo systemctl enable httpd はシステムの起動時にサービスが自動的に実行されるように設定します。この 2 つのコマンドを実装することで、Apache (HTTPD) が常にアクセス可能でアクティブになり、システムの電源がオンになるたびに Web リクエストに対応できるようになります。
代わりに、前の 2 つの手順を 1 つのコマンドにまとめることもできます。
sudo systemctl enable httpd --now
コマンド sudo systemctl enable httpd –now の –now オプションは、Apache (HTTPD) サービスを同時に起動し、システム起動時に自動的に起動するように設定します。この単一のコマンドにより、前の手順の 2 つの個別のコマンドが統合され、プロセスがより合理化され、効率的になります。
Apache HTTPD サービスのステータスを確認する
最後に、次の systemctl コマンドを使用して、Apache (HTTPD) の実装と機能が正常に行われていることを確認する必要があります。
systemctl status httpd
このコマンドは、発生した可能性のあるエラーやメッセージを含む、Apache (HTTPD) サービスのリアルタイム ステータスを提供します。サービスのステータスを精査することで、Apache (HTTPD) がシームレスに実行されていることを確認できます。
FirewallDルールの設定
CentOS Stream に Apache (HTTPD) をインストールした後、ファイアウォールに標準ポート 80 および 443 の事前構成済みルールが含まれていないことに気付く場合があります。Web アプリケーションのセキュリティを向上させるには、先にこれらのファイアウォール ルールを構成する必要があります。
CentOS Stream のデフォルトのファイアウォール管理ユーティリティである、firewall-cmd ツールを使用してファイアウォール ルールを設定します。設定する必要があるルールは、使用するポートによって異なります。ただし、次の手順では重要なオプションをすべてリストします。
ポート80と443を開く
最初の 2 つのコマンドを実行して、ポート 80 と 443 を開きます。これらのポートは、それぞれ着信 HTTP トラフィックと HTTPS トラフィックを処理します。
ポート 80 または HTTP を開くには、次のコマンドを実行します。
sudo firewall-cmd --permanent --add-port=80/tcp
次に、次のコマンドでポート 443 (HTTPS) を開きます。
sudo firewall-cmd --permanent --add-port=443/tcp
ファイアウォールの変更を確認する
開くポートを指定したら、ファイアウォールにこれらの変更を実装するように指示する必要があります。以下のコマンドを使用してファイアウォール ルールを再読み込みしてこれを実行します。
sudo firewall-cmd --reload
意味を理解する
システムでポートを開くことに伴うセキュリティの影響をよく理解することが最も重要です。必要なポートのみを選択的に開くことで、不正アクセスや潜在的なセキュリティ脅威に対する Web アプリケーションの防御を強化できます。これは、CentOS Stream 上の Apache (HTTPD) インストールのファイアウォール ルールを適切に構成することが重要である理由を示しています。
Apache HTTPD アクセスの検証
Firewalld を慎重に構成した後、Web ブラウザーから Apache (HTTPD) ランディング ページにアクセスできることを確認します。お気に入りの Web ブラウザーを起動し、http://localhost または http://your_server_ip にアクセスします。
サーバーの IP 経由でアクセスするには:
http://your_server_ip
あるいは、localhost 経由でアクセスするには:
http://localhost
すべてを正確に構成すると、Apache (HTTPD) のデフォルトのランディング ページが表示されます。このページには、サーバーが期待どおりに動作していることを確認するメッセージが表示されます。ページは次のようになります。
仮想ホストの作成と構成
このセクションでは、単一のサーバーで複数のドメインをホストできる機能で知られる柔軟な Web サーバーである Apache (HTTPD) を使用して仮想ホストを作成する実用的な側面について詳しく説明します。このユーティリティは、Nginx の「サーバー ブロック」属性に似ています。次のチュートリアルでは、「example-domain.com」として表される特定のドメインの仮想ホストを作成する方法を説明します。当然、このサンプル ドメインは、特定のドメイン名に置き換えます。
仮想ホストを作成すると、各ドメインの設定を個別に管理しやすくなります。これにより、セキュリティ、パフォーマンス、カスタム設定など、Web サーバー環境のさまざまな側面を制御できます。これは、1 つのサーバーで複数の Web サイトをホストする場合や、Web サイトの個別のセクションごとに個別の設定を維持する場合に特に便利です。Apache (HTTPD) を使用すると、これらの要件を満たす仮想ホストを簡単に作成できます。
ディレクトリの作成と構成
仮想ホストのセットアップを開始するには、仮想ホストのルート フォルダーとして機能する新しいディレクトリを作成します。このディレクトリの名前は通常、ドメイン名と一致します。
たとえば、ドメイン名が「example.com」の場合、次のコマンドで新しいディレクトリを生成します。
sudo mkdir /var/www/example.com
このコマンドでは、「example.com」を自分のドメイン名に置き換える必要があります。したがって、ディレクトリには、HTML ファイル、画像、スクリプト、その他のリソースなど、仮想ホストに関連付けられたファイルとアセットが格納されます。
各仮想ホストに個別のディレクトリを設定すると、セキュリティとトラブルシューティングの観点から重要な、懸念事項の明確な分離が容易になります。
新しいディレクトリには、Apache (HTTPD) アクセスを許可するための適切な所有権と権限が必要になる場合があります。 後続のコマンドは、正しい所有権と権限を設定します。
sudo chown -R apache:apache /var/www/example.com
sudo chmod -R 755 /var/www/example.com
新しいディレクトリが準備できたら、仮想ホストを設定できます。
index.html ファイルの作成
テキスト エディターは、仮想ホストの index.html ファイルを生成します。このチュートリアルでは nano テキスト エディターを使用しますが、好みのテキスト エディターを選択することもできます。
次のコマンドを実行して、index.html ファイルを作成します。
sudo nano /var/www/example.com/index.html
テキスト エディターで、index.html ファイルのコンテンツの作成を開始します。このファイルは通常、Web サイトにアクセスするユーザーの最初の連絡先として機能します。
簡単な例を次に示します。
<html>
<head>
<title>Example Domain</title>
</head>
<body>
<h1>Welcome to Example Domain</h1>
<p>This is a sample page for the domain example.com.</p>
</body>
</html>
index.html ファイルの内容を確定したら、ファイルを保存してテキスト エディターを終了します。nano の場合、Ctrl + X、Y、Enter を押すことでこれを実行します。
仮想ホストディレクトリの構成
Apache Web サーバーの適切なディレクトリ設定を確実に行うことで、シームレスで整理された構成が保証されます。具体的には、「sites-available」および「sites-enabled」ディレクトリが使用されます。この構成は Nginx で採用されている構成を反映しており、整理されたアクセス可能な構成を促進します。
これらのディレクトリを作成するには、次のコマンドを使用します。
sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled
次に、Apache に「/etc/httpd/sites-available」ディレクトリ内の仮想ホスト ファイルを検索するように指示します。
sudo nano /etc/httpd/conf/httpd.conf
開いた設定ファイルの最後に、「IncludeOptional sites-enabled/*.conf」という行を追加します。この行は、Apache に「sites-enabled」ディレクトリ内のすべての仮想ホスト設定ファイルを含めるように指示します。
IncludeOptional sites-enabled/*.conf
オプションとして、「IncludeOptional conf.d/*.conf」をコメントアウトして、Apache が仮想ホスト ファイルを検索するデフォルトのフォルダーを無効にすることもできます。これにより、潜在的な混乱を防ぐことができます。
例:
#IncludeOptional conf.d/*.conf
IncludeOptional sites-enabled/*.conf
ファイルを保存して終了するには、キーボードの組み合わせ CTRL + O を使用し、その後 CTRL + X を押します。
仮想ホスト構成ファイルを作成する
次に、テキスト エディターを使用して、/etc/httpd/sites-available/example.com.conf に仮想ホスト構成ファイルを作成します。
sudo nano /etc/httpd/sites-available/example.com.conf
次の構成ブロックのプレースホルダー情報に ServerName、ServerAlias、および Document Root を入力してから、それを /etc/httpd/sites-available/example.com.conf にある仮想ホスト構成ファイルにコピーします。
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName example_domain
ServerAlias www.example_domain
DocumentRoot /var/www/example.com/
</VirtualHost>
特定の要件に合わせてサーバー ディレクティブを調整します。
ステップ5: アクセス権限の変更
サーバーへのパブリック アクセスを許可するには、/etc/httpd/conf/httpd.conf 構成ファイルで Apache サービスのアクセス権限を変更します。デフォルトの構成ではアクセスが拒否されます。この手順を怠ると、ユーザーが Web サイトにアクセスしようとしたときに HTTP 403 エラーが発生する可能性があります。
sudo nano /etc/httpd/conf/httpd.conf
次のブロックをファイルに追加し、ルート ディレクトリが自分のディレクトリと一致するように調整してください。
<Directory /var/www/example.com/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
これらの変更を保存するには、CTRL+O のキーボードの組み合わせを使用し、CTRL+X を使用してテキスト エディターを終了します。
ステップ 6: CentOS ストリームで Apache の仮想ホストを有効にする
仮想ホストを設定するには、最後のステップとして仮想ホストをアクティブ化する必要があります。以下のコマンドを使用して、sites-available ディレクトリから sites-enabled ディレクトリへのシンボリック リンクを作成します。
sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/
アクティベーションプロセスを完了するには、Apache サービスを再起動する必要があります。
sudo systemctl restart httpd
Apache サービスを再起動した後、Web ブラウザーを開いて「HTTP://example_domain」に移動します。ドメインを登録していない場合は、IP アドレス (ローカルまたはリモート) を使用して Web サイトにアクセスできます。すべてを正しく設定すると、index.html ファイルで作成したランディング ページが表示されます。
追加コマンドとヒント
安全なディレクトリとファイル
安全な権限の設定
CentOS上のApacheでは、ファイルやディレクトリに安全な権限を使用することが非常に重要です。多くの場合、完全なパブリックアクセスなど、過剰な権限が付与されます。セキュリティリスクを防ぐために、権限を制限することをお勧めします。ディレクトリの場合は、 chmod 755
ファイルについては、 chmod 644
以下はこれらの権限を設定するためのコマンドです。アプリケーションによっては異なる権限が必要な場合があります。 777
phpBB用。
- ディレクトリの場合:
sudo find /var/www/example.com/ -type d -exec chmod 755 "{}" \;
- ファイルの場合:
sudo find /var/www/example.com/ -type f -exec chmod 644 "{}" \;
これらのコマンドは /var/www/example.com/
適切なディレクトリ パスを使用します。この手順では完全なセキュリティは保証されませんが、重要なファイルへのパブリック アクセスを防ぐことでリスクを大幅に軽減します。
Let's Encrypt SSL で Apache を保護する
Let's Encrypt SSL証明書のインストール
安全なクライアント/サーバー接続には、SSL 証明書を使用して Apache サーバーを保護することが必要です。Let's Encrypt は、無料の自動 SSL 証明書を提供しています。まず、CRB リポジトリが有効になっており、EPEL リポジトリがインストールされていることを確認します。インストール プロセスは、CentOS Stream 9 と 8 で若干異なります。
CentOS Stream 9の場合:
- CRB を有効にする:
sudo dnf config-manager --set-enabled crb
- EPEL リポジトリをインストールします。
sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
次にインストール mod_ssl
そしてスナップ:
sudo dnf install mod_ssl
CentOS Stream ディストリビューションで EPEL をアクティブ化してから、Snap をインストールします。
sudo dnf install snapd -y
インストール後、システム起動時に必ず Snap を有効にしてください。
sudo systemctl enable snapd --now
次のステップは、スナップ コアをインストールすることです。これにより、スナップ パッケージの実行に必要なすべての依存関係が処理されます。
sudo snap install core
snapd ディレクトリのシンボリック リンクを作成します。
sudo ln -s /var/lib/snapd/snap /snap
Certbot スナップ パッケージをインストールするには、次のターミナル コマンドを使用します。
sudo snap install --classic certbot
最後に、Certbot スナップ パッケージの別のシンボリック リンクを作成します。
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Apache 用の Certbot を実行する
Certbot を使用して SSL 証明書を生成するには、ターミナルで次のコマンドを実行します。
sudo certbot --dry-run --apache --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d www.example.com
Let's Encrypt を初めて使用する場合は、コマンド内の略語に関する詳細情報を参照してください。
- 「–dry-run」オプションを使用すると、システムを変更せずに証明書生成プロセスのテスト実行を実行できます。このオプションはテストに役立ちます。
- 「–apache」オプションは、Apache Web サーバーの証明書を生成します。
- 「–agree-tos」オプションを使用すると、SSL 証明書を提供する証明機関である Let's Encrypt の利用規約に同意できます。
- 「–redirect」オプションは、すべての HTTP トラフィックを HTTPS に自動的にリダイレクトします。
- 「–hsts」オプションは、HTTP Strict Transport Security (HSTS) を有効にします。このセキュリティ機能は、ブラウザに安全な HTTPS 接続経由でのみ Web サイトにアクセスするように指示することで、プロトコル ダウングレード攻撃や Cookie ハイジャックから保護します。
- 「–staple-ocsp」オプションは、オンライン証明書ステータス プロトコル (OCSP) ステープルを有効にします。これにより、証明機関に問い合わせることなく SSL 証明書の失効ステータスが検証されます。
- 「–email」オプションを使用して、証明書に関連付ける電子メール アドレスを指定します。
- 「-d」オプションは、証明書を生成するドメイン名を指定します。この例では、ドメイン名は「www.example.com」です。
または、次のコマンドを使用して、ステップバイステップのプロンプトに従うことで、よりアクセスしやすいエクスペリエンスを実現できます。
sudo certbot certonly --apache
上記のパラメータを使用してコマンドを実行すると、certbot にドメイン「www.example.com」の SSL 証明書を作成するように指示すると同時に、強制 HTTPS 301 リダイレクト、Strict-Transport-Security ヘッダー、OCSP Stapling などの必要なセキュリティ機能も含めます。コマンド内の電子メール アドレスを自分のものに置き換え、ドメイン名「www.example.com」を希望のドメイン名に置き換えることが重要です。
Apache での SSL の設定
SSL証明書を取得したら、それを使用するようにApacheサーバーを設定します。 ssl.conf
ファイルを開き、次の行を追加します。「example.com」を自分のドメインに置き換えます。
sudo nano /etc/httpd/conf.d/ssl.conf
設定ファイルに次の行を追加します。「example.com」を自分のドメイン名に置き換えます。
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
変更を保存し、Apache を再起動して設定を有効にします。
sudo systemctl restart httpd
この設定により、ブラウザと Web サイト間の暗号化された安全な通信が保証されます。
証明書更新の自動化
SSL 証明書を最新の状態に保つには、自動更新の cron ジョブを設定します。更新プロセスをドライ ランでテストします。
sudo certbot renew --dry-run
systemctl list-timers コマンドを使用してタイマーを確認し、「snap.certbot.renew.timer」が存在することを確認します。
systemctl list-timers snap.certbot.renew.timer
システム上のアクティブなタイマーと非アクティブなタイマーを表示するには、コマンド「systemctl list-timers –all」を使用します。このコマンドは、「snap.certbot.renew.timer」を含むすべてのタイマーの概要を表示します。「snap.certbot.renew.timer」は、有効期限が切れる前に証明書を自動的にチェックして更新します。そのため、更新プロセスに関する懸念がなくなります。
systemctl list-timers --all
Apache HTTPD 管理
サーバーに Apache が正常にセットアップされたら、効果的な管理のために覚えておくべき重要なポイントがいくつかあります。
Apache サーバー ログ
Apache サーバーのログは、/var/log/httpd/ のディレクトリに保存されます。アクセス ログとエラー ログのデフォルトのファイル名は、それぞれ access.log と error.log です。ただし、仮想ホスト構成ファイルでこれらの名前を変更することは可能です。
仮想ホスト構成ファイルで Apache サーバー ログを変更する例を次に示します。
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot /var/www/example.com
# Change access log to custom-access.log
CustomLog /var/log/httpd/custom-access.log combined
# Change error log to custom-error.log
ErrorLog /var/log/httpd/custom-error.log
</VirtualHost>
この例では、アクセス ログとエラー ログをそれぞれ custom-access.log と custom-error.log に変更します。ログ ファイルの名前を任意の名前に変更し、仮想ホスト構成ファイル内の対応するパスを更新できます。
Apache コマンド
Apache を管理するときによく使用されるコマンドの一部を次に示します。
Apache Web サーバーを停止します。
sudo systemctl stop httpd
Apache Webサーバーを起動します。
sudo systemctl start httpd
Apache Webサーバーを再起動します。
sudo systemctl restart httpd
Apache Webサーバーをリロードします:
sudo systemctl reload httpd
サーバーの起動時に Apache を無効にする:
sudo systemctl disable httpd
サーバーの起動時に Apache を有効にします。
sudo systemctl enable httpd
Apache HTTPD を更新する方法
Apache を最新の状態に保つには、システムが最新かどうかを確認するために通常使用するコマンドを実行します。
sudo dnf update --refresh
バグが発生する場合があるため、アップグレードを実行する前にシステムのバックアップまたはイメージを作成することが重要です。次のコマンドは、Apache を含むすべてのシステム パッケージを更新し、アップグレードするように要求します。
Apache HTTPDを削除する方法
システムから Apache をアンインストールするには、次のコマンドを使用します。
sudo systemctl disable httpd --now
ここで、次のコマンドを使用して Apache を完全に削除します。
sudo dnf remove httpd
残ったファイルは /etc/httpd メイン ディレクトリに残っている可能性があるので、そのフォルダーを消去しましょう。
sudo rm -R /etc/httpd/
結論
CentOS Stream システムに Apache HTTP Server と Let's Encrypt を正常にセットアップすると、Web サイトは堅牢かつ安全になります。Apache を定期的に更新し、Let's Encrypt SSL 証明書を更新すると、最適なセキュリティとパフォーマンスを維持できます。Apache HTTP Server と Let's Encrypt が Web ホスティング環境にもたらす信頼性とセキュリティをお楽しみください。