Организация конфигурации.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: