Какой каталог рекомендуется хранить на сайте?

21

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

Мне не нравится идея вставить это /home/username/.

Есть ли правильное место или нет, каковы преимущества / недостатки размещения его в определенных областях файловой системы?

Pattle
источник
Это предпочтение («лучший» подразумевает, что, возможно, вы должны изменить это, чтобы быть наиболее безопасным и т. Д.) В основном для разработки. Если вы также обслуживаете их оттуда, вы, вероятно, захотите, чтобы что-то было уединенным, чтобы удерживать какое-то расстояние между вашими личными файлами и материалами для обмена в Интернете. Но есть миллион конфигураций. Я придерживаюсь /var/wwwи обычно имею это на другом диске (только предпочтение).
nerdwaller
Нет лучшего каталога. Это полностью ваше предпочтение, потому что физическое расположение файлов не имеет значения.
Ramhound

Ответы:

36

Нет лучшего каталога. И в то время как люди могли бы утверждать , что этот вопрос носит субъективный характер , или о том , что фактическое размещение файлов не имеет значения, и они правы о последних там будут стандартизированы рекомендации о том, где поставить , что в Unix-подобных системах.

Filesystem Hierarchy Standard определяет это и предлагает Вам следующие:

  • /var- место для размещения данных, которые меняются во время нормальной работы, например журналы и т. Д., /var/wwwЯвляется каталогом по умолчанию для размещения веб-контента для Apache, но его использование вообще не стандартизировано, а просто «обычное» место, которое вы бы поместили, потому что люди не меняйте настройки по умолчанию очень часто.

  • /srv- этот каталог должен содержать данные, которые обслуживаются системой. Обычно это место, которое вы хотите. FHS объясняет:

    Эта основная цель определения этого заключается в том, чтобы пользователи могли находить местоположение файлов данных для конкретной службы и чтобы разумно размещать службы, которым требуется единственное дерево для данных только для чтения, записываемых данных и сценариев (таких как сценарии cgi). Данные, представляющие интерес только для конкретного пользователя, должны помещаться в домашний каталог этих пользователей. (...)

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

    Итак, просто создайте /srv/wwwкаталог и используйте его. Вы можете создавать подпапки для каждого виртуального хоста, который вы можете использовать на своей машине.

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

    Если вы используете сервер, который используется несколькими людьми, и вы хотите, чтобы все могли размещать свои собственные сценарии, это то, что им нужно. Не забудьте сделать каталоги доступными для записи только тем пользователям, которым они принадлежат.

В сущности , /srv/wwwи /var/wwwявляются каталоги , которые вы должны создать подкаталоги для любого веб - проекта , который Вы могли бы хотеть хозяина. Затем вы можете определить различные разрешения для этих каталогов, чтобы позволить определенным пользователям или группам пользователей писать в них. Если у вас есть проекты для одного пользователя одновременно, используйте /home.

slhck
источник
3
http://example.com/~usernameОбычно не указывает /home/username/, но /home/username/public_html/.
Чороба
Да, спасибо, это должно было быть добавлено для ясности. Выполнено.
Slhck
После нескольких лет использования /var/wwwнастало время перемен!
Ситилдж
Кроме того, wwwзвучит как субдомен для меня.
sitilge
Просто чтобы добавить ... Использование / var / www является обычной практикой для экземпляров, обслуживающих один сайт, и, как сказано, расположение Apache по умолчанию, тогда как использование / home / usr / was / является обычной практикой для серверов посредников или для нескольких сайтов. хостинг взят из концепции пользователей == клиентов. И то, и другое - обычная практика, и ответ shlck - более эффективное использование целей файловой системы.
Jools
4

Что ж, вы можете помещать файлы куда угодно, если к ним есть доступ, но при этом загроможденные файловые системы будут головной болью, если кто-то придет позже.

/srv Это самый логичный плюс, если вы следуете Стандарту Иерархии Файловых Систем, он пойдет сюда.

Если вы делаете несколько доменов, вы можете сделать и /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 И tcp AND ...), то: ~/your-website-directory/
  • Если к вашему сайту обращаются НЕСКОЛЬКО пользователей в системе и ТОЛЬКО через браузер (протокол http), то: /srv/http/your-website-directory/или (протокол https) затем:/srv/https/your-website-directory/
  • Если к вашему сайту обращаются НЕСКОЛЬКО пользователей в системе, и НЕ ТОЛЬКО через браузер, а через несколько протоколов (ig http И 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>
Марис Б.
источник