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

推薦する

MYSQL開発パフォーマンス調査:バッチデータ挿入の最適化方法

1. どのような問題に直面しましたか?標準 SQL では、通常、次の SQL 挿入ステートメントを記...

UrlRewriter のキャッシュ問題と関連する一連の調査

ウェブサイト機能を開発する場合、セッション キャッシュを時間内にクリアできません。一連の探索が始まり...

ポータルサイト再設計のユーザーエクスペリエンス

<br />2006年10月12日のNetEaseの新ホームページの公開から、2008年...

VMWARE で Centos8 仮想マシンをコピーすることによって発生する IP 損失の問題の解決策

VMwareでcentos8サービスをインストールしてコピーすると、次の問題が発生します。 コピー前...

HTML ドラッグ アンド ドロップ機能の実装コード

Vueベースこの機能の核となるアイデアは、JavaScript コードを通じてページ上のノードの左余...

重複したMySQLレコードを現場でチェックし、処理する実践的な記録

目次序文分析するデータ合計繰り返し率どこにあるかと持っているかの違い要約する序文私はソフトウェアの導...

HTMLの基本構文は、HTMLを学び始めたばかりの人にとって便利です。

1.1 一般的なマーキング一般的なタグは開始タグと終了タグで構成されます。構文は次のとおりです: ...

HTMLチェックボックス説明テキストをクリックして状態を選択/チェック解除します

Web 開発では、チェックボックスは小さく、ユーザーにとって操作があまり便利ではないため、ユーザーが...

DockerでMySQLマスタースレーブ環境を構築する方法の詳しい説明

序文この記事では、docker-compose と dockerfile を使用して、binlog ...

div 内の img と span の垂直方向の中央揃えの問題について

以下のように表示されます。 XML/HTML コードコンテンツをクリップボードにコピー<htm...

CentOS 7 で NFS ファイル共有ストレージ サービスを構築するための完全な手順

序文NFS (Network File System) は、ネットワーク ファイル システムを意味し...

MySQL データベースのデータ テーブルの最適化、外部キーの分析、3 つのパラダイムの使用

この記事では、例を使用して、MySQL データベースのデータ テーブルの最適化、外部キーの使用、およ...

テーブルの最大幅と最小幅を設定する際の互換性の問題と解決策の詳細な説明

テーブル内の min-width と max-width プロパティの設定 <テーブル>...

jQueryのチェーンプログラミングスタイルの詳細な例

チェーンプログラミングの実装原理jQuery を使用すると、開発者は常にドット構文を使用して独自のメ...

iviewは動的なフォームとカスタム検証期間の重複を実装します

フォーム項目を動的に追加するiview の動的なフォーム追加は非常に簡単です。フォーム項目を配列に設...