Назад | Перейти на главную страницу

Где разместить веб-контент для нескольких доменов на сервере на базе RHEL?

Я настраиваю веб-сервер 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 - хороший ориентир для подражания.

В любом случае я рекомендую разместить его в другом разделе, потому что:

  • Если он заполнится, не повлияет на сервер
  • Вы можете установить параметры монтирования, такие как noexec, для дополнительной безопасности

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

Мне нравится соглашение /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 и т. Д. Видеть:

http://httpd.apache.org/docs/2.2/mod/core.html#rlimitcpu

Мы используем следующий макет

/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>