Що рекомендується каталог для зберігання вмісту веб-сайту?


21

Коли я вперше розпочав програмування в Інтернеті, і хотів створити новий проект, мене завжди вчили створювати каталог /var/www/. Однак у багатьох навчальних посібниках, які я читаю, люди, як правило, створюють каталог /home/username/.

Мені не подобається ідея її вводити /home/username/.

Чи є правильне місце чи ні, які переваги / недоліки розміщувати його в певних областях файлової системи?


Це перевага ("найкраще" означає, що, можливо, ви повинні змінити це, щоб бути найбільш безпечним тощо) для розвитку в основному. Якщо ви їх також подаєте звідти, то, ймовірно, хочете щось замкнути, щоб зберегти деяку відстань між вашими особистими файлами та веб-спільними ресурсами. Але є мільйон конфігурацій. Я дотримуюся цього /var/wwwі, як правило, на іншому приводі (просто перевагу).
nerdwaller

Немає "найкращого" каталогу. Це виключно ваші налаштування, оскільки фізичне розташування файлів не має значення.
Рамхаунд

Відповіді:


36

Немає "найкращого" каталогу. І хоча люди можуть стверджувати, що це питання є суб'єктивним чи що власне розміщення файлів не має значення - і вони мають рацію щодо останніх - там є стандартизовані рекомендації щодо того, куди подіти те, що в Unix-подібних системах.

Filesystem Hierarchy Standard визначає це і пропонує Вам наступні:

  • /var - місце для розміщення даних, що змінюються під час нормальної роботи, як-от журнали тощо. /var/www - це каталог за замовчуванням для розміщення веб-контенту для Apache, але його використання взагалі не стандартизоване, а просто "звичайне" місце, яке ви б розмістили, тому що люди не змінюйте налаштування за замовчуванням дуже часто.

  • /srv- цей каталог повинен містити дані, які обслуговуються системою. Зазвичай це місце, яке ви хочете. FHS пояснює:

    Основна мета цього уточнення полягає в тому, щоб користувачі могли визначити розташування файлів даних для певної послуги, і щоб сервіси, які потребують єдиного дерева для перегляду лише даних, даних, що записуються, та сценарії (такі як cgi-скрипти), могли бути розміщені розумно. Дані, які цікавлять лише конкретний користувач, повинні вноситись у домашній каталог цих користувачів. (…)

    Один з методів структурування даних /srvза протоколом, наприклад. ftp, rsync, www, Іcvs

    Отже, просто створіть /srv/wwwкаталог і скористайтеся цим. Ви можете створити підпапки для кожного віртуального хоста, який ви хочете обслуговувати зі своїм пристроєм.

  • /homeмістить файли, які дійсно повинні просто належати одному користувачеві. Наприклад, Apache дозволяє користувачеві , тому ви можете отримати доступ до веб-файлів користувача через них http://example.com/~username, і вони подаються з public_htmlкаталогу в будинку користувача.

    Якщо ви використовуєте сервер, яким надається спільний доступ до кількох людей, і ви хочете дозволити всім розміщувати власні сценарії, саме тут вони повинні йти. Пам’ятайте, щоб зробити каталоги доступними для запису користувачем, якому вони лише належать.

По суті , /srv/wwwі /var/wwwє каталоги , які ви повинні створити підкаталоги для будь-якого веб - проекту , який Ви могли б хотіти господаря. Потім ви можете визначити різні дозволи в цих каталогах, щоб певні користувачі або групи користувачів могли їм писати. Якщо у вас є проекти для одного користувача одночасно, використовуйте /home.


3
http://example.com/~usernameЗазвичай не вказує /home/username/, але /home/username/public_html/.
choroba

Так, спасибі, це слід було додати для ясності. Зроблено.
slhck

Після кількох років використання /var/wwwнастає час змін!
sitilge

Крім того, wwwмені це більше нагадує субдомен.
sitilge

Просто додати ... Використання / var / www є звичайною практикою для окремих сайтів, що обслуговують екземпляри, і, як було сказано, місце розташування Apache за замовчуванням, тоді як використання / home / usr / was / є звичайною практикою для серверів реселлерів або для багатьох сайтів хостинг, заснований на концепції користувачів == клієнтів. І те й інше - лише звичайна практика, і відповідь shlck - це краще використання призначених цілей файлової системи.
Jools

4

Добре, ви можете розміщувати файли куди завгодно, якщо речі можуть отримати належний доступ до них, однак захаращені файлові системи - це головний біль, якщо хтось заходить пізніше.

/srv є найбільш логічним плюсом, якщо ви дотримуєтесь Filesystem Hierarchy Standard, він піде сюди.

Якщо ви робите кілька доменів, ви можете робити /srv/domain1 /srv/domain2і т. Д. І т.д., потім підпапки всередині/ftp /www /tftp /logs /etc.etc.etc

Мені здається, це дуже міцна структура, яку можна будувати і легко контролювати

Але як адміністратор ви можете робити так само чисто і безладно, як хочете.


1

Гаразд, швидка відповідь.

Якщо ваші веб-файли в системі матимуть доступ лише один користувач у системі Linux. Використовуйте домашній каталог користувача ( ~/).

Якщо ваші веб-файли в системі будуть доступні МНОГО користувачів у системі 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

  • Якщо ваш веб-сайт доступний лише одному користувачеві в системі та ТІЛЬКИ через браузер (протокол http), тоді: ~/http/your-website-directory/або (протокол https), тоді:~/https/your-website-directory/
  • Якщо на ваш веб-сайт доступний лише ОДИН користувач у системі, а НЕ ТОЛЬКО через браузер, а декілька протоколів (ig http AND tcp AND ...), тоді: ~/your-website-directory/
  • Якщо ваш веб-сайт доступний МІЛЬКОМ користувачам у системі та ТІЛЬКИ через браузер (http-протокол), тоді: /srv/http/your-website-directory/або (протокол https), тоді:/srv/https/your-website-directory/
  • Якщо ваш веб-сайт доступний МІЛЬКИМ користувачам у системі, а НЕ ТОЛЬКО через браузер, а декілька протоколів (ig http AND ftp AND ...), тоді: /srv/your-website-directory/

А чому б не www? Це спадщина з часів Апачі. www не вказує, який протокол використовується. Debian до цих пір використовує це на сьогодні, хоча, наприклад, Arch linux використовує / srv / http.


0

Веб-сервер Apache має веб-сайт за замовчуванням, /var/www/але він пропонує розмістити інші веб-сайти/srv/

Я помітив це на Ubuntu Server 14.04 LTS. apache2.confФайл за замовчуванням містить коментований блок:

#<Directory /srv/>
#   Options Indexes FollowSymLinks
#   AllowOverride None
#   Require all granted
#</Directory>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.