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 ベースのランダム点呼システムの実装

推薦する

Ubuntu 20.04 LTSの詳細なインストール履歴

この記事では、USB ブート ディスクの作成とシステムのインストールについて説明します。システム構成...

MySQL DML言語操作例

追加説明、外部キー: 外部キーを使用しないでください。すべての外部キーの概念はアプリケーション層で解...

Linux の chown コマンドと chmod コマンドの違いの詳細な説明

Linux システムでは、chmod コマンドと chown コマンドの両方を使用して権限を設定でき...

MySQLにおけるrow_numberの実装プロセス

1. 背景一般的に、データ ウェアハウス環境では、row_number 関数を使用して特定のディメン...

VueはBaidu Mapsを使用して都市の位置特定を実現

この記事では、参考までに、Baidu Mapsを使用して都市の位置特定を実現するVueの具体的なコー...

MySQL フラッシュバック ツール binlog2sql の詳細なインストールと設定のチュートリアル

概要binlog2sql は、Python で開発されたオープンソースの MySQL Binlog ...

CSS3はキングをマッチングさせるときにパーティクルアニメーション効果を実現します

コーディングをしていると、多くのことが同じ結末を迎えることに気づくでしょう。問題を解決する方法は何千...

Lua モジュールを使用して WAF を実装する Nginx の原理の分析

目次1. WAFの背景2. WAFとは3. 動作原理4. WAF機能5. WAFと従来のファイアウォ...

Linuxターミナルでファイルを作成する2つの一般的な方法を簡単に理解する

mkdir コマンドを使用して新しいディレクトリを作成できることは誰もが知っていますが、多くの場合、...

Linux 7.6 バイナリに MySQL 8.0.27 をインストールする詳細な手順

目次1. 環境整備1.1 オペレーティング システムのバージョン1.2 ディスク容量1.3 ファイア...

MySQL 起動失敗の問題とシナリオ分析

1. ワンストップソリューション1. 問題の分析と特定 # MySQL設定ファイルを見つけて、MyS...

Vueはドラッグプログレスバーを実装します

この記事では、ドラッグプログレスバーを実現するためのVueの具体的なコードを例として紹介します。具体...

jsを使用して簡単なスネークゲームを書く

この記事では、参考までに、jsで書かれたシンプルなスネークゲームの具体的なコードを紹介します。具体的...

MySQL の完全なデータベース バックアップ データを使用して単一のテーブル データを復元する方法

序文データベースをバックアップするときは、データベース全体のバックアップを使用します。ただし、何らか...

Docker で Selenium グリッド分散環境を構築する実用的な方法

最近、Zoom ビデオ会議をテストし、100 人が同時に会議に参加することをシミュレートする必要があ...