Czy strony powinny żyć w / var / lub / usr / zgodnie z zalecanym użyciem?

62

Według przewodnika po strukturze katalogów systemu Linux , /usr/jest dla plików aplikacji, a /var/to dla plików, które zmieniają (Zakładam, że to znaczy „pliki należące do aplikacji”). Czy to jest poprawne?

Jeśli tak jest, to jestem trochę rozdarty między używaniem jednego z nich. Strona internetowa to aplikacja (jeśli tak można powiedzieć, dynamiczna), ale w innych przypadkach jest to tylko zbiór plików używanych przez Apache.

Domyślny www dir istnieje /var/www/, więc czy powinniśmy pójść w jego ślady, używając /var/websites/(lub czegoś podobnego), czy wybrać, /usr/websites/ponieważ mogą to być aplikacje?

To bardzo trywialne pytanie, ale i tak mnie wkurza. W naszym przypadku opieram się na /usr/webczymś takim, ponieważ nasze strony internetowe to aplikacje.

Aktualizacja:

Dotyczy to stron internetowych naszej firmy; nie jest to wspólny serwer hostingowy, więc nie musimy się martwić o ich rozdzielenie /home/itp.

Nick Bolton
źródło
10
Nie sądzę, żeby pytanie było takie banalne; w rzeczywistości jest raczej dobry. Ciekawy.
Aron Rotteveel

Odpowiedzi:

63

Zgodnie z FHS , /usrjest shareable, read-only data- nie tam, gdzie chcesz umieścić na stronie internetowej. Tutaj powinieneś umieścić swój kod (na przykład Fedora robi to dla Wordpress). Zobacz także przewodnik dotyczący pakowania zasobów internetowych dla Fedory.

/varto „pliki danych zmiennych. Obejmuje to katalogi i pliki buforowania, dane administracyjne i dane rejestracyjne oraz pliki przejściowe i tymczasowe”. - lepiej, ale wciąż nie do końca dobrze - ale wiele systemów będzie z niego korzystać /var/www, więc nawet jeśli nie masz racji, umieszczając go tam, jesteś w dobrym towarzystwie.

/srvdotyczy „danych specyficznych dla witryny, które są obsługiwane przez ten system”. - co wydaje się dobrym dopasowaniem, ale jest znacznie mniej powszechne niż /var/www.

Innym powszechnym miejscem umieszczania plików witryny jest /home- tworzenie specjalnego użytkownika o nazwie websitelub inny , a następnie umieszczanie plików w katalogu głównym tego użytkownika (np /home/website.).

James Polley
źródło
4
Ach, moja praca wykorzystuje /srv- jak nigdy wcześniej tego nie widziałam, myślałam, że to oni ją stworzyli. Czy to jest sprawa Redhat / CentOS?
Nick Bolton
12
Ustawieniem domyślnym jest tylko, /var/wwwponieważ dystrybucje nie mogą się dotykać /srv; do skonfigurowania przez administratora systemu. Dlatego jest to „znacznie mniej powszechne”, a także poprawne.
Michael Hampton
28

Spójrz na Standard systemu plików Hierarchia ( Wikipedia ). Sam używam / srv / web / $ domain / {htdocs, logs, cgi-bin, ...}.

ptman
źródło
3
Robię to w ten sposób, ale zamiast „www” zawsze używam nazwy usługi „httpd”. Więc mam / srv / httpd / $ domain ... lub / srv / smbd / sharename ... W ten sposób łatwiej jest sprawdzić, która usługa obsługuje pliki. Np. W niektórych systemach mamy domenę / srv / nginx / $
Raffael Luthiger
9

Strony internetowe powinny znajdować się w katalogach domowych użytkowników. Są to dane użytkownika, powinny być izolowane przez jednego użytkownika na witrynę, a treść dynamiczna powinna ponownie działać jako osobny użytkownik, z plikami, które dynamiczna treść musi odczytać i zmodyfikować, biorąc pod uwagę odpowiednie uprawnienia.

Aktualizacja:

To, że nie jest to wspólny serwer hostingowy, nie oznacza, że ​​nie powinieneś angażować się w dobre praktyki bezpieczeństwa i oddzielać niezależnych ról we własnych strefach bezpieczeństwa.

womble
źródło
7

Ostatecznym przewodnikiem jest standard systemu plików, który mówi, że /srvjest to właściwe miejsce.

Dennis Williamson
źródło
2
Nie czytam tego w ten sposób - a przynajmniej czytam jako dwuznaczny w tej kwestii. Większość stron internetowych nie jest obsługiwana po prostu by this system, są obsługiwane przez cały klaster systemów; a dwa zdania zaczynające się od This setup will differ from host to host.sugerują, że nie jest to miejsce dla plików udostępnianych na wielu serwerach. Jest to dość prawdopodobne miejsce - z pewnością bardziej odpowiednie /usri prawdopodobnie lepsze niż/var
James Polley
1
Nie sądzę, że FHS jest w ogóle ostateczny. Re: (Z Wikipedii): Większość dystrybucji Linuksa postępuje zgodnie z FHS i deklaruje swoją własną politykę zachowania zgodności z FHS. Jednak zdecydowana większość (od 2009 r.) Dystrybucji, w tym opracowanych przez członków Free Standards Group, nie jest w pełni zgodna z proponowanym standardem.
Michael Graff
6
To miła cecha standardów - jest tak wiele do wyboru! :)
James Polley,
3

To, gdzie mieszkają na dysku, nie ma większego znaczenia. Tam, gdzie chcesz.

Mam dowiązanie symboliczne z / www na wszystkich moich komputerach do miejsca, w którym naprawdę żyją, więc nigdy nie muszę się zastanawiać od maszyny do maszyny. Niektóre starsze komputery mają / u0 i / u1 na dyski użytkowników, i umieszczam tam rzeczy internetowe. Niektóre mają / home montowane bezpośrednio, więc idą tam, ale / www zawsze wskazuje właściwe miejsce.

Nie umieszczam też żadnej konfiguracji w / usr ani w / var. Przechodzi do / local (co, jak się domyślacie, jest dowiązaniem symbolicznym gdzieś na / u0 lub / u1 zwykle). Ułatwia to tworzenie kopii zapasowych. Właśnie wykonuję kopię zapasową dysków użytkownika.

Oczywiście mam główną witrynę dystrybucyjną dla mojego wybranego systemu operacyjnego, NetBSD. Robię system tak, jak chcę na tym głównym komputerze (naprawdę instancja Xen) i rsync / usr. Ułatwia mi życie.

Michael Graff
źródło
6
Jest to w porządku, jeśli jesteś operacją jednoosobową lub być może nawet małym zespołem, który ściśle ze sobą współpracuje i zna wzajemne słabości - nauczenie się „właściwego” sposobu na wykonanie tego prawdopodobnie zajmie więcej czasu niż samo robienie to. Jeśli masz dużą operację i często sprowadzasz nowych ludzi na pokład, konieczność przyspieszenia ich z takim układem zajmie dużo czasu - trzymanie się (lub przynajmniej blisko) FHS jest oszczędzając czas z każdą nową osobą, którą przyprowadzasz do zespołu.
James Polley,
5
Kiedy używasz 8 różnych systemów operacyjnych, standardy wewnętrzne są o wiele łatwiejsze do nauczenia się niż każdy system operacyjny na swój własny sposób.
Michael Graff
1
@James Polley Ile czasu zajmuje powiedzenie nowemu zatrudnieniu, że „wkładamy rzeczy /path/we/chose”?
ceejayoz
@ceejayoz Jeśli masz więcej niż dwie kategorie „rzeczy”, o wiele łatwiej jest powiedzieć im, że „postępujemy zgodnie z FHS”, chociaż może to wymagać dodatkowych informacji dla niektórych kategorii „rzeczy”.
tripleee
3

Serwer WWW Apache ma domyślną stronę pod / var / www /, ale sugeruje się umieszczenie innych stron pod / srv /

Zauważyłem to na Ubuntu Server 14.04 LTS. Domyślny plik apache2.conf zawiera skomentowany blok:

#<Directory /srv/>
#   Options Indexes FollowSymLinks
#   AllowOverride None
#   Require all granted
#</Directory>
Maris B.
źródło
2

Według mnie NIGDY i NIGDY nie należy umieszczać żadnych usług internetowych we wspólnej strefie systemowej.

Twoje usługi internetowe (Apache / Tomcat / SSH itp.) Są frontowymi drzwiami, więc jeśli umieścisz te usługi w strefie Systemu, potencjalnie będziesz narażony na niektóre ataki.

Więcej niż jeśli umieściłeś swoje różne usługi w bezpiecznej strefie piaskownicy, tak jak inna partycja odłączania.

Oto przykład struktury, której możesz użyć:

/ --> Root System --> On SDA1 --> Root and System security operator access only
 |
 | -->/usr /etc /var etc.

/SRV --> Web Root --> On SDB1 --> Web users access with minimal rights access.
 |
 |-->/srv/bin & /srv/dta
      |
      |-->/srv/bin/apache (or any other APPLICATION Binaries)
      |-->/srv/dta/SQL (or any other APPLICATION Datas like a 
                        database or web PHP files etc.)
Dr I.
źródło
1
Czy możesz rozwinąć „wspólną strefę systemową”? To nie jest termin, który słyszałem wcześniej i nie jestem pewien, co masz na myśli. /srv/binwydaje się naruszać FHS, który stwierdza, że /srvchodzi o dane, a nie pliki binarne
James Polley
Dobrze wspólna strefa systemowa oznacza część systemu operacyjnego, w której przechowywane są wszystkie składniki systemu, takie jak konto, hasło, pliki binarne administratora i biblioteka. Wiem, że Moja instalacja nie przestrzega całkowicie FHS, ale mogę całkowicie podzielić system operacyjny na dwie części. 1 ° / - System, który jest dość poprawny (z wyjątkiem aktualizacji narzędzi do aktualizacji i instalacji narzędzi administracyjnych) 2 ° / - Aplikacje, dane i USers Homeland. W ten sposób, jeśli masz problemy z systemem lub danymi, nie stracisz wszystkich danych.
Dr I
Widzę. Ma to sens - dlatego na przykład większość komputerów stacjonarnych /homema oddzielną partycję - możesz zdmuchnąć wszystko na innej /homepartycji i nie martwić się utratą danych użytkownika. +1 za segregację danych.
James Polley,