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

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

この記事では、仮想ホストとサーバーブロックの基本を紹介します。

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

Linux®で実行される最も一般的なWebサーバーはApache®( httpd またはapache2 )およびNGINX®。 Plesk®は、Webサイトを管理するためのGUIプラットフォームです。 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サイトに割り当て、名前ベース vhostsは、単一の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証明書がない場合は、このセクションにコメントしてください。
  • SSLファイル :安全な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, or awk`。

  2. 新しいDocumentRootを作成します ディレクトリ。システムは、カスタムログとエラーログを自動的に作成します。次のコマンドを実行します:

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

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

    # service httpd graceful
    
  5. Webサーバーをもう一度確認してください:

    # httpd -t; service httpd 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

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

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

ライブ環境でのダウンタイムをできるだけ回避することが重要です。つまり、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. システムとサーバーのステータス

  2. Ubuntu 14サーバーとXrdp?

  3. Apache2とバインド?

  1. Linuxでのプロセス間通信:ソケットとシグナル

  2. UbuntuとCentOSでNginxサーバーブロックを設定する方法

  3. HTTP応答ステータスコード

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

  2. Solarisサービスのステータスと依存関係?

  3. Vhostsの基本