現在、Apache 仮想ホストを勉強していますが、その構成に関して混乱しています。
フォルダー内に仮想ホスト ファイルを作成しsites-available
、root としてコマンドを使用して対応するサイトを有効にしましたa2ensite example.com.conf
。これを行うと、sites-enabled
フォルダー内にシンボリック リンクが作成されることに気付きました。
動作をより徹底的に理解するために、シンボリックリンクを介した間接参照を避けて、example.com.conf
ファイルを直接 に保存して実験しましたsites-enabled
。Apache を再起動した後、仮想ホストが引き続き正常に動作していることに驚きました。
フォルダーに保存せず、シンボリックリンクも使用せずに、example.com.conf
のみにファイルを保存すると、何か問題が発生しますか?sites-enabled
sites-available
答え1
このフォルダ構造は、管理のしやすさを重視しています。すべてのモジュールと仮想ホストの設定を 1 つの に追加してもまったく問題ありませんがhttpd.conf
、長くなり、変更が難しくなります。そのため、たとえば Debian では、ワイルドカード インクルードを使用して設定を複数のファイルに分割しています。
# Include generic snippets of statements
IncludeOptional conf-enabled/*.conf
# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf
これにより、パスに一致するすべてのものがsites-enabled/*.conf
設定に追加され、Apache HTTPd では、それがテキスト ファイルであるか、テキスト ファイルへのシンボリック リンクであるかは関係ありません。この観点からは、ファイルにブロックが含まれているか、または他の Apache 設定であるかどうかも関係ありません。設定などの<VirtualHost>
ファイルを持つことも完全に可能です。example.com.conf
example.net
非標準的な構成で直面する問題は、管理性の欠如に関連しています。
a2ensite
/を使用して仮想ホストを有効または無効にすることはできませんa2dissite
。# a2dissite example.com ERROR: Site example.com does not exist!
公式ドキュメント(man ページ)は役に立たなくなります。
サイトを一時的に無効にすることは簡単ではありません。例えば、包括的な仮想ホストを使用すると、メンテナンス中サイトの更新が無効になっているときに表示するページ。
同じサーバーを管理している他の誰かが、これらの公式コマンドの代わりに
ln -s
とを使用していた可能性がありますrm
。サイトを一時的に無効にしようとしているときに、誤って削除してしまう可能性があります。あなたが通常のプラクティスに従っていないことは、他の誰にもわかりません。数か月後には、あなたもそれを忘れてしまいます。その時点で、ドキュメントやチュートリアルに従うことがセットアップに適用されなくなった理由について、Serverfault で新たな質問をすることになります。