Настройка Apache для localhost

Рубрика: Linux -> Tips
Метки: | |
Вторник, 15 июня 2010 г.
Подписаться на комментарии по RSS
Небольшая заметка для тех, кто занимается разработкой web-сайтов. Наверняка у Вас на localhost уже стоит настроенный LAMP и DocumentRoot нацелен куда-нибудь в /var/www/localhost/htdocs/ и т.д. Все вроде ничего, но при одновременной работе над несколькими проектами это не очень удобно http://localhost/site1/, http://localhost/site2/ и т.д.
И если на сайте используются не относительные пути, а абсолютные, то иногда с этим возникают проблемы. Конечно файлы таких проектов можно класть прямо в /var/www/localhost/htdocs/, но постоянное перемещение файлов туда-сюда это трата времени.

У Apache в mod_vhost_alias есть замечательная директива VirtualDocumentRoot. Она позволяет использовать DocumentRoot в зависимости от запрошенного домена.
VirtualDocumentRoot "/var/www/localhost/%0/htdocs"
%0 - это запрошенный домен (подробнее в документации).
Т.е. при запросе localhost он будет смотреть в /var/www/localhost/localhost/htdocs, при запросе site1.localhost в /var/www/localhost/site1.localhost/htdocs и т.д.

Целиком конфиг у меня выглядит так:
  1. NameVirtualHost 127.0.0.1:80
  2. <VirtualHost 127.0.0.1:80>
  3.     AssignUserID burik burik    # mpm-itk
  4.     NiceValue 19                    # mpm-itk
  5.  
  6.     ServerName localhost
  7.     ServerAlias *.localhost
  8.  
  9. ErrorLog "|/usr/sbin/cronolog -u burik -g burik /var/www/localhost/logs/%Y-%m-error.log"
  10. LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost_common
  11. CustomLog "|/usr/sbin/cronolog -u burik -g burik /var/www/localhost/logs/%Y-%m-access.log" vhost_common
  12.  
  13.     VirtualDocumentRoot "/var/www/localhost/%0/htdocs"
  14.     <Directory "/var/www/localhost">
  15.         Options FollowSymLinks ExecCGI
  16.         AllowOverride All
  17.         Order allow,deny
  18.         Allow from all
  19.     </Directory>
  20. </VirtualHost>

Теперь для того чтобы развернуть проект, нужно просто сделать burik@burik-nb ~ $ mkdir -p /var/www/localhost/newproject.localhost/htdocs И положить туда скрипты проекта (или начать их писать)

Осталась проблема с DNS, по дефолту localhost резолвится как 127.0.0.1, однкао, sub.localhost вообще не резолвится. Есть два пути решения данной проблемы:
Либо каждый раз при создании нового проекта добавлять запись в /etc/hosts
127.0.0.1 newproject.localhost
Либо поднять BIND и добавить в файл зоны localhost запись:
*               IN      A       127.0.0.1
не забудьте burik-nb ~ # echo nameserver 127.0.0.1> /etc/resolv.conf

Оставьте комментарий!

Не регистрировать/аноним

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email.
(При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д.)



Valid XHTML 1.0 Transitional