Apache Web サーバーを使用して 2 つ以上のサイトを構成する方法

Apache Web サーバーを使用して 2 つ以上のサイトを構成する方法

人気があり強力な Apache Web サーバーで 2 つ以上のサイトをホストする方法。

前回の記事では、単一のサイト用に Apache Web サーバーを構成する方法について説明しましたが、これは非常に簡単です。この記事では、単一の Apache インスタンスを使用して複数のサイトにサービスを提供する方法を説明します。

注: この記事は、Apache 2.4.29 を搭載した Fedora 27 仮想マシンで作成しました。別のディストリビューションや Fedora の別のバージョンを使用する場合は、使用するコマンドや設定ファイルの場所と内容が異なる場合があります。

前回の記事で述べたように、すべての Apache 設定ファイルは /etc/httpd/conf と /etc/httpd/conf.d にあります。デフォルトでは、サイトのデータは /var/www にあります。複数のサイトの場合は、ホストされているサイトごとに 1 つずつ、複数の場所を指定する必要があります。

名前ベースの仮想ホスト

名前ベースの仮想ホスティングを使用すると、複数のサイトに単一の IP アドレスを使用できます。 Apache を含む最新の Web サーバーは、指定された URL のホスト名部分を使用して、どの仮想 Web ホストがページの要求に応答するかを決定します。これには、単一のサイトよりも多くの構成が必要になります。

たとえ 1 つのサイトから始める場合でも、後でサイトを追加しやすくなるように、仮想ホストとして設定することをお勧めします。この記事では、前回の記事の続きから始めるので、名前ベースの仮想サイトである元のサイトを設定する必要があります。

元のサイトを準備する

2 番目のサイトをセットアップする前に、既存の Web サイト用の名前ベースの仮想ホスティングが必要になります。現在サイトをお持ちでない場合は、戻って今すぐ作成してください。

サイトが立ち上がったら、 /etc/httpd/conf/httpd.conf /httpd.conf 構成ファイルの下部に次の内容を追加します (httpd.conf ファイルに加える必要がある変更はこれだけです)。

<仮想ホスト 127.0.0.1:80>
 ドキュメントルート /var/www/html
 サーバー名 www.site1.org
</仮想ホスト>

これは最初の仮想ホスト構成セクションとなり、デフォルトの定義にするために最初に残しておく必要があります。つまり、IP アドレスまたはこの IP アドレスに解決されるが特定の名前付きホスト構成セクションを持たない他の名前を介したサーバーへの HTTP アクセスは、この仮想ホストに送信されます。他のすべての仮想ホスト構成セクションは、このセクションに従う必要があります。

名前解決を提供するには、/etc/hosts のエントリを使用して Web サイトを設定する必要もあります。前回は、localhost の IP アドレスのみを使用しました。通常、これは Google や Godaddy など、使用している名前サービスを使用して実行できます。テスト サイトの場合は、/etc/hosts の localhost 行に新しい名前を追加してこれを実行します。後でこのファイルを再度編集する必要がないように、両方のサイトのエントリを追加します。結果は次のとおりです。

127.0.0.1 ローカルホスト ローカルホスト.localdomain ローカルホスト4 ローカルホスト4.localdomain4 www.site1.org www.site2.org

/var/www/html/index.html ファイルをもう少しわかりやすく変更してみましょう。次のような表示になります (サイト 1 であることを示す追加テキストが含まれます)。

<h1>こんにちは世界</h1>

ウェブサイト 1.

httpd 構成の変更を有効にするには、HTTPD サーバーを再起動します。その後、Lynx テキスト モードを使用して、コマンド ラインからサイトを表示できます。

[root@testvm1 ~]# systemctl httpdを再起動します
[root@testvm1 ~]# lynx www.site1.org

      こんにちは世界 
 ウェブサイト 1.
<中略>
コマンド: 矢印キーで移動し、'?' でヘルプを表示し、'q' で終了し、'<-' で戻ります。
矢印キー: 上下に移動。右でリンクをたどり、左で戻ります。
ヘルプ オプション 印刷 移動 メイン画面 質問 /=検索 [削除]=履歴リスト

明らかなエラーなく、元の Web サイトが変更されているのが確認できます。Q キーを押してから Y キーを押して、Lynx Web ブラウザを終了します。

2番目のサイトの構成

これで、2 番目の Web サイトを構築する準備が整いました。新しい Web サイトのディレクトリ構造を作成するには、次のコマンドを使用します。

[root@testvm1 html]# mkdir -p /var/www/html2

2 番目のサイトは、最初のサイトと同じ /var/www ディレクトリにある 2 番目の html ディレクトリであることに注意してください。

次に、次の内容を含む新しいインデックス ファイル/var/www/html2/index.htmlを作成します (このインデックス ファイルは、元の Web サイトと区別するために若干異なります)。

<h1>Hello World -- 再び</h1>

ウェブサイト2。

2 番目のサイトの httpd.conf に新しい構成セクションを作成し、それを以前の仮想ホスト構成セクションの下に配置します (2 つは非常によく似ているはずです)。このセクションでは、Web サーバーに 2 番目のサイトの HTML ファイルの場所を指示します。

<仮想ホスト 127.0.0.1:80>
 ドキュメントルート /var/www/html2
 サーバー名 www.site2.org
</仮想ホスト>

HTTPD を再起動し、Lynx を使用して結果を表示します。

[root@testvm1 httpd]# systemctl httpdを再起動します
[root@testvm1 httpd]# lynx www.site2.org
     こんにちは世界 -- 再び
 ウェブサイト2。
<中略>
コマンド: 矢印キーで移動し、'?' でヘルプを表示し、'q' で終了し、'<-' で戻ります。
矢印キー: 上下に移動。右でリンクをたどり、左で戻ります。
ヘルプ オプション 印刷 移動 メイン画面 質問 /=検索 [削除]=履歴リスト

ここでは、このスペースに収まるように出力を圧縮しました。ページの違いから、これが 2 番目のサイトであることがわかります。 2 つのサイトを同時に表示するには、別のターミナル セッションを開き、Lynx Web ブラウザーを使用して他のサイトを表示します。

その他の考慮事項

この簡単な例では、Apache HTTPD サーバーの単一インスタンスを使用して 2 つのサイトを処理する方法を示します。他の要素を考慮すると、仮想ホストの構成は少し複雑になる可能性があります。

たとえば、これらのサイトの 1 つまたはすべてに CGI スクリプトを使用する必要がある場合があります。これを行うには、/var/www ディレクトリの下に、HTML ディレクトリと一致する名前の CGI プログラム用のディレクトリ ( /var/www/cgi-bin 和/var/www/cgi-bin2をいくつか作成します。次に、CGI スクリプトのディレクトリの場所を指定するために、仮想ホスト スタンザに構成ディレクティブを追加する必要があります。各サイトにはダウンロードしたファイル用のディレクトリを作成できます。これには、対応する仮想ホスト スタンザのエントリも必要です。

Apache の Web サイトでは、複数のサイトを管理するための他の方法や、パフォーマンス チューニングからセキュリティに至るまでの構成オプションについて説明しています。

Apache は、シンプルな Web サイトから非常に複雑な Web サイトまでをホストできる強力な Web サーバーです。全体的な市場シェアは縮小しているものの、依然としてインターネット上で最も一般的に使用されている HTTPD サーバーです。

以下もご興味があるかもしれません:
  • Apache、wsgi、django プログラムのデプロイメント設定方法の詳細な説明
  • LinuxベースのApacheウェブサイトサービス構成の詳細な説明
  • Windows での Apache+Tomcat7 負荷分散構成方法の詳細な説明
  • Ubuntu 上の Apache で SSL (https 証明書) を設定する正しい方法の詳細な説明
  • Apache での ModSecurity のインストール、有効化、および構成
  • CentOS 7 での Apache Web サーバーのインストールと設定のチュートリアル
  • Alibaba Cloud Server Apache は SSL 証明書を構成して Https を正常に有効にします (さまざまな落とし穴を記録します)
  • Win10 Apache が仮想ホストを設定した後にローカルホストが利用できなくなる問題の解決方法
  • Apache 経由で複数の仮想ホストをローカルに設定する方法

<<:  JavaScript が Jingdong のカルーセル効果を模倣

>>:  JavaScript ベースのランダム点呼システムの実装

推薦する

期間限定フラッシュセール機能を実装するJavaScript

この記事では、期間限定フラッシュセール機能を実装するためのJavaScriptの具体的なコードを参考...

JavaScript マクロタスクとマイクロタスクの実行順序についての簡単な説明

目次1. JavaScriptはシングルスレッドです1. 同期タスク2. 非同期タスク2. タスクキ...

MYSQL row_number() および over() 関数の詳細な使用方法

構文フォーマット: row_number() over(partition by grouping ...

Docker はキューとタスクのスケジューリングを実現するために Laravel アプリケーションをデプロイします

前回の記事では、Docker を使用して Laravel アプリケーションをデプロイする方法について...

Docker ポート マッピングと外部アクセス不可の問題

Docker コンテナはサービスを提供し、ポート 8888 をリッスンします。外部からアクセスできる...

Docker 経由で Redis 6.x クラスターをデプロイする方法

システム環境: Redis バージョン: 6.0.8 Docker バージョン: 19.03.12シ...

LinuxソースコードからTIME_WAITの期間を分析する

目次1. はじめに2. まずLinux環境を紹介しましょう3. TIME_WAIT状態遷移図4. 継...

ウェブサイトのアクセス速度を向上させるための徹底的な最適化に関するヒント

<br />ウェブサイトのアクセス速度はウェブサイトのトラフィックに直接影響を及ぼし、ウ...

Vue で手ぶれ補正を実装するためのサンプルコード

手ぶれ防止: 繰り返しのクリックによるイベントのトリガーを防止まず、揺れとは何でしょうか? 震えるの...

Nginx ベースの HTTPS ウェブサイトを設定する手順

目次序文:暗号化アルゴリズム: 1. HTTPS の概要2. NginxはHTTPSウェブサイト設定...

フレームセットの高さを設定する際のインターフェース変形の解決策

現在、プロジェクトを作成しました。インターフェースは次のとおりです。これはフレームセットを使用して行...

sbinディレクトリを生成せずにNginxをインストールするソリューション

エラーの説明: 1. Linux (CentOS 7 64) システムに Nginx (1.18.0...

Remレイアウトを使用して適応性を実現する

以前、モバイル適応に関する記事を書きました。非常に長く、内容が多すぎて読みづらいものでした。そこで、...

仮想マシンUbuntu 16.04がインターネットに接続できない問題の解決策

Ubuntu をインストールしたばかりですが、開いたときにネットワーク接続がありませんでした。右上隅...