Добавить новые виртуальные хосты на Apache без перезапуска сервера? - PullRequest
4 голосов
/ 17 января 2011

У меня Apache работает нормально, виртуальные хосты работают как положено. Моя операционная система - Windows 7.

Однако у меня есть одна проблема, на которую я пытаюсь найти ответ, и Google мало что дал - в любом случае для Windows, только для Linux (что в данном случае неприменимо)

Как добавить новые виртуальные хосты, не перезагружая сервер постоянно?

(сейчас я использую Apache версии 2.2)

Я добавляю новые хосты в файл хоста и файлы в vhosts, вот так:

<VirtualHost *:80>
ServerName  host1.tld
ServerAlias www.host1.tld
DocumentRoot /www/vhosts/host1.tld
ErrorLog /www/Apache22/logs/error.log

<Directory "/www/vhosts/host1.tld">
    Options All
    AllowOverride All
    order allow,deny
    allow from all
</Directory>

<VirtualHost *:80>
ServerName  mywebsite.com
ServerAlias www.mywebsite.com
DocumentRoot /www/vhosts/mywebsite.com
ErrorLog /www/Apache22/logs/error.log

<Directory "/www/vhosts/mywebsite.com">
    Options All
    AllowOverride All
    order allow,deny
    allow from all
</Directory>

Кто-нибудь был в подобном решении, и если да, что вы посоветуете?

Ответы [ 2 ]

3 голосов
/ 17 января 2011

Вы можете настроить все vhosts с помощью одного блока, используя VirtualDocumentRoot

<VirtualHost *:80>
UseCanonicalName Off
VirtualDocumentRoot /www/vhosts/%0
ErrorLog /www/Apache22/logs/error.log

<Directory "/www/vhosts">
    Options All
    AllowOverride All
    order allow,deny
    allow from all
</Directory>
0 голосов
/ 17 января 2011

Вы можете перезапустить apache, не перезагружая сервер.У меня на компьютере Mac есть скрипт Apple, который перезапускает apache для меня, так что одним щелчком мыши и четвертью секунды можно загрузить новую конфигурацию apacheВот скрипт Apple, который можно легко перенести на Python (для использования в Windows):

set stopString to do shell script "sudo /usr/local/apache2/bin/apachectl stop" with administrator privileges and password
set startString to do shell script "sudo /usr/local/apache2/bin/apachectl start" with administrator privileges and password

if startString as string = "" then
    "Apache started correctly"
else
    stopString & " , " & startString
end if
...