web-dev-qa-db-ja.com

ウェブサイトのコンテンツを保存するために推奨されるディレクトリは何ですか?

私が最初にWebのプログラミングを始めて、新しいプロジェクトを作成したいと思ったとき、常に/var/www/にディレクトリを作成するように教えられました。しかし、私が読んだ多くのチュートリアルでは、人々は/home/username/にディレクトリを作成する傾向があります。

/home/username/に入れるのは好きではありません。

正しい場所はありますか、それともファイルシステムの特定の領域に配置することの利点/欠点は何ですか?

22
Pattle

「最適な」ディレクトリはありません。そして、この質問は主観的である、またはファイルの実際の配置は重要ではない、そして後者については正しいと人々は主張するかもしれませんが、がありますUnixライクなシステムのどこに何を配置するかに関する標準化された推奨事項。

Filesystem Hierarchy Standard はこれを定義し、以下を提供します。

  • /var –ログなどの通常の操作中に変更されるデータを配置する場所です。/var/wwwは、ApacheのWebコンテンツを配置するデフォルトのディレクトリですが、その使用法はまったく標準化されておらず、「通常」というのは、人々がデフォルト設定をあまり頻繁に変更しないためです。

  • /srv –このディレクトリには、システムによって提供されるデータが含まれている必要があります。これは通常、必要な場所です。 FHSは次のように説明しています。

    これを指定するこの主な目的は、ユーザーが特定のサービスのデータファイルの場所を見つけられるようにすること、および読み取り専用データ、書き込み可能なデータ、およびスクリプト(cgiスクリプトなど)に単一のツリーを必要とするサービスを合理的に配置できるようにすることです。特定のユーザーのみが関心を持つデータは、そのユーザーのホームディレクトリに移動する必要があります。 (…)

    /srvの下でデータを構造化する1つの方法は、プロトコルによるものです。 ftprsyncwwwcvs

    したがって、単に/srv/wwwディレクトリを作成し、これを使用します。マシンで提供したいすべての仮想ホストのサブフォルダーを作成できます。

  • /homeには、実際には1人のユーザーに属すべきファイルが含まれています。たとえば、Apacheは serdirs を許可するため、http://example.com/~usernameを介してユーザーのWebファイルにアクセスでき、それらはユーザーのホームのpublic_htmlディレクトリから提供されます。

    複数の人で共有されているサーバーを使用していて、すべての人が自分のスクリプトをホストできるようにしたい場合は、ここで行ってください。ディレクトリは、所属するユーザーのみが書き込み可能にしてください。

基本的に、/srv/www/var/wwwは、ホストするWebプロジェクトのサブディレクトリを作成する必要があります。次に、これらのディレクトリに異なる権限を定義して、特定のユーザーまたはユーザーグループがそれらに書き込むことを許可できます。一度に1人のユーザーのプロジェクトがある場合は、/homeを使用します。

38
slhck

ファイルが適切にアクセスできる限り、どこにでもファイルを配置できますが、ファイルシステムが雑然としていて、後で誰かが来た場合は頭痛の種です。

/srvは、最も論理的なプラスです。ファイルシステム階層標準に従うと、ここに移動します。

複数のドメインを使用する場合は、/srv/domain1/srv/domain2 etc etcそして、そこにあるサブフォルダー/ftp/www/tftp/logs/etc.etc.etc

構築し、簡単に制御するための非常に強固な構造を感じている私にとって

ただし、管理者は、必要に応じてクリーンまたは乱雑に実行できます。

5
jenny

わかりやすい簡単な答えです。

システム上のWebファイルにLinuxシステムの1人のユーザーのみがアクセスする場合。ユーザーのホームディレクトリ(~/)。

システム上のWebファイルにLinuxシステム上の複数のユーザーがアクセスする場合。使用する /srv/

これがまさに http://refspecs.linuxfoundation.org/FHS_2.3/fhs-2.3.html#SRVDATAFORSERVICESPROVIDEDBYSYSTEM が述べていることです。

ここに引用があります:

/ srvには、このシステムによって提供されるサイト固有のデータが含まれています。

これを指定するこの主な目的は、ユーザーが特定のサービスのデータファイルの場所を見つけることができるようにし、読み取り専用データ、書き込み可能なデータ、およびスクリプト(cgiスクリプトなど)に単一のツリーを必要とするサービスを合理的に配置できるようにすることです。特定のユーザーのみが関心を持つデータは、そのユーザーのホームディレクトリに移動する必要があります。

ボーナス:www? ftp?プロトコルで整理しますか?え?

http://refspecs.linuxfoundation.org/FHS_2.3/fhs-2.3.html#SRVDATAFORSERVICESPROVIDEDBYSYSTEM に記載されているとおり

  • あなたのウェブサイトがシステム上の1人のユーザーによってのみアクセスされ、ブラウザ(httpプロトコル)を介してのみアクセスされる場合:~/http/your-website-directory/または(httpsプロトコル)の場合:~/https/your-website-directory/
  • システム上の1人のユーザーのみがウェブサイトにアクセスし、ブラウザを介してのみアクセスするのではなく、複数のプロトコル(httpおよびtcpおよび...など)を使用する場合:~/your-website-directory/
  • システム上の複数のユーザーがWebサイトにアクセスし、ブラウザ(httpプロトコル)を介してのみアクセスする場合:/srv/http/your-website-directory/または(httpsプロトコル)の場合:/srv/https/your-website-directory/
  • システム上の複数のユーザーがウェブサイトにアクセスし、ブラウザだけでなく複数のプロトコル(httpおよびftpおよび...など)を使用する場合:/srv/your-website-directory/

ええとなぜwwwではないのですか?これはApache時代の遺産です。 wwwは、使用されているプロトコルを指定していません。 Debianは今日でもこれを使用していますが、たとえばArch Linuxは/ srv/httpを使用しています。

2
Karl Morrison

Apache WebサーバーのデフォルトのWebサイトは/var/www/ですが、他のウェブサイトを/srv/

Ubuntu Server 14.04 LTSでこれに気付きました。そのデフォルトApache2.confファイルにコメントブロックが含まれています:

#<Directory /srv/>
#   Options Indexes FollowSymLinks
#   AllowOverride None
#   Require all granted
#</Directory>
0
Maris B.