Я настраиваю веб-сервер RHEL, на котором будет размещаться статический и динамический контент для нескольких доменных имен. Несколько пользователей будут обновлять файлы по SSH и SFTP.
Где должны быть размещены файлы для каждого доменного имени? В моей системе по умолчанию есть один /var/www/
, но не знаю, как найти несколько доменов.
Глядя на Стандарт иерархии файловой системы (http://www.pathname.com/fhs/pub/fhs-2.3.html), кажется, лучший вариант:
/srv/example.com/www/
/srv/example.org/www/
Какие-нибудь предпочтения?
У нас очень хороший опыт работы со структурой
/srv/www/example.com/html
/srv/www/example.com/sub-d/www
/srv/www/example.com/sub-d/beta
/srv/www/example.com/sub-d/logs (if preferred)
если сервер используется одной компанией. Если у вас есть клиентские домены для обслуживания, вы можете рассмотреть
/srv/www/client1/doma.in/html
/srv/www/client1/secon.nd/html
/srv/www/client2/foob.ar/html
По умолчанию Apache обычно /var/www/example.com/
но вы также можете следовать рекомендациям FHS, которые я считаю весьма хорошими. Важно то, что вы сохраняете согласованность между системами, поэтому FHS - хороший ориентир для подражания.
В любом случае я рекомендую разместить его в другом разделе, потому что:
Не забудьте быть очень осторожными с разрешениями каталога, чтобы пользователи с одного сайта не получали доступ к другим сайтам.
Мне нравится соглашение /var/www/example.com.
Мне нравится иметь конфигурацию в /etc/httpd/vhosts.d/example.com.conf и включать ее в основную конфигурацию apache. Я не позволяю покупателю редактировать это. Таким образом, если вы добавляете новый домен и при тестировании, перезагрузке или перезапуске обнаруживается ошибка, то очень легко отказаться.
С: /var/www/example.com/html /var/www/example.com/cgi-bin /var/www/example.com/log
Я использую posix acls для добавления ACL по умолчанию в указанные выше каталоги, так что любые файлы, которые они создают, создаются с помощью rwx для их пользователя сервера (того, который используется в suexec) / group, так что независимо от того, какой пользователь они являются, когда они создают файл , пользователь веб-сервера может получить к ним доступ, а члены группы пользователей VritualHosts могут получить доступ ко всем файлам.
/var/www/example.com/private Я использую private как место для файлов паролей и групп.
/var/www/example.com/conf/example.com.include.conf Если я хочу разрешить владельцу сайта вносить изменения в конфигурацию, я также создаю файл, например: /var/www/example.com/conf/example .com.include.conf, который включен в VirtualHost в основной конфигурации для домена, т.е. /etc/httpd/vhosts.d/example.com.conf.
Вы должны быть осторожны с этим, поскольку это означает, что пользователь может сломать всю вашу конфигурацию, поэтому вы должны быть очень осторожны, чтобы пользователь знал, что они делают. Я обычно делаю это, когда есть сервер с несколькими виртуальными хостами, принадлежащими одному и тому же клиенту, поэтому, если сломается конфигурация, они сломают только свои собственные сайты.
Я также предлагаю использовать suexec, который позволяет процессам запускаться от имени пользователя, отличного от apache, а также позволяет запускать динамический контент от имени пользователей, отличных от пользователя apache.
Видеть: http://httpd.apache.org/docs/2.2/suexec.html
Вы также можете изучить различные директивы RLmit, которые позволяют разрешить использование ресурсов на основе VirtualHost и т. Д. Видеть:
Мы используем следующий макет
/var/www/domains/$DOMAIN/$HOST/{htdocs,logs}
Итак, принимая www.google.com
Например
<VirtualHost *:80>
ServerName www.google.com
DocumentRoot /var/www/domains/google.com/www/htdocs
ErrorLog /var/www/domains/google.com/logs/error_log
CustomLog /var/www/domains/google.com/logs/access_log combined
</VirtualHost>