Несколько доменов на сервере apache

Во-первых, короткое заявление об отказе от ответственности: я не «серверный парень» или «unix pro» или что-то в этом роде, я веб-программист, который застрял на работе с сервером, так как я запускал Linux (ubuntu) на своем нетбуке.

Я пытаюсь настроить сервер Apache, работающий на Debian, для автоматического обслуживания нескольких доменов, каждый домен должен иметь свой собственный каталог в /var/www.

Поскольку это последнее, что я делаю для этой компании, мне действительно нужно, чтобы мой преемник (который еще более новичок в серверах, чем я) мог легко создавать больше доменов без необходимости возиться с ssh или /etc/ apache2/sites-доступен, так что я ищу в основном любую волшебную ерунду по умолчанию (или apt-get, или conf.d), которая заставляет сервер начинать обслуживать любой домен, у которого есть соответствующая папка в /var/ www им, конечно же, придется инициировать передачу домена обычным способом.

У меня нет проблем с настройкой доменов по отдельности.

Кх... надеюсь, что вышеизложенное имеет смысл для кого-то.


person Kristoffer Sall-Storgaard    schedule 03.05.2010    source источник


Ответы (2)


Чтобы обслуживать несколько доменов из Apache, вам понадобятся виртуальные хосты Apache. Вы можете начать обслуживать любой домен с соответствующей папкой в ​​/var/www" с виртуальными хостами Apache, используя mod_vhost_alias.

Следующая конфигурация берет полное доменное имя (например, www.example.org) и использует его как переменную «%0». Таким образом, для обслуживания «www.example.org» вы создаете каталог в /var/www/www.example.org/docs и размещаете туда свой HTML-контент. Ваш Cgi-скрипт будет находиться в /var/www/www.example.org/cgi-bin/

<VirtualHost 192.168.1.100:80>

# get the server name from the Host: header
UseCanonicalName Off

VirtualDocumentRoot /var/www/%0/docs
VirtualScriptAlias /var/www/%0/cgi-bin

</VirtualHost>

Затем укажите «www.example.org» на «192.168.1.100», и Apache с радостью обслужит этот виртуальный хост.

person Stefan Lasiewski    schedule 03.05.2010
comment
как насчет того, чтобы клиент ввел «example.org'? Будет ли URL-адрес вести его в каталог /var/www.example.org/docs? - person cache; 27.06.2012
comment
@cache: Хороший вопрос. Нет, «example.org» приведет его к /var/**example.org**/docs, а не к /var/www.example.org/docs . Я не уверен, что делать в этом случае, но я думаю, что решение потребует некоторых переписываний, чтобы заранее отправить все на канонический URL-адрес. Я думаю, вам следует задать свой вопрос как новый вопрос на Serverfault.com. Я хотел бы посмотреть, как другие люди справляются с этим. - person Stefan Lasiewski; 27.06.2012

Непроверенный код с привкусом Ubuntu

sudo a2enmod rewrite
vi /etc/apache/sites-enabled/000-default

NameVirtualHost *
<VirtualHost *>
        DocumentRoot /var/www/
        RewriteEngine On
        RewriteRule ^(.*)$ %{HTTP_HOST}/$1
</VirtualHost>


sudo /etc/inid.d/apache2 restart
person Mr. Ronald    schedule 03.05.2010