Jaki jest zalecany katalog do przechowywania treści witryny?

21

Kiedy zaczynałem programować w Internecie i chciałem stworzyć nowy projekt, zawsze uczyłem się, jak tworzyć katalog /var/www/. Jednak w wielu tutorialach czytam, że ludzie zwykle tworzą katalog /home/username/.

Nie podoba mi się pomysł wprowadzenia go w życie /home/username/.

Czy jest właściwe miejsce, a jeśli nie, jakie są zalety / wady umieszczenia go w niektórych obszarach systemu plików?

Bydło
źródło
To jest preferencja („najlepsza” oznacza, że ​​być może powinieneś to zmienić, aby była najbardziej bezpieczna itp.) Głównie dla rozwoju. Jeśli też podajesz je stamtąd, prawdopodobnie chciałbyś coś odosobnionego, aby zachować pewien dystans między Twoimi plikami osobistymi a udostępnianiem internetowym. Ale istnieje milion konfiguracji. Trzymam się /var/wwwi zwykle mam to na innym dysku (tylko preferencje).
nerdwaller
Nie ma katalogu „najlepszego”. To całkowicie twoje zdanie, ponieważ fiskalna lokalizacja plików nie ma znaczenia.
Ramhound

Odpowiedzi:

36

Nie ma katalogu „najlepszego”. I choć ludzie mogą twierdzić, że kwestia ta jest subiektywna, albo że rzeczywista umieszczanie plików nie ma znaczenia, i mają rację o drugi-nie standaryzowane zalecenia dotyczące gdzie umieścić co w systemach uniksowych.

Filesystem Hierarchy Standard definiuje to i oferuje następujące:

  • /var- miejsce do umieszczania danych, które zmieniają się podczas normalnej pracy, takie jak dzienniki itp., /var/wwwJest domyślnym katalogiem do umieszczania treści internetowych dla Apache, ale jego użycie w ogóle nie jest ustandaryzowane, a jedynie „zwykłe” miejsce, w którym należy je umieścić, ponieważ ludzie nie zmieniaj często ustawień domyślnych.

  • /srv- ten katalog powinien zawierać dane obsługiwane przez system. Jest to zwykle miejsce, które chcesz. FHS wyjaśnia:

    Głównym celem określenia tego jest, aby użytkownicy mogli znaleźć lokalizację plików danych dla konkretnej usługi, a także aby usługi wymagające pojedynczego drzewa dla danych tylko do odczytu, danych zapisywalnych i skryptów (takich jak skrypty cgi) mogły być rozsądnie umieszczone. Dane, które są interesujące tylko dla określonego użytkownika, powinny znaleźć się w katalogu osobistym tego użytkownika. (…)

    Jedną z metod strukturyzacji danych /srvjest protokół, np. ftp, rsync, www, Icvs

    Po prostu stwórz /srv/wwwkatalog i użyj go. Możesz tworzyć podfoldery dla każdego wirtualnego hosta, który chcesz obsługiwać na swoim komputerze.

  • /homezawiera pliki, które naprawdę powinny należeć tylko do jednego użytkownika. Na przykład Apache pozwala na katalogi użytkowników , dzięki czemu można uzyskać dostęp do plików internetowych użytkownika http://example.com/~username, i są one udostępniane z public_htmlkatalogu w domu użytkownika.

    Jeśli korzystasz z serwera, który jest współużytkowany przez wiele osób, i chcesz pozwolić wszystkim na hostowanie własnych skryptów, tam właśnie powinien się udać. Pamiętaj, aby katalogi były zapisywane przez użytkownika, do którego należą.

W istocie /srv/wwwi /var/wwwsą katalogów należy utworzyć podkatalogi dla każdego projektu strony internetowej może chcesz gospodarza. Następnie można zdefiniować różne uprawnienia do tych katalogów, aby umożliwić określonym użytkownikom lub grupom użytkowników pisanie do nich. Jeśli masz projekty dla jednego użytkownika na raz, użyj /home.

slhck
źródło
3
http://example.com/~usernameZwykle nie wskazuje /home/username/, ale /home/username/public_html/.
choroba
Tak, dzięki, to powinno być dodane dla jasności. Gotowy.
slhck,
Po kilku latach użytkowania /var/wwwnadszedł czas na zmiany!
sitilge
Poza tym wwwdla mnie brzmi bardziej jak poddomena.
sitilge
Wystarczy dodać ... Używanie / var / www jest powszechną praktyką w przypadku instancji obsługujących jedną witrynę i, jak wspomniano, domyślną lokalizacją Apache, podczas gdy używanie / home / usr / was / jest powszechną praktyką dla serwerów sprzedawców lub wielu witryn hosting zaczerpnięty z koncepcji użytkowników == klientów. Oba są po prostu powszechnymi praktykami, a odpowiedź shlck to lepsze wykorzystanie zamierzonych celów systemu plików.
Jools,
4

Cóż, możesz umieszczać pliki w dowolnym miejscu, pod warunkiem, że dostęp do nich będzie prawidłowy, jednak zaśmiecone systemy plików są kłopotliwe, jeśli ktoś przyjdzie później.

/srv jest najbardziej logicznym plusem, jeśli postępujesz zgodnie ze standardem Hierarchii Systemów Plików, to tutaj.

Jeśli wykonujesz wiele domen, możesz to zrobić /srv/domain1 /srv/domain2itp. Itd., A następnie podfolder/ftp /www /tftp /logs /etc.etc.etc

Dla mnie jest to bardzo solidna struktura, na której można opierać się i łatwo kontrolować

Ale jako administrator możesz robić tak czyste i niechlujne, jak chcesz.

przędzarka
źródło
1

Dobra łatwa szybka odpowiedź.

Jeśli twoje pliki internetowe w systemie będą dostępne tylko dla JEDNEGO użytkownika w systemie Linux. Skorzystaj z katalogu domowego użytkownika ( ~/).

Jeśli dostęp do twoich plików internetowych w systemie będzie WIELU użytkowników w systemie Linux. Zastosowanie /srv/.

Dokładnie to stwierdza http://refspecs.linuxfoundation.org/FHS_2.3/fhs-2.3.html#SRVDATAFORSERVICESPROVIDEDBYSYSTEM .

Oto cytat:

/ srv zawiera dane właściwe dla witryny, które są obsługiwane przez ten system.

Głównym celem określenia tego jest, aby użytkownicy mogli znaleźć lokalizację plików danych dla konkretnej usługi, a także aby usługi wymagające pojedynczego drzewa dla danych tylko do odczytu, danych zapisywalnych i skryptów (takich jak skrypty cgi) mogły być rozsądnie umieszczone. Dane, które są interesujące tylko dla konkretnego użytkownika, powinny znaleźć się w katalogu osobistym tego użytkownika.

Bonus: www? ftp? Organizujesz według protokołu? Co?

Jak stwierdzono tutaj w http://refspecs.linuxfoundation.org/FHS_2.3/fhs-2.3.html#SRVDATAFORSERVICESPROVIDEDBYSYSTEM

  • Jeśli dostęp do Twojej witryny ma tylko JEDEN użytkownik w systemie i TYLKO przez przeglądarkę (protokół http), to: ~/http/your-website-directory/lub (protokół https) to:~/https/your-website-directory/
  • Jeśli dostęp do Twojej witryny ma tylko JEDEN użytkownik w systemie, NIE TYLKO przez przeglądarkę, ale wiele protokołów (np. Http AND tcp AND ...), to: ~/your-website-directory/
  • Jeśli Twoja witryna jest dostępna dla WIELU użytkowników w systemie i TYLKO przez przeglądarkę (protokół http), to: /srv/http/your-website-directory/lub (protokół https) to:/srv/https/your-website-directory/
  • Jeśli Twoja witryna jest dostępna dla WIELU użytkowników w systemie i NIE TYLKO przez przeglądarkę, ale wiele protokołów (np. Http AND ftp AND ...), to: /srv/your-website-directory/

Huh, czemu nie www? Jest to dziedzictwo od czasów Apache. www nie określa, który protokół jest używany. Debian nadal używa tego na dzień dzisiejszy, podczas gdy na przykład Arch Linux używa / srv / http.

Karl Morrison
źródło
0

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

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

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