Организация конфигурации.conf apache для каждого домена

У меня есть VPS-сервер с CentOS с несколькими доменами (некоторые принадлежат мне, некоторые нет). Я размещаю на нем свои сайты и сайты моих друзей.

У меня есть эта структура:

/home/myfriendsusername/public_html/
/home/myotherfriendsusername/public_html/
/var/www/mydomain.com/public_html/

Так что все мои вещи находятся в моем /var/www, и у моих друзей есть собственное имя пользователя в домашней папке. Каждый VirtualHost находится в httpd.conf, и он становится довольно большим (у меня более 50 доменов, включая иногда субдомены.

Будет ли лучше создать файл на сайтах с поддержкой для каждого домена, который я размещаю, например:

/etc/apache2/sites-enabled/myfriendsdomain.com
/etc/apache2/sites-enabled/mydomain.com

Это хорошая практика? или что я сделал (используя httpd.conf) правильно?

3 ответа

Решение

Вот отличная ссылка о том, как: http://wiki.centos.org/TipsAndTricks/ApacheVhostDir

в основном вы создаете каждый файл конфигурационного домена в:

/etc/httpd/conf.d/

пример:

<VirtualHost *:80>
  ServerName example.org
  ServerAlias *.example.org
  ServerAdmin webmaster@example.org
  ErrorLog /var/log/httpd/example.err
  CustomLog /var/log/httpd/example.log combined
  DocumentRoot /var/www/example.org
  <Directory "/var/www/example.org">
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

Могут быть случаи, когда желательно отключить виртуальный хост. Поскольку include в /etc/httpd/conf/httpd.conf указывает *.conf, можно скрыть виртуальный хост, изменив имя файла конфигурации.

Отключите виртуальный хост, добавив _ к имени файла виртуального хоста:

mv -v /etc/httpd/conf.d/example.conf{,_}

Включите виртуальный хост, удалив _ из имени файла виртуального хоста:

mv -v /etc/httpd/conf.d/example.conf{_,}

запустить снова:

service httpd graceful

По умолчанию (по крайней мере, в CentOS 6.2) Apache настроен на автоматическое включение любых файлов конфигурации, расположенных в следующем каталоге:

/etc/httpd/conf.d/

Найдите в вашем httpd.conf следующую строку (добавьте, если ее там нет):

Include conf.d/*.conf

Затем просто создайте файлы конфигурации для каждого виртуального хоста:

/etc/httpd/conf.d/google.com.conf
/etc/httpd/conf.d/faultserver.ru.conf

И если вы хотите отключить виртуальный хост, просто переименуйте:

/etc/httpd/conf.d/faultserver.ru.conf.backup

Просто!

Управлять всеми vhosts гораздо проще в отдельном файле конфигурации. Вот что я бы сделал (на Debian):

Поместите каждую конфигурацию Vhost в свой собственный файл внутри /etc/apache2/sites-available/, использование a2ensite создать символическую ссылку между доступными сайтами Vhost и /etc/apache2/sites-enabled каталог.

Затем просто добавьте:

Include /etc/apache2/sites-enabled/

Для httpd.conf

Таким образом, вы можете легко переводить сайты в автономный режим, используя a2dissite vhostname, например: a2dissite mydomain.com

Так как у вас есть CentOS, a2ensite скрипт не будет присутствовать. Вот способ имитировать методы сценариев Debian:

http://cosp.org.pk/blog/shoaibi/2009/12/11/open-source/simulating-debian-apache-configuration-management-on-centos/

Другие вопросы по тегам