GNU/Linux >> Linux の 問題 >  >> Linux

UbuntuオペレーティングシステムでApache仮想ホストを設定する

Apacheがインストールされて実行されたので、仮想ホストを使用して、複数のドメインにサービスを提供するようにApacheを構成できます。 。

レイアウトを作成

この例では、domain1.comとdomain2.comの2つのドメインを使用しています。

  1. ホームディレクトリに、public_htmlフォルダを作成します。

    cd ~
    mkdir public_html
    
  2. ホストするドメインごとに、標準のサブフォルダーのセットを含むフォルダーを作成します。次のコマンドは、domain1.comおよびdomain2.comのフォルダーpublic、private、log、cgi-bin、およびbackupを作成します。

    mkdir -p public_html/domain1.com/{public,private,log,cgi-bin,backup}
    mkdir -p public_html/domain2.com/{public,private,log,cgi-bin,backup}
    

index.htmlを作成

パブリックフォルダの内容はあなた次第ですが、この例では、仮想ホストの動作を確認できるように、非常に単純なHTMLファイルを使用しています。

  1. ドメインごとに、index.htmlファイルを作成します。

    nano public_html/domain1.com/public/index.html
    
  2. 次のコードをindex.htmlファイルに追加します。

    <html>
      <head>
        <title>domain1.com</title>
      </head>
      <body>
    
        <h1>domain1.com</h1>
      </body>
    </html>
    
  3. このプロセスを繰り返して、domain2.comの同様のファイルを作成します。domain1.comのすべてのインスタンスを置き換えます。 domain2.comを使用 。

仮想ホストを定義する

これで、2つのドメインの基本構造ができたので、2つの仮想ホストを定義できます。

レビューNameVirtualHost

仮想ホストでは、NameVirtualHost設定によって混乱が生じることがよくあります。

Apacheがリッスンするように設定されている各インターフェイスとポートには、NameVirtualHostディレクティブが必要です。ディレクティブは、ポートごとに1回だけ定義できます。

UbuntuオペレーティングシステムのApacheレイアウトでは、ports.confにデフォルトのNameVirtualHostdirectiveがあります。 ファイル。

次のコマンドを実行して、ports.confの内容を確認します。 :

cat /etc/apache2/ports.conf

次の出力が表示されます(以前にファイルを変更していない場合):

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default

NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
    # SSL name based virtual hosts are not yet supported, therefore no
    # NameVirtualHost statement here
    Listen 443
</IfModule>

デフォルトのNameVirtualHost設定は、現在の要件を満たしています。Apacheは、ポート80の使用可能なインターフェイス(*)で行われるHTTP要求に対して、名前付きベースの仮想ホストロジックと設定を適用します。

:「ports.conf」でのデフォルトのNameVirtualHostディレクティブの配置は、UbuntuオペレーティングシステムのApacheレイアウトの新機能です。以前のリリースでは、同様の設定がデフォルトの仮想ホストに配置されていました。

カスタム仮想ホストを定義する

これで、独自の仮想ホストを追加して、ドメインの提供を開始できるようになりました。

domain1のvhostファイルを作成します:

sudo nano /etc/apache2/sites-available/domain1.com.conf

内容は次のとおりです。

# Place any notes or comments you have here
# It will make any customisation easier to understand in the weeks to come

# domain: domain1.com
# public: /home/demo/public_html/domain1.com/

<VirtualHost *:80>

  # Admin email, Server Name (domain name) and any aliases
  ServerAdmin [email protected]
  ServerName  domain1.com
  ServerAlias www.domain1.com


  # Index file and Document Root (where the public files are located)
  DirectoryIndex index.html
  DocumentRoot /home/demo/public_html/domain1.com/public


  # Custom log file locations
  LogLevel warn
  ErrorLog /var/log/apache2/error-mydomainname.com.log
  CustomLog /var/log/apache2/access-mydomainname.com.log combined

</VirtualHost>
サイトを有効にする

次のようにサイトを有効にします。

sudo a2ensite domain1.com

コマンドの出力は次のとおりです。

Site domain1.com installed; run /etc/init.d/apache2 reload to enable.

推奨されるコマンドを実行します:

sudo /etc/init.d/apache2 reload
サイトに移動

一部のインターネットネームサーバーにDNSゾーンとレコードを作成せずにドメインをテストするには、ローカルコンピューターの「/ etc / hosts」ファイルを変更して、「domain1.com」、「domain2.com」などをマッピングするエントリを含めることができます。デモCloudServerのパブリックIPアドレスへ:

127.0.0.1    localhost
...

# entries related to the demo Cloud Server
123.45.67.890   domain1.com
123.45.67.890   www.domain1.com
123.45.67.890   domain2.com
...

「hosts」ファイルの場所は、ローカルコンピュータにロードされているOSによって異なります。

:「hosts」ファイルのエントリは、インターネットネームサーバーで作成されたライブDNSゾーンとレコードをテストして使用する前に削除する必要があります。削除しないと、混乱を招き、新規または変更されたパブリックDNSレコードのテストが不正確になる可能性があります。

>

テスト目的でこのような変更を加えると、ローカルコンピューターのWebブラウザーでサイトに移動でき、public/index.htmlファイルの内容が表示されます。

ServerAliasを使用する

vhostファイルでServerAliasを設定することに注意してください。 DNSが正しく設定されていれば、そのアドレスを使用することもできます。

書き換えルールに関する後の記事で、いずれかのアドレスを強制する方法について説明します。

他のドメインのプロセスを繰り返します

domain2.comを作成して有効にするには、次の手順を繰り返します。

  1. vhostファイルを作成します:

    sudo nano /etc/apache2/sites-available/domain2.com
    ...
    # Enter the details for domain2.com as per the example shown above
    
  2. サイトを有効にしてApacheを再起動します:

    sudo a2ensite domain2.com
    ...
    sudo /etc/init.d/apache2 reload
    
  3. 2番目のドメインに移動します:

    https://domain2.com
    or
    https://www.domain2.com
    

「domain2.com」インデックスファイルが表示されます。

ログファイルを表示

vhostsファイルで定義されているように、各ドメインには独自のログファイルがあります。

ドメインのログを一覧表示します:

ls /var/log/apache2/error-mydomainname.com.log

出力は期待どおりです:

access.log  error.log
デフォルトの仮想ホストファイル

デフォルトの仮想ホストを変更しましたが、そのままにしておきました。

誰かがクラウドサーバーのIPアドレスを入力すると、そのデフォルトのvhostsファイルの内容が提供されます(IPアドレスに個別のvhostを設定しなかった場合)。

なぜそれらはそのvhostファイルから提供されるのですか?

Apacheは、有効な仮想ホストファイルをアルファベット順に検索し、要求されたIPアドレスまたはドメイン名のファイルが見つからない場合は、最初のファイルを(アルファベット順に)提供します。

デフォルトの仮想ホストファイルを無効にするか削除した場合は、domain1.comのコンテンツが表示されます(domain2.comの前にアルファベット順で表示されます)。

これはあなたのウェブサイトを計画するときに考慮すべきことです。特定のドメインをデフォルトにしますか? IPアドレスの内容を完全に変えたいですか?

管理者のメールアドレスを設定します

サーバー管理者のメールアドレスを設定します。このアドレスは、エラーが発生したときに連絡するようにサーバーを設定する場合に使用されます。値がEmailに設定されている場合は、ServerSignatureにも表示されます。 (Apacheフッターの定義のセクションを参照してください。 。

ServerAdmin [email protected]
ドメイン名を設定

仮想ホストのドメイン名(ServerName)を設定します。必要に応じて、asmanyエイリアス(ServerAlias)を使用できます。たとえば、domain.comとdomain.netが同じコンテンツを指すようにすることができます。

ServerName domain.com
ServerAlias www.domain.com

:これは書き換えルールではありませんが、ここで定義されたドメインは同じコンテンツを提供します(Cloud Server IPを指すようにDNSを設定していると仮定します)。

インデックスファイルを定義する

インデックスファイル(ドメインアドレスを入力したときに表示されるホームページ)を定義します。これは、ユーザーを別のページまたは非標準のホームページに誘導する場合に役立ちます。

DirectoryIndex index.html

:これは、ユーザーをリダイレクトするための適切な方法ではありません。これは、domain.com / index.phpなどの指定されていないページに直接移動する可能性があるためですが、DirectoryIndex値はdomain.comにアクセスするユーザーに対してのみ機能します。

ドキュメントパスを定義する

ドメインの公開ファイルの場所を定義します。絶対パス名を使用してください。

DocumentRoot /home/demo/public_html/domain.com/public
ログファイルを設定する

ログレベルと仮想ホストのログファイルの場所を設定します。

LogLevel warn
ErrorLog  /var/log/apache2/error-mydomainname.com.log
CustomLog /var/log/apache2/access-mydomainname.com.log combined
エラードキュメントを定義する

すべての標準エラーメッセージに使用されるErrorDocumentを設定します。

ErrorDocument 404 /errors/404.html
ErrorDocument 403 /errors/403.html

この例では、パブリックディレクトリに「errors」フォルダがあります。各エラードキュメントが作成され、errorsフォルダに配置されました。表示されるパスは、前に定義したDocumentRootフォルダーからの相対パスです。

エラーメッセージが定義されていない場合、Apacheは独自のエラーページを生成します。カスタムエラーページはよりユーザーフレンドリーで、必要に応じてカスタマイズできます。

Apacheフッターを定義する

ServerSignatureを定義して、サーバーの詳細をサーバーで生成されたエラーページまたはインデックスリストに表示するかどうかを指定します。オプションは、オン、オフ、および電子メールです。

ServerSignature On

シグニチャの詳細レベルは、仮想ホストファイルで設定できないServerTokensを介して構成されます。 UbuntuオペレーティングシステムのApachelayoutの場合、これは「/etc/apache2/conf.d/security」で適切に設定されます。詳細については、Apache構成#2NEEDLINKの記事を参照してください。

ServerSignatureがEメールに設定されている場合 、ServerAdminの電子メールが表示されます。

cgi-binを有効にする

カスタム仮想hostslayoutで定義されているcgi-binの場所を有効にします。必要に応じて、cgi-binをDocumentRootの場所に残すことができます。

ScriptAlias /cgi-bin/ /home/demo/public_html/domain.com/cgi-bin/
<Location /cgi-bin>
  Options +ExecCGI
</Location>
ディレクトリオプションを設定

指定したディレクトリのオプションを設定します。次の例では、domain.comのパブリックディレクトリに対してFollowSymLinksオプションを有効にします。

  Options FollowSymLinks

設定できるその他のオプションは次のとおりです。

ディレクトリブラウジングオプション

ディレクトリブラウジングをオフにするには、-Indexesを使用します。ディレクトリブラウジングをオンにするには、+Indexesを使用します。

Options -Indexes

SSIオプション

サーバーサイドインクルードを有効または無効にします。次の例はそれを無効にします。

Options -Includes
シンボリックリンクオプション

シンボリックリンクをたどるオプションを有効または無効にします。このオプションはセキュリティリスクにつながる可能性があるため、注意してください(誤って構成フォルダにリンクする)。

Options -FollowSymLinks

FollowSymLinksの代わりにSymLinksIfOwnerMatchディレクティブの使用を検討できます。 SymLinksIfOwnerMatchディレクティブを使用すると、リンクの所有者がターゲットファイルまたはディレクトリの所有者と同一である場合にのみシンボリックリンクをたどることができます(Linuxファイルシステムの所有権/権限に関して)。これにより、単純なFollowSymlinksディレクティブが作成する可能性のあるセキュリティリスクの多くを防ぐことができます。

.htaccessオプション

.htaccessサポートを無効にするには、AllowOverrideをNoneに設定します。サポートを許可するには、[すべて]に設定します。

AllowOverride None

次のように、有効にする.htaccess機能を指定することもできます。

AllowOverride AuthConfig Indexes

ApachehtaccessとAllowOverridedocsには、さまざまな機能に関する詳細情報があります。

.htaccessファイルを明確に保護することを忘れないでください。これを行うには、名前をわかりにくい名前に変更し、外部ソースからのファイルへのアクセスアクセスを拒否します。

AccessFileName .myobscurefilename
<Files ~ "^\.my">
    <SatisfyAll>
    Require all denied
    </SatisfyAll>
</Files>

:上記の例は、Apache2.4用にフォーマットされています。 2.2を使用している場合は、**すべての拒否を要求**をOrder Allow、Deny|に置き換えます。すべてから拒否|満足

オプションなし

使用可能なすべてのオプションをオフにするには、[なし]を指定します。

Options None
オプション階層

次の例に示すように、optionsディレクティブはディレクトリごとに設定できます。

  AllowOverride None
  Options None

AllowOverride All

最初のディレクトリ設定では、すべてのオプションがオフになり、すべてのディレクトリの.htaccessサポートが無効になります。

ただし、2番目のディレクトリ設定は最初のディレクトリ設定を上書きし、domain.com/publicディレクトリの.htaccessサポートを許可します。

概要

仮想ホストファイルは使いやすいツールですが、非常に強力なツールです。1つの設定を入力して、それをテストすることをお勧めします。次に、次の設定を入力してテストします。

慣れると、すべてのWebフォルダとファイルを細かく制御できるようになります。


Linux
  1. LinuxUbuntuオペレーティングシステムのSSHポートを変更します

  2. CentOSNGINX仮想ホストを作成する

  3. Ubuntuオペレーティングシステムで仮想ホストを無効にし、ApacheとNginxのCentOSを無効にします

  1. UbuntuオペレーティングシステムでApacheを構成する

  2. UbuntuオペレーティングシステムにIMAPforPHP7.1をインストールします

  3. UbuntuオペレーティングシステムにMySQLサーバーをインストールします

  1. UbuntuオペレーティングシステムでMySQLサーバーを構成する

  2. Ubuntuオペレーティングシステムで再起動をスケジュールする

  3. Ubuntu20.04およびDebian10でApache仮想ホストをセットアップします