Tuxfiles は、Linuxディレクトリ構造について次のように述べています。
/var
:このディレクトリには、システムの実行中に常に変化する変数データが含まれています。
FHS on /var
は次のように述べています。
/var
には、可変データファイルが含まれています。これには、スプールディレクトリとファイル、管理データとログデータ、一時ファイルと一時ファイルが含まれます。
次に、ログ、メール、スプーラなどがそのフォルダに置かれると言います。
伝統的に Ubuntu LinuxにApacheまたはNginxのストックインストールを行うと、ディレクトリが/var/www/
に配置されます。
ほとんど永続的であるはずのファイルやその他のコンテンツを含むディレクトリを配置するのに理想的な場所は好きではないようです。
なぜそれが頻繁に/var
に入れられるのですか?
もっと主観的には、ディレクトリ構造によると、これは理想的な場所ですか?
/var/www
の使用は、一見しただけでは混乱を招きます。
FHSによると、Webサーバーのデータは/srv
に送信する必要があります。それが主なルールです。
ただし、/srv
の構造を決定するのはローカル管理者の責任です。したがって、パッケージは/srv
に何も入れてはならず、()ドキュメントルートは/srv
であってはなりません。これは、(Apache)パッケージが/srv
以下の内容を認識していないためです。たぶん、クリアテキストのパスワードやその他のものを備えたSubversionリポジトリ。したがって、/srv
の外側にデフォルトがある必要があります。そのデフォルトは/var/www
になります。
/var/www
は主にプレースホルダーです。パッケージは、静的なHTMLコンテンツには/usr/share
を使用し、動的な変数コンテンツには/var/lib
を使用します。多くの人は、HTMLを/var/www
に入れるべきだと誤って考えました。パッケージも時々それを使用するので、それは問題です。そこで最近、パッケージ用の/var/www/html
を発明しました。うまくいけば、人々はそれを使い始めないでしょう。それでも、彼らは新しいディレクトリを発明しなければならないのです...など。
概要:/srv
を使用し、それに応じてApache仮想ホストを構成する必要があります。
実際には「伝統的な」場所ではありません。従来、OSのインストール後にインストールしたものはすべて/usr/local
、そして実際、それは今日までの「クラシックApacheパスレイアウト」(彼らの言葉)です。長い間、それは/home/httpd
。
表示されているのは、特定のOS用に構成されたApache(Red Hat Linux、Mac OS X、GNUなど)が場所をカスタマイズすることです。 Apacheのソースはこのためにうまく設計されています。実際、ソースファイルでServerRootの値をトレースすると、このファイルで始まることがわかります config.layout
:
そのファイルからの一部の抜粋は、docrootの場所にさまざまな種類があることを示しています。
ちゃんと覚えたら、 /var/www
2000年から2001年にリリースされたRed Hat Linux 7.x(Red Hat Enterprise Linuxではありません)のリリースで私の人生に入りました。あなたが上で引用したすべての理由から、私はそれはあまり意味がないと思いました-しかし、現実には、現代では他の多くのツールやテクノロジーが場所の移動に関係しています。
# Classical Apache path layout.
<Layout Apache>
prefix: /usr/local/Apache2
datadir: ${prefix}
# GNU standards conforming path layout.
# See FSF's GNU project `make-stds' document for details.
<Layout GNU>
exec_prefix: ${prefix}
datadir: ${prefix}/share+
# Mac OS X Server (Rhapsody)
<Layout Mac OS X Server>
prefix: /Local/Library/WebServer
datadir: ${prefix}
# Darwin/Mac OS Layout
<Layout Darwin>
prefix: /usr
datadir: /Library/WebServer
# Red Hat Linux 7.x layout
<Layout RedHat>
prefix: /usr
datadir: /var/www
# SuSE 6.x layout
<Layout SuSE>
prefix: /usr
datadir: /usr/local/httpd
# BSD/OS layout
<Layout BSDI>
prefix: /var/www
datadir: ${prefix}
# Solaris 8 Layout
<Layout Solaris>
prefix: /usr/Apache
datadir: /var/Apache
Akondの回答には同意しますが、もっと重要な側面があると思います。他のほとんどの場所(/usr/local
など)は通常、システム(パッケージマネージャー)によって管理されます。 /var
は通常、パッケージマネージャー(システム全体の「データ」)によって管理されていないファイルが置かれる場所です。
[〜#〜] fhs [〜#〜] の定義も少し正確だと思います(データが「常に変化している」必要はありません)。
/ varには可変データファイルが含まれます。これには、スプールディレクトリとファイル、管理データとログデータ、一時ファイルと一時ファイルが含まれます。
ただし、 [〜#〜] fhs [〜#〜] は、wwwデータが/srv
に入れられるべき種でもある
/ srvには、このシステムによって提供されるサイト固有のデータが含まれています。
これを指定するこの主な目的は、ユーザーが特定のサービスのデータファイルの場所を見つけられるようにし、読み取り専用データ、書き込み可能なデータ、およびスクリプト(cgiスクリプトなど)に単一のツリーを必要とするサービスを合理的に配置できるようにするためです。
/ srvのサブディレクトリに名前を付けるために使用される方法論は、現時点ではこれがどのように行われるべきかについてコンセンサスがないため、指定されていません。/srvの下でデータを構造化する1つの方法は、プロトコルによるものです。 ftp、rsync、www、およびcvs。
他の人が言ったように、理由は主に歴史的なものです。 /var
は、キャッシュファイル、ログ、ランタイムデータ(ロックファイルなど)、メールサーバーストレージ、プリンタースプーリングなど、常に変化するシステムデータに使用されています。基本的に、入力できないものすべてに使用されます。 /usr
(ローカルデータが含まれているため)は、/opt
に含まれるサードパーティのプログラムではなく、/tmp
に含まれるため、破棄および揮発性ではありません。
Unix/Linuxが開発されるにつれ、さまざまな異なるディレクトリがまとめられたホッジポッジが作成され、厄介な場所になりました。近年、いくつかのもの、特にマシンによって提供されるコンテンツ([ Filesystem Hierarchy Standard 2.3、p.15 ]は、/srv
ではなく、/var/www
に入力する必要があります。
同様のことが/var/run
にも数年前に起こりました-いくつかのディストリビューションの集中的な取り組みにより、それは/var/run
から/run
に移動され、以前に使用されていた/var/lock
、/var/run
、/dev/shm
の関数を融合しました。
私の経験(私はWeb開発者です)から、Webサイトのコンテンツは安定していません。 htmlファイルの場合でも(動的に生成されたコンテンツを無視する)、それらは常に変更(修正、省略など)される可能性があります。
だから私の見方では、それらは変数です。したがって、これらは/ varディレクトリに完全に適合しており、何も問題はありません。
IIRCは、昔は独自のファイルシステム(個別のディスクまたはディスクのスライス)であるため、常に/var
をマウントしていました。
これの理由の1つは、他の人が述べたように、そのファイルシステム(logs/et al)への大量の読み取り/書き込みがあることです。別のディスク/スライスがあることは、このタイプのI/Oに合わせてより適切に調整できることを意味します(主に/
、/usr
などを読み取るよりも)。
もう1つの理由は、当時、書き込み操作中にシステムがクラッシュした場合、ルートファイルシステムが破損し、修復が困難な状態になる可能性が非常に高かったためです。したがって、/
から分離する必要があります。
ファイルシステムとディスクのテクノロジーは時間とともに大幅に改善されたため、これは発生する可能性がはるかに低くなっています。
/var
は、FTPやその他のアップロードを許可する複数の仮想ホストを実行しているWebサイトがある場合(つまり、Webホストなど)、ユーザーに中立な「ベース」の場所として適切な選択です。
意図しないまたは悪意のあるユーザーが/home
パーティションの制限にアップロードすると(/home
や/var
などの従来のセットアップが別のパーティションにあると想定)、他のユーザーアカウントに悪影響を及ぼす可能性があるため、/home
は最適ではない可能性があります。
もちろん、これには/srv
の方が適していると思いますが、UNIXの伝統では/var
はずっと以前からあります。
ここで追加したいのは、/ usrにWebの「ルート」を置くと、FHSの/ usrが共有可能で読み取り専用であることを示す部分が競合するということです。は、異なる構成を含む異なるファイルを持つことができますが、これは/ usrにとって理想的ではありません。
さらに、一部のWebアプリケーション(MediaWikiとPhpBBは、頭上にあるものに名前を付けます)では、添付ファイル/メディアファイルのアップロード用に、Webディレクトリツリーの下に書き込み可能な場所が必要です。したがって、読み取り専用の/ usr定義にしたい場合は、/ usrの下にWebツリーを配置すると競合が発生します。
Apache Webサーバーには/ var/www /の下にデフォルトのWebサイトがありますが、他のWebサイトを/ srv /の下に置くことをお勧めします
Ubuntu Server 14.04 LTSでこれに気付きました。デフォルトのApache2.confファイルには、コメントブロックが含まれています。
#<Directory /srv/>
# Options Indexes FollowSymLinks
# AllowOverride None
# Require all granted
#</Directory>