Настройка Apache для localhost
Рубрика: Linux -> Tips
Метки: apache | linux | localhost
Вторник, 15 июня 2010 г.
Подписаться на комментарии по RSS
Метки: apache | linux | localhost
Вторник, 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 в зависимости от запрошенного домена.
Т.е. при запросе localhost он будет смотреть в /var/www/localhost/localhost/htdocs, при запросе site1.localhost в /var/www/localhost/site1.localhost/htdocs и т.д.
Целиком конфиг у меня выглядит так:
Теперь для того чтобы развернуть проект, нужно просто сделать burik@burik-nb ~ $ mkdir -p /var/www/localhost/newproject.localhost/htdocs И положить туда скрипты проекта (или начать их писать)
Осталась проблема с DNS, по дефолту localhost резолвится как 127.0.0.1, однкао, sub.localhost вообще не резолвится. Есть два пути решения данной проблемы:
Либо каждый раз при создании нового проекта добавлять запись в /etc/hosts
И если на сайте используются не относительные пути, а абсолютные, то иногда с этим возникают проблемы. Конечно файлы таких проектов можно класть прямо в /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 и т.д.
Целиком конфиг у меня выглядит так:
- NameVirtualHost 127.0.0.1:80
- <VirtualHost 127.0.0.1:80>
- AssignUserID burik burik # mpm-itk
- NiceValue 19 # mpm-itk
- ServerName localhost
- ServerAlias *.localhost
- ErrorLog "|/usr/sbin/cronolog -u burik -g burik /var/www/localhost/logs/%Y-%m-error.log"
- LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost_common
- CustomLog "|/usr/sbin/cronolog -u burik -g burik /var/www/localhost/logs/%Y-%m-access.log" vhost_common
- VirtualDocumentRoot "/var/www/localhost/%0/htdocs"
- <Directory "/var/www/localhost">
- Options FollowSymLinks ExecCGI
- AllowOverride All
- Order allow,deny
- Allow from all
- </Directory>
- </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
Оставьте комментарий!