?

Log in

No account? Create an account

xyzya


Petka Sokolnikov

блог обыкновенного фрилансера


Previous Entry Share Next Entry
Автоматическое создание субдоменов в Apache2
xyzya

Мне приходится работать с движками многих сайтов, постоянно появляются для обслуживания новые, и уходят в архивное забвение старые. Поэтому часто добавляются новые блоки виртуалхостов в конфиге Апача, и сам конфиг уже изрядно раздулся.
Появилась минутка свободного времени, и я решил навести порядок в этом безобразии. Захотелось сделать так, чтобы для добавления нового сайта, было достаточно создать директорию, и прописать новый хост в /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/.

Вот и всё.

Это сообщение опубликованно в моём основном блоге. Вы можете комментировать как и тут, так и напрямую под сообщением в блоге.
Tags: , ,