Разница между директориями сайтов /srv и /var/www в Linux

В чём же принципиальная разница между директориями для веб-сайтов «/srv» и «/var/www» в ОС GNU/Linux? Как выбрать идеальное место для размещения своих веб-файлов?

История

Директория «/srv» как директория для данных сервисов, предоставляемых системой (e.g., www, ftp или version control systems), появилась FHS версии 2.3 в 2004 году. До этого, т.е. в более ранних версиях FHS, для подобных файлов использовались соответствующие каталоги в директории «/var», в частности, для веб-файлов директория «/var/www».

Актуальность

Т.о. «/srv» является относительно новым. Согласно FHS, «/srv содержит данные, обслуживаемые этой системой», поэтому «/srv/www» имеет смысл для веб-сервера. В свою очередь «/var» — старое соглашение. Директория предназначается для данных, которые изменяются с течением времени («переменные данные»), таких как кэши, спул, журналы/логи, всевозможные служебные и административные файлы, в то время как «пользовательские данные» будут в домашних каталогах, но в какой-то момент, вероятно, из-за отсутствия какого-либо другого подходящего места, «/var» становится также местом для «данных», таких как базы данных и веб-страницы, которые демоны будут предоставлять другим системам и пользователям. Конечно, эти файлы также «со временем меняются», но я согласен, что есть разница между веб-сайтом и системным журналом.

Следование FHS

FHS поддерживается Free Standards Group — некоммерческой организацией, в составе которой находятся крупные разработчики soft и hard обеспечения. Однако основная часть разработчиков дистрибутивов, включая и тех, кто входит в состав Free Standards Group, не следуют стандарту полностью. В частности, пути, специально созданные группой, такие как «/srv», используются редко. Некоторые Linux-системы вообще отвергают FHS и следуют своему собственному стандарту, как, например, GoboLinux.

Дистрибутивы

Debian по-прежнему использует по-умолчанию «/var» для данных. Большинство «старых» вендоров дистрибутивов Linux делают также (e.g., Redhat), и большая часть документации предполагает также «/var» для такого рода вещей, хотя в некоторых менее традиционных руководствах администратора приложений есть примеры использования «/srv» как каталога данных.

Допустимость

Можно использовать оба варианта. Директория «/srv» кажется идеальным местом для хранения общих ресурсов, в то время как базы данных MySQL обычно остаются там, где они есть, и для веб-сайтов это различается.

Как выбрать

Если тяжело определиться, то стоит посмотреть на выбор вендора конкретного дистрибутива ОС. Если дистрибутив не содержит относительно новую директорию «/srv», значит кладите файлы в старую «/var/www». В дистрибутивах Ubuntu и Arch есть директория «/srv», поэтому можно положить соответсвующие файлы туда. Однако поддиректория в таких дистрибутивах тоже отличается. Веб-сервер рекомендуется размещать в «/srv/www», но так происходит не везде. В дистрибутивах Arch веб-корень, например, по-умолчанию использует директорию «/srv/http». Тут тоже возникает дилемма: «/srv/www» или «/srv/http»? Вероятно, что наиболее правильно будет всё же «/srv/www» или сокращённый вариант «/srv/web», нежели «/srv/http», т.к. World Wide Web не ограничивается протоколом http, есть ещё как минимум защищённый https, который всё сильнее вытесняет обычный http.

Распределение

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

Мой выбор

Лично все содержимое моего сервера, включая некоторые базы данных MySQL, несколько репозиториев SVN и несколько веб-сайтов хранятся в различных подкаталогах директории «/srv».

Заключение

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

Ссылки

  • https://wiki.linuxfoundation.org/lsb/fhs
  • http://www.pathname.com/fhs/
  • https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard