November 2019

S M T W T F S
      12
34 5 678 9
10111213141516
17181920212223
24252627282930

Style Credit

Expand Cut Tags

No cut tags
Monday, March 30th, 2009 12:54 pm
Стандартная дебиановская сборка апача предполагает, что DocumentRoot лежит в /var/www.
Ну и пусть себе лежит, место ничем не хуже других. Тем более, что если просто зайти на морду сайта, то срабатывает установленный по умолчанию RedirectMatch ^/$ /apache2-default/

Если сайтов становится больше одного, то каждому надо создавать свой подкаталог. Подкаталоги логично создавать там же - в /var/www/.

А дефолтовый сайт часто оставляют. Он ловит все запросы, не адресованные к другим явно определённым сайтам, и радостно говорит It works!. Ну и пусть говорит.

Вот тут-то и прячется несколько неожиданная засада. Остальные сайты лежат аккурат в подкаталогах /var/www. Который есть DocumentRoot от дефолтового сайта.
То есть, через него можно получить доступ к файлам всех остальных сайтов.

И что особенно радостно, по умолчанию для /var/www/ включены Indexes и FollowSymLinks, а никакой перл или PHP как раз не включены. Поэтому есть сильно ненулевая вероятность, что все скрипты будут отдаваться в виде исходников.

Мораль:
1) отключайте ненужную функциональность. даже если она на первый взгляд ничему не мешает. чисто из чувства паранойи.

2) не создавайте DocumentRoot одного сайта в подкаталоге другого. а дефолтовый сайт, если вы решили его оставить, лучше перенести на уровень пониже - например, в /var/www/default

3) блоки <Directory> по возможности располагайте на глобальном уровне, ВНЕ <VirtualHost>. и ограничения доступа приделывайте к Directory, а не к VirtualHost. в качестве дополнительной защиты от непредусмотренного доступа через другой виртуальный хост.

Написано сие по результатам внимательного рассматривания собственного сервера.
А у вас, случайно, не так? :)
Monday, March 30th, 2009 12:31 pm (UTC)
Т.е. ясно — неразобранная почта при этой йок, но вот манера хранить в /var всякие сайты и базы данных меня почему-то шокирует. Этому всему место в /usr/home :) Это же ровно то, для чего /usr/home создан — данные пользователей.
Monday, March 30th, 2009 12:42 pm (UTC)
где что хранить - вопрос идеологический.
var происходит от слова variable, там хранятся относительно часто изменяемые файлы:
логи, базы данных, почтовые очереди, списки установленных пакетов и пр.
в отличие от /tmp (или /var/tmp), теряться при нормальных условиях он совсем не должен, поэтому хранить там нужные файлы вполне нормально.

А вот /usr часто меняться не должен, в некоторых системах он из соображений безопасности и повышенной устойчивости вообще монтируется в r/o. правда, в этом случае home надо делать отдельным, но он к usr вообще не относится, это отдельное место для личных файлов пользователей. хотя для хранения пользовательских сайтов он вполне подходит, с этим я согласен.
Monday, March 30th, 2009 03:47 pm (UTC)
Мне помнится, изначальный принцип разделения был таким: /usr -- это то, что может быть реплицировано по большому кластеру более-менее однородных машин (например, монтируется с сервера по NFS), а /var -- то, что относится к данной конкретной машине. То, что /usr можно монтировать read-only это, в общем-то, следствие.
Monday, March 30th, 2009 04:15 pm (UTC)
home в некоторых случаях монтируется по nfs, чтоб пользователь мог работать с личными файлами с любой машины.
а сайты обычно на других машинах не нужны, но случаи разные бывают..

линуксовый hier говорит так:
/home On machines with home directories for users, these are usually beneath this directory, directly or not. The structure of this directory depends on local administration decisions.

/usr This directory is usually mounted from a separate partition. It should hold only sharable, read-only data, so that it can be mounted by various machines running Linux.

/var This directory contains files which may change in size, such as spool and log files.

В общем, /usr - неподходящее место для сайтов, кроме случая, когда они совершенно статические.
Monday, March 30th, 2009 05:22 pm (UTC)
/usr — кластерное
/usr/local — локальное
/home или /usr/home — домашние каталоги, на отдельном сервере :)
/var — временные данные для работы программ, типа кешей, спулов, логов и прочего, без чего теоретически всё должно запуститься.
Monday, March 30th, 2009 05:25 pm (UTC)
/var/   multi-purpose log, temporary, transient, and spool files

В общем, я всегда рассматривал /var как помойку, в которой лежит всё, что программы нагенерили сами для своей кухни и бухгалтерии (book keeping), не интересной пользователю (в отличие от тех файлов, с которыми пользователь работает сам с помощью программ). Поэтому сайты и базы данных в моей голове туда никак не укладываются.