この記事では、仮想ホストと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
次の手順を使用して、新しい仮想ホストを作成します。
-
可能であれば、既存の仮想ホストをコピーして、一貫した設定を維持します。
vim
などのテキストエディタを使用する 、nano
、sed
、またはawk
、編集する必要がある場合。# cat /OLD_DOMAIN.conf | sed 's/OLD_DOMAIN/NEW_DOMAIN/ig' >> /NEW_DOMAIN.conf
-
新しいDocumentRootを作成します ディレクトリ。システムは、カスタムログとエラーログを自動的に作成します。次のコマンドを実行します:
# mkdir -p /docroot
-
Webサーバーがエラーを送信しないことを確認します:
# httpd -t
-
Webサーバーで正常に再起動して、ライブ環境への影響を最小限に抑えて変更を組み込みます。
# service httpd graceful
-
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
コメントや質問をするには、[フィードバック]タブを使用します。私たちと会話を始めることもできます。