Назад | Перейти на главную страницу

настройки виртуального хоста не работают на нескольких сайтах

Отредактировано (снова): я думал, что установка apache2 в моей операционной системе ubuntu (персональная) позволит мне «размещать» веб-сайты внутри себя - без выхода в Интернет. Теперь я понимаю, что два "работающих" домена на самом деле являются зарегистрированными доменными именами, а два других - это имена, которые я намерен зарегистрировать позже, когда я выйду на работу. Но отключение от Интернета останавливает работу даже первых двух доменов - хотя я знаю, что они получают свои файлы с localhost.mysitename.com. Что тут происходит? Сейчас я читаю etc / host и etc / host.conf и etc / nsswitch.conf - в правильном ли направлении я двигаюсь?

Я переписал эти вопросы, добавив больше информации. Проблема сохраняется. Спасибо:

Как вообще можно досконально прочитать документацию по apache на Настройка vHost, попробуйте практически все варианты и все еще сохраните начальный сценарий, в котором первые два vHosts и каталоги работают отлично, а затем все последующие плохо работают. «Плохой запрос» «Сервер не найден».

Вот базовый файл vHost (в / etc / apache2 / sites-available), реплицированный ровно 4 раза с изменением только «mysitename1», его DocumentRoot и его Directory. Кстати, эта версия использует IP-адрес localhost (127.0.0.1), но я использовал *: 80 с точно такими же результатами.

<VirtualHost 127.0.0.1>
 ServerAdmin xx@yyyyy.com
 ServerName localhost.mysitename1.com

 DocumentRoot /home/folder/folder/folder/folder
 <Directory />
  Options FollowSymLinks
  AllowOverride All
 </Directory>
 <Directory /home/folder/folder/folder/folder>
  Options Indexes FollowSymLinks MultiViews
  AllowOverride None
  Order allow,deny
  allow from all
 </Directory>

 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
 <Directory "/usr/lib/cgi-bin">
  AllowOverride None
  Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
  Order allow,deny
  Allow from all
 </Directory>

 ErrorLog "path to this site's error.log"

 LogLevel warn

 CustomLog "path to this site's access.log"

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

А внутри ports.conf это: (Я начал с *: 80 вместо 127.0.0.1) - те же результаты, что описаны выше:

Listen 80
NameVirtualHost 127.0.0.1

Меня интересует предложение документа: «Вы можете помещать записи в файл хостов для локального тестирования, но это будет работать только с машины с этими записями хостов». Это все, что я пытаюсь сделать, по сути, это среда разработки, в которой я могу работать на нескольких сайтах локально. Я не могу найти этот файл "hosts", но мне интересно, ввел ли я свои первые два домена (давным-давно) и забыл, как я это сделал. ??

Спасибо за любую помощь.

Ответ был в файле / etc / hosts. Чтобы обнаружить IP-адреса для имен, системный DNS-преобразователь сначала (должен) обратиться к файлу / etc / hosts для name = ip, если его нет, он перейдет к поиску DNS. Прочтите "man hosts", чтобы увидеть синтаксис файла hosts. Назначьте всем своим доменам (желательно не FQDN) IP-адрес вашего localhost (127.0.0.1), пример:

127.0.0.1 localhost.exmaplesite1.com
127.0.0.1 localhost.exmaplesite2.com

Используйте localhost.examplesite1.com и localhost.examplesite2.com в качестве ServerName в директиве VirtualHost. См. Ссылку на документы для других настроек и синтаксиса. @Antonious использование единственного подстановочного знака не задокументировано Apache2, но он не понимал, что я пытался заставить определенные имена через петлю localhost, чтобы я мог разрабатывать веб-приложения в автономном режиме. Я никогда не понимал предположения @lynxman о том, что ошибка «Плохой запрос» или «Сервер не найден» может с самого начала записываться в журналы ошибок - хотя я все равно использовал отдельные файлы журналов для каждой директивы VirtualHost.

Кстати: «sudo host localhost.examplesite.com» распечатает IP-адрес сайта, ЕСЛИ «examplesite.com» - это реальный сайт. По-видимому, команда "sudo host" НЕ ищет настройки / etc / hosts и не влияет на IP. <- Да, я знаю, это меня хорошо облажало.

ура!

Поделюсь с вами своим рабочим конфигом.

Убедитесь, что вы связали свои виртуальные хосты в сайты с поддержкой. Apache выполняет каждый сайты с поддержкой файл в алфавитно-цифровом порядке, так что назовите свой сайт по умолчанию как-нибудь 0000-по умолчанию поэтому он будет выполнен первым. Это сайт, который ваши пользователи должны видеть в случае сбоя виртуального хостинга. Мой выглядит так:

NameVirtualHost *

    <VirtualHost *>
            ServerAdmin contact-us@obscuredomain.com

            DocumentRoot /var/www/0000-default-site
            <Directory />
                    Options FollowSymLinks
                    #AllowOveride set to All for mod rewrite (default None)
                    AllowOverride All
            </Directory>
            <Directory /var/www/0000-default-site>
                    Options Indexes FollowSymLinks MultiViews
                    AllowOverride None
                    Order allow,deny
                    allow from all
                    # Uncomment this directive is you want to see apache2's
                    # default start page (in /apache2-default) when you go to /
                    #RedirectMatch ^/$ /apache2-default/
            </Directory>


            ErrorLog /var/log/apache2/error.log

            # Possible values include: debug, info, notice, warn, error, crit,
            # alert, emerg.
            LogLevel info

            CustomLog /var/log/apache2/access.log combined
            ServerSignature On


    </VirtualHost>

Обратите внимание на директиву * NameVirtualHost **. Важно, чтобы это была самая первая директива в виртуальных конфигах. Итак, вы поместили его в начало 0000-по умолчанию и убедитесь, что сначала ничего не выполняется.

Затем назовите свой первый виртуальный хост 0010-yourdomain.name и твой второй 0020-another.name. Вот как выглядят мои виртуалы (обратите внимание, они немного отличаются от стандартных):

<VirtualHost *>
        ServerName www.lickmyquads.net
        ServerAlias lickmyquads.net
        ServerAdmin contact-us@lickmyquads.net

        DocumentRoot /var/www/lickmyquads.net/www/docroot
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/lickmyquads.net/www/docroot>
                Options FollowSymLinks
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        #ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        #<Directory "/usr/lib/cgi-bin">
        #       AllowOverride None
        #       Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        #       Order allow,deny
        #       Allow from all
        #</Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel info

        CustomLog /var/log/apache2/access.log combined
        ServerSignature On

        #Custom Error
        #ErrorDocument 404 /app/404.php
        #ErrorDocument 404;2 /app/404.php
        #ErrorDocument 404;3 /app/404.php

</VirtualHost>

Надеюсь, этот рабочий пример поможет вам разобраться. Если он не пытается запустить конфигурация apache2ctl команда, которая поможет найти любые синтаксические ошибки в вашей конфигурации.

Вы можете разместить в apache столько виртуальных хостов, сколько захотите, это похоже на то, что имена хостов либо очень похожи, либо перекрываются, при создании виртуального хоста в apache убедитесь, что

  • При использовании виртуальных хостов на основе DNS у вас всегда есть NameVirtualHost директива для IP и порта, который вы обслуживаете
  • Убедитесь, что имена виртуальных хостов не конфликтуют, вы всегда можете проверить, на какой из них вы приземляетесь, либо добавив %V в формат вашего журнала (чтобы он показывал, какой домен попадает) или наличие файла в каждом VH, в котором указывается, кто это

"Сервер не найден" похоже, что ваш хост-файл настроен неправильно. Расскажите немного о настройке вашего клиента; ОС, браузер, файл hosts и т. Д.

Если у вас несколько клиентов и вы не хотите поддерживать отдельные файлы хоста, вы можете настроить DNS-сервер с разделением горизонта.

http://en.wikipedia.org/wiki/Split-horizon_DNS

Это не так сложно, как кажется, и у наличия локального кэширующего DNS-сервера есть свои преимущества.