Comments 86
>> Итак, попробуем добиться, чтобы процесс создания поддомена сводился лишь к созданию папки для сайта. Возможно ли это? Проверим…
Получилось что не возможно…
Так как всё равно пришлось:
>> sudo service apache2 restart
ИМХО — последние и есть проблема. Остальное — мелочи.
Получилось что не возможно…
Так как всё равно пришлось:
>> sudo service apache2 restart
ИМХО — последние и есть проблема. Остальное — мелочи.
+1
>> sudo service apache2 restart
Насколько я понял из статьи, это делается один раз в самом начале при загрузке нового модуля. Все последующие добавления виртуальных хостов не будут требовать перезагрузку.
Насколько я понял из статьи, это делается один раз в самом начале при загрузке нового модуля. Все последующие добавления виртуальных хостов не будут требовать перезагрузку.
+6
Упс. Так много было про днс написано, что в работу MOD_VHOST_ALIAS я как-то пропустил. Перечитал внимательно — да, похоже эта проблема решена.
«Модуль организует динамическое создание виртуальных хостов на основе запрошенного доменного имени и не требует внесения изменений в конфигурационные файлы сервера при создании новых виртуальных хостов»
Тогда полезно. Извините, прошлый комент написал недоразобравшись.
«Модуль организует динамическое создание виртуальных хостов на основе запрошенного доменного имени и не требует внесения изменений в конфигурационные файлы сервера при создании новых виртуальных хостов»
Тогда полезно. Извините, прошлый комент написал недоразобравшись.
+2
вообще-то есть такая замечательная вещь как
graceful: Gracefully restarts the Apache daemon by sending it a SIGUSR1. If the daemon is not running, it is started. This differs from a normal restart in that currently open connections are not aborted. A side effect is that old log files will not be closed immediately. This command automatically checks the configuration files via configtest before initiating the restart to make sure Apache doesn't die.
sudo service apache2 graceful
graceful: Gracefully restarts the Apache daemon by sending it a SIGUSR1. If the daemon is not running, it is started. This differs from a normal restart in that currently open connections are not aborted. A side effect is that old log files will not be closed immediately. This command automatically checks the configuration files via configtest before initiating the restart to make sure Apache doesn't die.
+2
в чем же это проблема?
0
Может оставить труп в покое?
-25
Можно ли добиться подобного эффекта в Windows? Надоело постоянно добавлять новые домены на домашнем компьютере.
+1
www.denwer.ru/
Система управления виртуальными хостами, основанная на шаблонах. Чтобы создать новый хост, вам нужно лишь добавить директорию в каталог /home, править конфигурационные файлы не требуется. По умолчанию уже поддерживаются схемы именования директорий многих популярных хостеров; новые можно без труда добавить.
-4
Apache, Bind точно также есть и под Windows, можно их же и использовать :)
0
BIND вполне прекрасно работает и под Windows, только устанавливается он несколько сложней — alex.charrett.com/bind-on-windows-mainmenu-3
0
UFO just landed and posted this here
сколько еще статей будет об этом на хабре?
dnsmasq же. Зачем столько танцев вокруг BIND.
dnsmasq же. Зачем столько танцев вокруг BIND.
+6
Ага, а теперь попробуйте, например, без плясок с реврайтами на одном из сайтов включить поддомеы в подпапках, или перенести Document Root в подпапку. Или задать какие-то настройки для отдельно взятого сайта. В апаче сотни настроек, но даже такие простые вещи там только с бубном делаются.
+1
«Удобный способ создания виртуальных хостов с помощью модуля mod_vhost_alias не лишен ряда недостатков.
Для эффективного использования модуля mod_vhost_alias конфигурация всех виртуальных хостов должно быть одинакова. В противном случае, для настройки каждого виртуального хоста необходимо применять контейнер, что лишает модуль mod_vhost_alias своего основного преимущества.»
Так и есть.
Для эффективного использования модуля mod_vhost_alias конфигурация всех виртуальных хостов должно быть одинакова. В противном случае, для настройки каждого виртуального хоста необходимо применять контейнер, что лишает модуль mod_vhost_alias своего основного преимущества.»
Так и есть.
0
Дополню нижнего комментатора.
И на самом деле ничего страшного. Если для какого-то проекта нужна спецефическая настройка — для него просто заводится отдельный контейнер в sites_enabled (или прямо в httpd.conf). Ведь если спецефическая настройка — все равно с конфигами воевать.
У меня примерно такая система поднята на виртуалке (коею я гордо реку девелоперской машиной). А еще папка, в которой лежат сайты примонтирована с помощью hgfs (как шаред фолдер) в хост-систему. В итоге мне просто остается прямо в моей хост системе создать папку, проинициализировать в нее проект и можно уже разрабатывать, что называется, наживую.
И на самом деле ничего страшного. Если для какого-то проекта нужна спецефическая настройка — для него просто заводится отдельный контейнер в sites_enabled (или прямо в httpd.conf). Ведь если спецефическая настройка — все равно с конфигами воевать.
У меня примерно такая система поднята на виртуалке (коею я гордо реку девелоперской машиной). А еще папка, в которой лежат сайты примонтирована с помощью hgfs (как шаред фолдер) в хост-систему. В итоге мне просто остается прямо в моей хост системе создать папку, проинициализировать в нее проект и можно уже разрабатывать, что называется, наживую.
+2
Интересно и полезно для сайтостроителя на свою рабочую машину. Поступил заказ, накатил директорию, создал базку и понеслась. В производстве вряд ли будет хорошим решением по длинному ряду причин.
+3
UFO just landed and posted this here
Было бы неплохо, если своим скриптом вы поделились.
P.S. Когда прочел заголовок статьи, обрадовался, однако увидев «свистопляски» и возможные баги, снова разочаровался.
P.S. Когда прочел заголовок статьи, обрадовался, однако увидев «свистопляски» и возможные баги, снова разочаровался.
0
свистопляски заключаются в основном в настройке локального DNS-сервера для зоны loc. Для реального домена можно просто добавить A-запись для * и все.
0
Не совсем понял зачем все-таки в случае локальной машины поднимать bind и что-то настраивать в нем, когда записи в hosts более чем достаточно. Или этот модуль использует свой резолвер в обход системного?
0
Без настройки DNS придется прописывать в hosts каждый домен, так как он не понимает записи «127.0.0.1 *loc».
0
При таком раскладе согласен. Мне просто всегда хватало перечисления через пробел нужных имен. Если же тестим сайт, которому 100500 сабдоменов надо, то да — днс лучший выход.
Остается только вопрос — что за хрень в обратке написана и кой леший она вообще в данном случае? :)
Остается только вопрос — что за хрень в обратке написана и кой леший она вообще в данном случае? :)
0
UFO just landed and posted this here
Выше поправляют, что в hosts такое не будет работать. Согласен. Я просто больше 2-3 сайтов никогда не гонял локально, так что мне необходимость вайлдкардов не понять :)
0
UFO just landed and posted this here
Гммм… Есть bind. Какой интерфейс к нему нужен? Не хочется править конфиги — есть webmin и еще куча тулзов для управления им.
0
UFO just landed and posted this here
А в винде иначе? Надо сначала днс сервер поставить, зону там завести, а потом записи добавлять. При том все там далеко не интуитивно понятно. По крайней мере я лазил в майкрософтовый днс 3-4 раза за всю жизнь и каждый раз плевался как идиотски все сделано. Нравится windows-way? Вперед. Никто не отговаривает.
+1
UFO just landed and posted this here
Да, пользовательские задачи в винде решаются за один клик. Но стоит попытаться сделать что-нибудь более-менее сложное, то вся простота летит к чертям и приходиться рыть интернет в поисках нужных утилит и инструкций к ним.
0
Welcome to the real world, Neo :)
В компьютерном мире вообще почти все отвратительно :) Холиварить имхо тут не имеет смысла, все что выше типовых юзерских задач обычно делается не очень интуитивно в любой операционке. Пока еще не сделали волшебную кнопку «Сделать зае… сь».
З.Ы. Роутер в линуксе делается правкой одной переменной в конфиге и одной строкой в конфиге iptables. Скорее всего в графике оно тоже парой кликов делается — не искал, т.к. привык к консоли.
С виндой наоборот могу посоветовать роутер. Сколько раз уже ко мне обращались со случаями, когда эта глючная птичка переставала работать в один прекрасный день :( И фик найдешь почему.
В компьютерном мире вообще почти все отвратительно :) Холиварить имхо тут не имеет смысла, все что выше типовых юзерских задач обычно делается не очень интуитивно в любой операционке. Пока еще не сделали волшебную кнопку «Сделать зае… сь».
З.Ы. Роутер в линуксе делается правкой одной переменной в конфиге и одной строкой в конфиге iptables. Скорее всего в графике оно тоже парой кликов делается — не искал, т.к. привык к консоли.
С виндой наоборот могу посоветовать роутер. Сколько раз уже ко мне обращались со случаями, когда эта глючная птичка переставала работать в один прекрасный день :( И фик найдешь почему.
0
bind не нужен. Есть dnsmasq, а большего и не надо. Там инструкция вида «перенаправлять все *.loc на 127.0.0.1» требует всего одной строчки в /etc/dnsmasq.conf:
address=/loc/127.0.0.1
0
UFO just landed and posted this here
> — перезапуск nginx
> — перезапуск apache
Вот проблема, которую решает описанный подход
Юзеры, папки, базы и права всяко будут делаться скриптами и тут.
> — перезапуск apache
Вот проблема, которую решает описанный подход
Юзеры, папки, базы и права всяко будут делаться скриптами и тут.
0
А graceful рестарт или HUP чем не устраивают? Первый — дождется пока дочерние процессы отдадут все юзерам, и постепенно заменяет их на новые процессы с новым конфигом. Второй — убъет всех детей и запустит новых с новым конфигом. В случае HUP время перезапуска значительно сокращается, т.к. родительский процесс продолжает работать, а в случае с graceful юзеры вообще ничего не заметят. У nginx тоже подобный фокус есть. Так что проблема высосана из пальца, т.е. ее тупо нет.
+2
UFO just landed and posted this here
Не, я конечно понимаю, что у нас в стране обычай такой — сначала ковыряемся, а если что-то не пашет или не устраивает, то лезем мануал читать. Если действовать общепринятым способом, то перед тем как начинать работать с софтом хорошо бы просмотреть доку, ну хотя бы бегло. А по рестарту в доке апача отдельный раздел есть, где все расписано — по какому сигналу как себя ведет апач. Ну и команда service httpd, запущенная без параметров должна уже задавать направление поиска :)
0
У меня такой же скрипт есть — github.com/denisoid/simple-administration-scripts
Возможности:
— создание пользователя без пароля и группы для сайта
— создание пользователя mysql с рандомным паролем
— создание базы данных mysql
— добавление виртуальных хостов для apache и nginx
Буду рад есть посоветуете, как сделать его еще лучше=)
Возможности:
— создание пользователя без пароля и группы для сайта
— создание пользователя mysql с рандомным паролем
— создание базы данных mysql
— добавление виртуальных хостов для apache и nginx
Буду рад есть посоветуете, как сделать его еще лучше=)
0
Если у одного виртхоста habrahabr.com, а у другого habrahabr.ru, — имеем странное поведение (когда забываешь про %-2).
Не веселое решение. Да и ну его этот apache. Слишком разжирел он.
Не веселое решение. Да и ну его этот apache. Слишком разжирел он.
0
UFO just landed and posted this here
Все http поддерживают виртхосты.
0
Почти все http демоны поддерживают виртхосты.
Топы точно.
Топы точно.
0
UFO just landed and posted this here
FCGI/CGI/SGI? setuid?
0
UFO just landed and posted this here
«Если у одного виртхоста habrahabr.com, а у другого habrahabr.ru...»
Для всех виртуальных хостов используется суффикс .loc, так что проблемы быть не должно.
Для всех виртуальных хостов используется суффикс .loc, так что проблемы быть не должно.
0
У меня при создании папки в home/domains/test.ru/www автоматически биндятся алиасы с nginx и апача, так что статику отдаёт nginx а php обрабатывает apache, также если создать файлик nginx.cache в папке test.ru то автоматически включится кеш по куке :)
0
если домен по которому обращаются не существует то сервер смотрит в home/domains/default/www :)
Также перед запросом подключается для всех сайтов php файлик, устраняющий некоторые проблемки.
И все инструкции по настройке есть тут на хабре.
Также перед запросом подключается для всех сайтов php файлик, устраняющий некоторые проблемки.
$l = explode("/",$_SERVER['SCRIPT_FILENAME']);
$DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"] = implode("/",Array( $l[0], $l[1], $l[2], $l[3], $l[4]));
И все инструкции по настройке есть тут на хабре.
0
Мдя. Для начала:
>sudo a2enmod vhost_alias
Указывайте блин дистрибутив. По скриншоту и любви к sudo можно понять, что описываете для бубунты?
>127.0.0.1 test.loc
Такое писать надо только если в пишете имя, а не ip'шник, или для тестирования, когда на локальной машине работаете. А если тестируете/используете в разработке сайтов, то нафик пляски с bind? Записи в hosts более чем достаточно.
Насчет bind. Вы прямую и обратную зону сравнивали? Где в обратке записи типа PTR и что у нас стоит в SOA и конфиге bind? Плюс в продакшене так вам и отдали управление обраткой.
mod_rewrite. В продакшене при более или менее нормальном трафе жрет проц шо ппц. Никогда так не делайте и старайтесь либо не использовать его, либо включать только там где это действительно надо.
Про mod_vhost_alias и отличающиеся конфиги виртуальных хостов тут уже сказали.
У апача есть такая замечательная директива — Include. Пишем в конфиге Include vhosts/*.conf, делаем шаблон, в который при создании хоста скриптиком вписываем имя юзера и имя домена. Все. Потом по необходимости правим конфиг и делаем service httpd reload, т.е. просим апач просто конфиг перечитать.
Статью переименовать, дописать «для разработчика» или «на локальном хосте».
>sudo a2enmod vhost_alias
Указывайте блин дистрибутив. По скриншоту и любви к sudo можно понять, что описываете для бубунты?
>127.0.0.1 test.loc
Такое писать надо только если в пишете имя, а не ip'шник, или для тестирования, когда на локальной машине работаете. А если тестируете/используете в разработке сайтов, то нафик пляски с bind? Записи в hosts более чем достаточно.
Насчет bind. Вы прямую и обратную зону сравнивали? Где в обратке записи типа PTR и что у нас стоит в SOA и конфиге bind? Плюс в продакшене так вам и отдали управление обраткой.
mod_rewrite. В продакшене при более или менее нормальном трафе жрет проц шо ппц. Никогда так не делайте и старайтесь либо не использовать его, либо включать только там где это действительно надо.
Про mod_vhost_alias и отличающиеся конфиги виртуальных хостов тут уже сказали.
У апача есть такая замечательная директива — Include. Пишем в конфиге Include vhosts/*.conf, делаем шаблон, в который при создании хоста скриптиком вписываем имя юзера и имя домена. Все. Потом по необходимости правим конфиг и делаем service httpd reload, т.е. просим апач просто конфиг перечитать.
Статью переименовать, дописать «для разработчика» или «на локальном хосте».
+2
Млин. Схавался кусок.
>Такое писать надо только если в пишете имя, а не ip'шник
Читать «Такое писать надо только если в пишете имя, а не ip'шник в VirtualHost»
>Такое писать надо только если в пишете имя, а не ip'шник
Читать «Такое писать надо только если в пишете имя, а не ip'шник в VirtualHost»
0
>> Указывайте блин дистрибутив.
В ярлыках =)
>> Записи в hosts более чем достаточно.
Лень постоянно лазить в host. Хотелось поднять что-то в стиле «настроил и забыл».
>> В продакшене при более или менее нормальном трафе жрет проц шо ппц.
Все настройки ориентированы на локальную конфигурацию, так что доступ с внешки как бы не планировался. Но, хоть сам модуль и включен, но не во всей сайтах использован. Для каждого сайта включается отдельно в .htaccess
>> Про mod_vhost_alias и отличающиеся конфиги виртуальных хостов тут уже сказали.
Мне не критично. Практически все конфигурации одинаковые.
В ярлыках =)
>> Записи в hosts более чем достаточно.
Лень постоянно лазить в host. Хотелось поднять что-то в стиле «настроил и забыл».
>> В продакшене при более или менее нормальном трафе жрет проц шо ппц.
Все настройки ориентированы на локальную конфигурацию, так что доступ с внешки как бы не планировался. Но, хоть сам модуль и включен, но не во всей сайтах использован. Для каждого сайта включается отдельно в .htaccess
>> Про mod_vhost_alias и отличающиеся конфиги виртуальных хостов тут уже сказали.
Мне не критично. Практически все конфигурации одинаковые.
0
В исходном мануале подробно описывается еще один недостаток — невозможность ведения раздельных логов и необходимость выкручиваться парсингом при ротации или пайпом.
+1
Лучше день потерять, потом за 5 минут долететь. По мне так проще будет сделать скрипт для создания виртуальных хостов со всей необходимой структурой папкой и записью в hosts. Можно привязать генерацию виртуальных хостов к какой-нибудь базе данных или простому текстовому файлы определённого формата. Раньше делал нечто подобное на местном сервере, раздавал место под сайты, базы данных и почтовые ящики автоматически через форму регистрации. К сожалению, не сохранилось. А может и к лучшему, страшно на свой старый код смотреть, а там он очень старый.
+2
Что касается проблем с
$_SERVER['DOCUMENT_ROOT']
и RewriteBase
, примечательно, что такие же проблемы есть и при реализации виртуальных хостов с помощью mod_rewrite
. Не смотрел исходники vhost_alias
, но такое чувство, что он с помощью mod_rewrite
и реализован.0
маленький скрипт, который добавляет новую запись в /etc/hosts, будет намного проще, чем всё это представление с БИНДом. Плюс — лучше безопасность.
0
И никакие ISPmanager-ы не нужны, который техподдержка хостингов всучивает за деньги. Буквально 5 строчек дописать и все работает)
+1
Хм
Server:Apache/2.4.7 (Ubuntu)
Не понимает директиву %1 — пытается обратиться не по параметру а прямо ищет подпапку "%1"
Server:Apache/2.4.7 (Ubuntu)
Не понимает директиву %1 — пытается обратиться не по параметру а прямо ищет подпапку "%1"
0
Sign up to leave a comment.
Мультидоменность в Apache без лишних хлопот на локальном хосте