Мне приходится работать с движками многих сайтов, постоянно появляются для обслуживания новые, и уходят в архивное забвение старые. Поэтому часто добавляются новые блоки виртуалхостов в конфиге Апача, и сам конфиг уже изрядно раздулся.
Появилась минутка свободного времени, и я решил навести порядок в этом безобразии. Захотелось сделать так, чтобы для добавления нового сайта, было достаточно создать директорию, и прописать новый хост в /etc/hosts, а не повторять каждый раз монотонную операцию добавления и редактирования блоков <VirtualHost>.
По сути теперь у меня есть основной домен, и к нему автоматически добавляются субдомены, по которым и грузятся разные сайты с локальной машины.
Для начала, конечно, необходимо установить сам Апач. (На моём рабочем компьютере стоит Ubuntu 10.10, поэтому весь процесс рассказываю для него).
sudo apt-get install apache2
Далее подключаем mod_rewrite (Он понадобится для автоматического создания субдоменов).
sudo a2enmod rewrite
Эта команда, по сути, создает символическую ссылку в /etc/apache2/mods-enabled/ на /etc/apache2/mods-available/rewrite.load, поэтому сделать это можно и любым другим способом.
Перезагружаем Апач.
sudo /etc/init.d/apache2 restart
Итак, мы имеем установленный Apache2 с mod_rewrite. Теперь надо сконфигурировать его.
Для начала выбираем себе директорию, где будут лежать наши папки с сайтами.
Пускай это будет /www.
Далее открываем /etc/apache2/sites-available/default
sudo mcedit /etc/apache2/sites-available/default
Куда пишем что-то типа:
<VirtualHost *:80>
ServerName xyz
DocumentRoot /www
ServerAlias *.xyz
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.xyz$
RewriteCond %{HTTP_HOST} ^((.*)\.)xyz$
RewriteRule ^/(.*) /%2/$1<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
где, xyz — это мой основной домен. Его же и надо прописать в /etc/hosts
127.0.0.1 xyz
Перезагружаем еще раз веб-сервер
sudo /etc/init.d/apache2 restart
и пробуем в любом браузере открыть http://xyz/. У нас должен открыться листинг директории /www.
Теперь, чтобы добавить еще один сайт на наш локальный сервер надо создать в директории /www любую другую директорию, например, /www/site1, дописать домен site1.xyz в /etc/hosts
127.0.0.1 xyz site1.xyz
и теперь в браузере должен загрузиться наш сайт по адресу http://site1.xyz/.
Вот и всё.
Это сообщение опубликованно в моём основном блоге. Вы можете комментировать как и тут, так и напрямую под сообщением в блоге.