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

Vhostsの基本

この記事では、仮想ホストとWebサーバーの基本を紹介します。 Webサーバーは、ソフトウェアを実行してWebページを処理します。 Webトラフィックがサーバーに到達した後、適切なWebサイトに到達するための手順に従います。サーバーがWebコンテンツを提供する場合は、Webサーバーをインストールする必要があります。

Webサーバーのステータスを確認する

Linux®で実行される最も一般的なWebサーバーはApache®( httpd またはapache2 )およびNGINX®。 Plesk®を使用している場合もあります。Pleskを使用して、よりポイントアンドクリックのWindows®スタイルでWebサイトを管理できます。 Pleskをインストールする場合は、ここで説明するタスクを実行するためにLinuxコマンドラインの代わりにPleskを使用する必要があるため、この記事の残りの部分であるvhostsの概要を使用してください。

デフォルトでは、Webサーバーはポート80を介したHTTPトラフィックを許可します およびポート443を介したHTTPS(セキュア)トラフィック 。

ポート80で実行されているWebサーバーを見つけるには および443 、次のコマンドを入力します:

# netstat -plnt | awk '$4 ~ /:(80|443)$/'
tcp6       0      0 :::80                   :::*                    LISTEN      2549/httpd
tcp6       0      0 :::443                  :::*                    LISTEN      2549/httpd

Webサーバーのステータスを確認するには、次の表に示すコマンドの1つを実行します。

Webサーバーのタイプ コマンド
httpd service httpd status
または
systemctl status httpd
apache2 service apache2 status
または
systemctl status apache2
nginx service nginx status
または
systemctl status nginx
Plesk service psa status
または
systemctl status psa

Pleskをチェックし、実行中のWebサーバーを確認するには、次のコマンドを入力します。

# service psa status; netstat -plnt | awk '$4 ~ /:(80|443)$/'

vhosts構成を確認してください

Webサーバー(またはWebサーバーのプール)は、仮想ホスト(vhosts)を使用して複数のWebサイトをホストできます。 Vhostを使用すると、複数のWebサイトが物理サーバーのリソースを共有できます。

Vhostは、IPアドレスベースまたは名前ベースにすることができます。 IPアドレスベースのvhostは異なるIPアドレスをWebサイトに割り当て、名前ベースのvhostは複数のホスト名を単一のIPアドレスに割り当てます。 Vhostは、各Webサイトの構成を指定して、Webサーバー内のWebサイトを追跡します。

Apacheでvhosts構成を確認するには、次のいずれかのコマンドを入力します。

# httpd -S

または

# apache2ctl -S
*:80                   example.com (/etc/httpd/vhost.d/example.com.conf:1)

vhost構成ファイルの内容を読み取るには、次のコマンドを入力します。

# cat /etc/httpd/vhost.d/example.com.conf 

vhosts構成ファイルのエントリは次のとおりです。

  • :80 または:443 :これらのエントリは、WebサイトがHTTP(80)を使用するかどうかを指定します )またはHTTPS(443
  • DocumentRoot :Webサイトファイルのディレクトリパス。これはほとんどの場合、開発者がファイルをアップロードするためにアクセスする必要がある場所です。
  • サーバー名 :ウェブサイトのドメイン名。
  • ServerAlias サーバー名にリダイレクトするその他のウェブサイトドメイン名 ドメイン。通常、タイプが www.domainのドメインを使用します 、ただし、他のドメインまたはサブドメインを使用することもできます。
  • ErrorLog :ディレクトリパスとエラーログの名前。
  • ポート443 :SSL構成。 Webサイトに有効なSSL証明書がない場合は、このセクションにコメントしてください。
  • 安全なHTTPSサイト :完全な暗号化でより安全なHTTPSサイトに変換するために必要な3つのSSLファイルパス。

次の例は、vhosts構成ファイルを示しています。

<VirtualHost *:80>
    DocumentRoot "/var/www/vhosts/example.com/httpdocs"
    ServerName "example.com"
    ServerAlias "www.example.com"
    <Directory /var/www/vhosts/example.com/httpdocs>
        AllowOverride All
        Options +FollowSymlinks
    </Directory>
 
    DirectoryIndex index.html index.php index.htm
 
    # Logging
    CustomLog /var/log/httpd/example.com-access_log combined
    ErrorLog /var/log/httpd/example.com-error_log
</VirtualHost>
 
#<VirtualHost *:443>
#    DocumentRoot "/var/www/vhosts/example.com/httpdocs"
#    ServerName "example.com"
#    ServerAlias "www.example.com"
#    <Directory /var/www/vhosts/example.com/httpdocs>
#        AllowOverride All
#        Options +FollowSymlinks
#    </Directory>
 
#    DirectoryIndex index.html index.php index.htm
 
#    # SSL Configuration
#    SSLEngine On
#    SSLCertificateFile /etc/httpd/conf/ssl.crt/2021-example.com.crt
#    SSLCACertificateFile /etc/httpd/conf/ssl.crt/2021-example.com.ca
#    SSLCertificateKeyFile /etc/httpd/conf/ssl.key/2021-example.com.key
#
#    # Logging
#    CustomLog /var/log/httpd/example.com-ssl_access_log combined
#    ErrorLog /var/log/httpd/example.com-ssl_error_log
#</VirtualHost>

既存の仮想ホストの構成ファイルをコピーして新しい仮想ホストを作成するには、次のコマンドを入力します。

# cat /OLD_DOMAIN.conf | sed 's/OLD_DOMAIN/NEW_DOMAIN/ig' >> /NEW_DOMAIN.conf

必要に応じて、新しい仮想ホスト構成ファイルを編集します。たとえば、ポート443を作成する設定をコメントアウトする必要がある場合があります。 アクティブ。

DocumentRootの場所を見つけるには vhost構成ファイルで、次のコマンドを入力します。

# grep Doc /etc/httpd/vhost.d/example.com.conf

DocumentRoot /var/www/vhosts/example.com
新しい仮想ホストを作成する

次の手順を使用して、新しい仮想ホストを作成します。

  1. 可能であれば、既存の仮想ホストをコピーして、一貫した設定を維持します。 vimなどのテキストエディタを使用する 、nanosed 、またはawk 、編集する必要がある場合。

       # cat /OLD_DOMAIN.conf | sed 's/OLD_DOMAIN/NEW_DOMAIN/ig' >> /NEW_DOMAIN.conf
    
  2. 新しいDocumentRootを作成します ディレクトリ。システムは、カスタムログとエラーログを自動的に作成します。次のコマンドを実行します:

    # mkdir -p /docroot
    
  3. Webサーバーがエラーを送信しないことを確認します:

    # httpd -t
    
  4. Webサーバーで正常に再起動して、ライブ環境への影響を最小限に抑えて変更を組み込みます。

    # service httpd graceful
    
  5. vhostの最小の変更により、Webサーバー全体が中断され、すべてのWebサイトへのサービスが停止する可能性があります。そのため、次のいずれかのコマンドを使用してWebサーバーを再確認してください。

    Webサーバーのタイプ コマンド
    httpd # httpd -t; service httpd status
    apache2 # apache2ctl -t; service apache2 status
    nginx # nginx -t; service nginx status

vhost構成への変更を確認してトラブルシューティングします

Apacheの間違いをチェックするには、次のいずれかのコマンドを使用します。

# httpd -t

または

# apache2ctl -t

AH00558: httpd: Could not reliably determine the server's fully qualified
domain name, using 127.0.0.1. Set the 'ServerName' directive globally to
suppress this message
Syntax OK

NGINXの間違いを確認するには、次のコマンドを使用します:

# nginx -t

AH00558: httpd: Could not reliably determine the server's fully qualified
domain name, using 127.0.0.1. Set the 'ServerName' directive globally to
suppress this message
Syntax OK

:条項確実に判断できませんでした は一般的であり、エラーを意味するものではありません。通常は無視できます。

次の例は、サンプルエラーを示しています。

# httpd -t
AH00112: Warning: DocumentRoot [/var/www/vhosts/example.com] does not exist
AH00558: httpd: Could not reliably determine the server's fully qualified
domain name, using 127.0.0.1. Set the 'ServerName' directive globally to
suppress this message
Syntax OK

DocumentRoot を作成して、このエラーを修正してください ディレクトリ:

# mkdir -p /var/www/vhosts/example.com

別のエラー例:

# httpd -t
AH00526: Syntax error on line 5 of /etc/httpd/vhost.d/example.com.conf:
Invalid command 'oops', perhaps misspelled or defined by a module not
included in the server configuration

おっとという言葉 はvhostファイルにあり、Apacheはそれを解釈する方法を知りません。 vimを使用できます。 、ナノ 、またはエラーを修正するための別のテキストエディタ。

Webサーバーを再起動します

Webサーバーは、再起動後にvhosts構成に加えられた変更を確認します。現在のスレッドは、再起動が発生する前に gracefulで終了できます。 オプション。

Apacheで正常に再起動するには、次のいずれかのコマンドを入力します。

# service httpd graceful

または

# service apache2 graceful

場合によっては、仮想ホストのわずかな変更により、Webサーバー全体が中断され、すべてのWebサイトへのサービスが停止することがあります。したがって、作業をバックアップし、変更を認識するために適切な再起動を行った後、Webサーバーがエラーなしで実行されていることを確認してください。

以下は、vhosts構成を変更した後のサービスの中断を回避するためのベストプラクティスです。

  • Webサーバーをバックアップします。
  • 変更を加えます。
  • 正常に再起動します。
  • Webサーバーがエラーなしで実行されていることを確認します。

ライブ環境では、ダウンタイムをできるだけ回避することが重要です。つまり、必要に応じて変更を元に戻すことができるように、Webサーバーで適切な再起動を行い、可能な限り迅速にチェックを実行する必要があります。これを行うには、すべてのコマンドを1行にグループ化します。

Apacheで正常に再起動してエラーを確認するには、次のいずれかのコマンドを入力します。

# service httpd graceful; httpd -t; service httpd status | grep running

または

# service apache2 graceful; apache2ctl -t; service apache2 status | grep running

AH00558: httpd: Could not reliably determine the server's fully qualified domain
name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK
Redirecting to /bin/systemctl status httpd.service
Active: active (running) (Result: exit-code) since Mon 2021-01-18 12:53:06 GMT; 2 months 19 days ago

NGINXを再起動して実行されていることを確認するには、次のコマンドを入力します。

# nginx -s reload; nginx -t; service nginx status

コメントや質問をするには、[フィードバック]タブを使用します。私たちと会話を始めることもできます。


Linux
  1. ApacheWebサーバーを構成する方法

  2. ApacheWebサーバーのキープアライブのチューニング

  3. Webサーバーとは何ですか?Webサーバーはどのように機能しますか?

  1. LinuxにNginxWebサーバーをインストールする方法

  2. LiteSpeedWebサーバーにWordPressをインストールする

  3. Vhostsとサーバーブロックの基本

  1. Apacheとは何ですか? ApacheWebサーバーの詳細な概要

  2. Ubuntu Webサーバーをセットアップしますか?

  3. Debian サーバーで IPv6 を無効にしても安全ですか?