it-swarm-eu.dev

Proč je kořenový adresář na webovém serveru ve výchozím nastavení umístěn v adresáři "/ var / www"?

Tuxfiles říká o struktuře adresářů Linux následující:

/var:

Tento adresář obsahuje proměnná data, která se neustále mění, když je systém spuštěn.

FHS na /var říká následující:

/var obsahuje proměnné datové soubory. To zahrnuje zařazovací adresáře a soubory, administrativní a protokolovaná data a přechodné a dočasné soubory.

Poté říkají, že do této složky jsou uloženy věci, jako jsou protokoly, pošta a zařazovací služba.

Tradičně Skladová instalace Apache nebo Nginx na Ubuntu Linux umístí adresář na /var/www/.

Nezdá se mi, že je to ideální místo pro umístění adresáře se soubory nebo jiným obsahem, který má být téměř trvalý.

Proč je to tak často uváděno /var?

Více subjektivně, je to tam, kam by mělo ideálně jít, podle struktury adresářů?

90
jonallard

Použití /var/www je matoucí pouze na první pohled.

Podle FHS by data webového serveru měla jít na /srv. To je hlavní pravidlo.

Říká se však také, že rozhodování o struktuře /srv je výhradní odpovědností místního správce! Balíčky proto nesmí do _ /srv a kořen dokumentu výchozí nesmí být /srv, protože (Apache) balíček neví, co je v /srv a pod ním. Možná úložiště Subversion s heslem čistého textu a dalšími věcmi. Musí tedy existovat výchozí hodnota mimo /srv. Tato výchozí hodnota se stane /var/www.

/var/www je většinou zástupný symbol. Balíčky používají /usr/share pro statický obsah HTML nebo /var/lib pro obsah dynamické proměnné. Mnoho lidí se mylně domnívalo, že by pak měli HTML vložit do /var/www. To je problém, protože to občas používají i balíčky. Takže nedávno vymysleli /var/www/html pro balíčky. Doufejme, že to lidé nezačnou používat, protože pak musí znovu vytvořit nový adresář ... a tak dále.

Shrnutí: měli byste použít /srv a podle toho nakonfigurujte své virtuální hostitele Apache.

39

Ve skutečnosti nejde o „tradiční“ místo. Tradičně vše, co jste nainstalovali poté, co operační systém přešel do /usr/local, a to je skutečně „rozložení cesty klasického Apache“ (jejich slova) dodnes. Dlouho to bylo /home/httpd.

Vidíte, že umístění Apache, které bylo nakonfigurováno pro konkrétní operační systém - ať už se jedná o Red Hat Linux, Mac OS X, GNU atd. -. Zdroj Apache je na to dobře navržen, ve skutečnosti pokud sledujete hodnotu ServerRoot ve zdrojových souborech, uvidíte, že v tomto souboru začíná, config.layout :

Některé výňatky z tohoto souboru vám ukážou, že v umístění docrootu je spousta rozmanitosti.

IIRC, /var/www do mého života přišel s vydáním Red Hat Linux 7.x (ne Red Hat Enterprise Linux) z let 2000-2001. Ze všech důvodů, které citujete výše, jsem si myslel, že to nedávalo velký smysl - ale realita je taková, že v moderní době je zapojeno tolik dalších nástrojů a technologií, že umístění se stejně přesouvá.

#   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
37
ckhan

I když souhlasím s odpovědí Akond, myslím si, že je zde důležitější aspekt. Většina dalších míst (například /usr/local) jsou obvykle spravovány systémem (správce balíků). /var je obvykle místo, kam jedou soubory, které nejsou spravovány správcem balíků („data“).

Také si myslím, že definice z FHS je trochu přesnější (data nemusí být „neustále se měnící“):

/ var obsahuje proměnné datové soubory. To zahrnuje zařazovací adresáře a soubory, administrativní a protokolovaná data a přechodné a dočasné soubory.


Nicméně FHS také druhy, do kterých by měla být data www vložena /srv

/ srv obsahuje data specifická pro web, která jsou obsluhována tímto systémem.

Hlavním účelem této specifikace je to, aby uživatelé mohli najít umístění datových souborů pro konkrétní službu, a tak, aby služby, které vyžadují jediný strom pro čitelná data, zapisovatelná data a skripty (jako jsou cgi skripty), mohly být přiměřeně umístěny.

Metodika použitá pro pojmenování podadresářů/srv není specifikována, protože v současné době neexistuje shoda ohledně toho, jak by se to mělo dělat. Jednou z metod pro strukturování dat pod/srv je protokol, např. ftp, rsync, www a cvs.

25
Patrick

Důvody jsou většinou historické, jak uvedli ostatní. /var se používá pro systémová data, která se neustále mění, například soubory mezipaměti, protokoly, runtime data (například soubory zámku), úložiště poštovního serveru, zařazování tiskáren atd. V podstatě pro všechny věci, které nelze vložit v /usr (protože obsahuje lokální data), nejsou programy třetích stran, které vstupují do /opt a nelze jej zlikvidovat a volatilně, protože se objevují v /tmp.

Jak se Unix/Linux vyvíjel, stalo se chaotickým místem s různým adresářem složeným z různých podadresářů. V posledních letech došlo k tendenci přesunout některé věci odtamtud, zejména obsah obsluhovaný strojem (který nyní podle [ Filesystem Hierarchy Standard 2.3, str.15 ] by měl jít do /srv, ne v /var/www).

Podobná věc se stala /var/run před několika lety - s soustředěným úsilím několika distribucí bylo přesunuto z /var/run do /run které spojily dohromady funkce dříve používaných /var/lock, /var/run a /dev/shm.

13
mindcorrosive

Z mé zkušenosti (jsem webový vývojář) je obsah webových stránek zdaleka stabilní. I v případě souborů html (nikdy dynamicky generovaný obsah) podléhají neustálým změnám (změny, opomenutí atd.).

Takže z mého pohledu jsou to proměnné. Jsou tedy dokonale vhodné v adresáři/var a s tím není nic špatného.

6
akond

IIRC, v dávných dobách jsme vždy jezdili /var jako vlastní souborový systém (samostatný disk nebo část disku).

Jedním z důvodů tohoto je, jak již uvedli jiní, to, že do tohoto souborového systému je těžké číst/zapisovat (logs/et al). Mít samostatný disk/řez znamená, že může být lépe naladěn pro tento typ I/O (oproti většinou čtení na /, /usr, atd...).

Dalším důvodem je to, že v těch dnech, pokud váš systém havaroval během operace zápisu, existovala velmi dobrá šance, že by se váš kořenový souborový systém mohl poškodit a nechat jej v těžko opravitelném stavu. Potřeba oddělení od /.

Technologie souborového systému a disku se postupem času výrazně zlepšila, takže se jedná o mnohem méně pravděpodobný výskyt.

6
Brian

/var Je slušnou volbou pro uživatelsky neutrální „základní“ umístění pro víceuživatelský přístup, v případě, že máte spuštěný web s více virtuálními hostiteli, který umožňuje FTP nebo jiné nahrávání, tj. Pokud jste webhosting nebo podobné .

/home Možná není optimální, protože jiným uživatelům účtů Shell by se mohly stát špatné věci, pokud by nemyslící nebo nebezpečný uživatel nahrál do oddílu oddílu /home (Za předpokladu tradičního nastavení /var), /home Atd. Na samostatných diskových oddílech), může to ovlivnit další uživatelské účty.

Samozřejmě si myslím, že /srv Je pro to lepší, ale /var Je v tradici UNIX už delší.

3
LawrenceC

Chtěl bych zde přidat, že uvedení "root" webu do/usr je v konfliktu s částí FHS, která označuje/usr jako sdílenou a čitelnou, protože různé webové servery, dokonce na stejném "klastru" může mít různé soubory, které obsahují různé konfigurace, a proto není ideální pro/usr.

Kromě toho některé webové aplikace (MediaWiki a PhpBB, které pojmenovávají ty z hlavy) očekávají umístění pro zápis/mediální soubory pod stromovým adresářovým stromem pro zápis. Takže umístění webového stromu pod/usr by bylo v rozporu, pokud chcete dodržovat definici jen pro čtení/usr.

1
Didi Kohen

Webový server Apache má výchozí web pod / var/www /, ale navrhuje se umístit další weby pod / srv /

Všiml jsem si toho na Ubuntu Server 14.04 LTS. Jeho výchozí soubor Apache2.conf obsahuje blok s komentáři:

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