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

Организация конфигурации .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), правильно?

По умолчанию (по крайней мере, в 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/serverfault.com.conf

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

/etc/httpd/conf.d/serverfault.com.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/

Вот отличная ссылка о том, как: 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>

Бывают случаи, когда желательно отключить виртуальный хост. Поскольку включение в /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