Должны ли сайты жить в / var / или / usr / в соответствии с рекомендуемым использованием?

62

Согласно руководству по структуре каталогов Linux , оно /usr/предназначено для файлов приложений и /var/для файлов, которые изменяются (я предполагаю, что это означает «файлы, которые принадлежат приложениям»). Это верно?

Если это так, то я немного разрываюсь между использованием любого из них. Веб-сайт - это приложение (если оно, так сказать, динамическое), но в других случаях это просто набор файлов, используемых Apache.

Www dir по умолчанию живет /var/www/, поэтому мы должны следовать примеру, используя /var/websites/(или что-то подобное), или выбрать, /usr/websites/поскольку они могут быть приложениями?

Это очень тривиальный вопрос, но, тем не менее, он меня беспокоит. В нашем случае я склоняюсь к /usr/webчему-то подобному, поскольку все наши веб-сайты являются приложениями.

Обновить:

Это для сайтов нашей компании; это не сервер общего хостинга, поэтому нам не нужно беспокоиться об их разделении /home/или чем-то в этом роде.

Ник Болтон
источник
10
Я не думаю, что вопрос такой тривиальный; на самом деле это довольно неплохо. Интересно.
Арон Роттвил

Ответы:

63

Согласно FHS , /usrэто для shareable, read-only data- не там, где вы хотите разместить сайт. Здесь вы должны поместить свой код (например, Fedora делает это для Wordpress). См. Также руководство по упаковке веб-ресурсов для Fedora.

/varэто «переменные файлы данных. Сюда входят каталоги и файлы спула, административные данные и данные журналов, а также временные и временные файлы». - лучше, но все же не совсем правильно - но многие системы будут использовать /var/www, так что даже если вы ошибаетесь, говоря об этом, вы находитесь в хорошей компании.

/srvдля «специфичных для сайта данных, которые обслуживаются этой системой». - это похоже на хороший матч, но встречается гораздо реже, чем /var/www.

Другое распространенное место для размещения файлов сайта /home- создание специального пользователя по имени websiteили тому подобное, а затем помещение файлов в домашний каталог этого пользователя (например, /home/website).

Джеймс Полли
источник
4
Ах, моя работа использует /srv- поскольку я никогда не видел это прежде, я думал, что это было создано ими. Это Redhat / CentOS?
Ник Болтон
12
По умолчанию установлено значение только /var/wwwпотому, что к дистрибутивам не разрешается касаться /srv; это для системного администратора для настройки. Так вот почему это "гораздо реже" и тоже правильно.
Майкл Хэмптон
28

Взгляните на Стандарт Иерархии Файловой Системы ( Википедия ). Я сам использую / srv / web / $ domain / {htdocs, logs, cgi-bin, ...}.

ptman
источник
3
Я тоже так делаю, но вместо «www» я всегда использую сервисное имя «httpd». Итак, у меня есть / srv / httpd / $ domain ... или / srv / smbd / sharename ... Таким образом, легче увидеть, какой сервис обслуживает файлы. Например, в некоторых системах у нас есть домен / srv / nginx / $
Раффаэль Лютигер
9

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

Обновить:

Тот факт, что он не является сервером с общим хостингом, не означает, что вам не следует применять надлежащие методы обеспечения безопасности и разделять независимые роли в их собственных зонах безопасности.

romble
источник
7

Окончательным руководством является Стандарт Иерархии Файловой Системы, в котором говорится, что /srvэто правильное место.

Деннис Уильямсон
источник
2
Я не читаю это так - или, по крайней мере, я читаю это как неоднозначное в этом вопросе Большинство веб-сайтов обслуживаются не просто by this system, а целым кластером систем; и два предложения, начинающиеся с, This setup will differ from host to host.предполагают, что это не место для файлов, разделяемых на многих серверах. Это довольно вероятное место, хотя - безусловно, более подходящее /usr, и, возможно, лучше, чем/var
Джеймс Полли
1
Я не думаю, что FHS вообще является окончательным. Re: (из Википедии): Большинство дистрибутивов Linux следуют FHS и объявляют свою собственную политику для обеспечения соответствия FHS. Однако подавляющее большинство (по состоянию на 2009 г.) дистрибутивов, в том числе разработанных членами Группы свободных стандартов, не полностью соответствуют предлагаемому стандарту.
Майкл Графф
6
Это хорошая вещь о стандартах - есть из чего выбирать! :)
Джеймс Полли
3

Где они живут на диске, мало что значит. Это то место, где вы хотите их.

У меня есть символическая ссылка от / www на всех моих машинах, где они действительно живут, поэтому мне никогда не придется удивляться от машины к машине. Некоторые старые машины имеют / u0 и / u1 для пользовательских дисков, и я размещаю там веб-вещи. У некоторых / home монтируется напрямую, поэтому они идут туда, но / www всегда указывает на правильное место.

Я также не помещаю никакую конфигурацию ни в / usr, ни в / var. Он идет в / local (который, как вы уже догадались, обычно является символической ссылкой где-то на / u0 или / u1). Это облегчает резервное копирование. Я просто делаю резервную копию пользовательских дисков.

Конечно, у меня есть основной дистрибутивный сайт для моей выбранной ОС, NetBSD. Я делаю систему так, как хочу, на этой основной машине (на самом деле это экземпляр xen) и использую rsync / usr. Облегчает мою жизнь

Майкл Графф
источник
6
Это хорошо, если вы работаете с одним человеком или, возможно, даже небольшой командой, которая тесно сотрудничает и знакома с недостатками друг друга - изучение «правильного» способа сделать это, вероятно, займет больше времени, чем просто Это. Если у вас крупная операция и вы часто привлекаете на борт новых людей, то для их освоения с такой компоновкой потребуется много времени - придерживаться (или, по крайней мере, близко) к FHS сэкономить время с каждым новым человеком, которого вы привели в команду.
Джеймс Полли
5
Когда вы используете 8 разных ОС, собственные стандарты гораздо проще выучить, чем каждый из них делает свое дело.
Майкл Графф
1
@ Джеймс Полли Сколько времени нужно, чтобы сказать новому наему «мы ввели вещи /path/we/chose»?
ceejayoz
@ceejayoz Если у вас есть более двух категорий «вещей», гораздо проще сказать им «мы следуем FHS», даже если для некоторых категорий «вещей» могут потребоваться дополнительные подробности.
tripleee
3

Веб-сервер Apache имеет веб-сайт по умолчанию в / var / www /, но он предлагает поместить другие веб-сайты в / srv /

Я заметил это на Ubuntu Server 14.04 LTS. Его файл apache2.conf по умолчанию содержит закомментированный блок:

#<Directory /srv/>
#   Options Indexes FollowSymLinks
#   AllowOverride None
#   Require all granted
#</Directory>
Марис Б.
источник
2

По моему мнению, вы НИКОГДА и НИКОГДА не должны размещать какие-либо интернет-сервисы в общей зоне системы

Ваши интернет-сервисы (Apache / Tomcat / SSH и т. Д.) Являются входной дверью, и если вы поместите эти сервисы в системную зону, вы будете потенциально уязвимы для некоторых атак.

Больше, чем если бы вы поместили свои разные сервисы в безопасную зону песочницы, как другой разделенный раздел.

Вот пример структуры, которую вы можете использовать:

/ --> 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.)
Доктор я
источник
1
Не могли бы вы расширить "общую системную зону"? Это не термин, который я слышал раньше, и я не уверен, что вы имеете в виду. /srv/binкажется, нарушает FHS, который заявляет, что /srvдля данных, а не двоичных файлов
Джеймс Полли
Под общей системной зоной подразумевается часть ОС, в которой хранятся все компоненты системы, такие как учетная запись, пароль, двоичные файлы администратора и библиотека. Я знаю, что моя установка не полностью соответствует FHS, но я могу полностью разделить ОС на две части. 1 ° / - система, которая довольно исправлена ​​(за исключением установки обновлений и средств администрирования) 2 ° / - приложения, данные и данные USER Homeland. Таким образом, если у вас возникли проблемы с вашей системой или данными, вы не потеряете все данные.
Доктор Я
Понимаю. Это имеет смысл - именно поэтому большинство рабочих столов, например, размещают /homeв отдельном разделе - вы можете уничтожить все, что не связано с /homeразделом, и не беспокоиться о потере пользовательских данных. +1 для разделения данных.
Джеймс Полли