У меня есть 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://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