Действительно ли возможно настроить несколько локальных доменов на localhost в Ubuntu 14.04?

Мне нужно уникальный, несколько доменов все связанные с локальным IP-адресом моего компьютера. Это для тестирования. Я хочу смочь связать различные локальные домены с различными файлами HTML на моем компьютере. Например, xxx.local и yyy.local оба будет отличен, но только доступен от моего компьютера.

Что я попробовал: конфигурирование apache2, поддерживающего сайты и доступного сайтам, чтобы иметь xxx.local и .conf файлы yyy.local быть связанным с другим DocumentRoots. Однако это не разрешено, и когда я связываю их с локальным IP-адресом своего компьютера, они оба просто связываются с файлами HTML, уже связанными с localhost моего компьютера. Не к HTML файлы указаны DocumentRoot в .conf файлах.

3
задан 31 October 2018 в 06:36

2 ответа

Большая часть работы сделана в конфигурационном файле в каталоге /etc/apache2/sites-enabled/, в файле назвал что-то как 000-default.conf. Это регистрирует, позволит Вам иметь несколько виртуальных доменов, таких как www.example.dev или example.local, и т.д. Вы настраиваете их наряду с их каталогами в этом файле и вводите несколько сайтов в /etc/hosts соответствовать. Все сайты имеют тот же localhost IP-адрес, но имя направляет его к корректному виртуальному хосту.

В этом файле необходимо клонировать настройки по умолчанию так много раз, как Вам нужно с чем-то вроде этого:

Исходное содержание

<VirtualHost *:80>
   . . .
</VirtualHost>

Дополнительные виртуальные записи хоста

<VirtualHost *:80>
    <Directory  /var/www/html/site1>
       Options Indexes FollowSymLinks MultiViews
       AllowOverride All
       Order allow,deny
       allow from all
    </Directory>
    DocumentRoot  /var/www/html/site1/ 
    ServerName site1.local
    ServerAlias www.site1.local
</VirtualHost>

<VirtualHost *:80>
    <Directory  /var/www/html/site2>
       Options Indexes FollowSymLinks MultiViews
       AllowOverride All
       Order allow,deny
       allow from all
    </Directory>
    DocumentRoot  /var/www/html/site2/ 
    ServerName site2.local
    ServerAlias www.site2.local
</VirtualHost>

. . .

Для переписать волшебства работать, также необходимо удостовериться, что переписать механизм включен. Это сделано путем создания символьной ссылки в поддерживающем модификации к модулю в доступном модификациям. Если Вы CD к /etc/apache2/mods-enabled, затем войдите ln -s ../mods-available/rewrite.load, это включит переписать механизм.

Затем в /etc/hosts/, у Вас есть соответствие записям как так:

127.0.0.1  site1.local
127.0.0.1  site2.local

Это должно получить Вас идущий, пока я или не завершаю это, или у Вас есть вопросы для меня ответить.

Ответы на вопросы в комментариях 1

Одной проблемой является директива "DocumentRoot": указанный каталог, как предполагается, просто является корнем документа виртуального сайта, который наиболее вероятен нет"/var/www/arcadr.local/html"как указано. Обычно каталог сайта был бы в конце. "arcadr.local" является произвольным именем, но соответствие сайту является, вероятно, лучшим. Таким образом, это должно, вероятно, быть" '/var/www/html/arcadr.local / '".

До ln ошибки, если бы у меня было больше времени, я объяснил бы, что нижняя строка - Вы, нуждаются в символьной ссылке, названной "rewrite.load" в mods-enabled каталог, который связывается с фактическим файлом в mods-available каталог. Так очевидно Вы уже имели его и не должны были действительно делать этого снова, но, пока это там, это должно работать.

Попробуйте одно изменение и также попытайтесь понять то, что оно делает. Это на самом деле довольно понятно, и после того как Вы начинаете понимать, Вы узнаете больше.

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

Ответы на вопросы в комментариях 2

Файл HTML по умолчанию является просто одним из теперь нескольких виртуальных хостов, указанных в 000-default.conf файле. Обратите внимание, что я первоначально бросил ".conf" расширение файла. Вы находили тот корректный файл? Это должно быть в"sites-enabled", нет"sites-available". То же что касается модификаций, можно иметь несколько сайтов в наличии, но у Вас должен быть тот, включенный, и значение по умолчанию"000-default.conf"(если это не изменилось, так как я настроил его).

Вы говорите "arcadr.local, просто перенаправляет меня к другому .local веб-сайту, подключенному к моему localhost". Удостоверьтесь, что Вам настраивали этот конфигурационный файл правильно. Это должно иметь серию блоков, как HTML:

<VirtualHost *:80>
   . . .
</VirtualHost>

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

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

Некоторые дополнительные указатели

Каждый раз, когда Вы вносите изменения в конфигурационный файл в /etc/apache2/sites-enabled/000-default.conf, необходимо перезапустить сервер Apache. Я использую команду sudo /etc/init.d/apache2 restart сделать это.Править: Gabriel отправил лучшую команду для этого:

sudo service apache2 restart

Но обе команды будут работать по крайней мере на данный момент.

Эта та же техника работает на динамические серверы DNS, такие как noip.com, dyndns, и т.д. Например, я просто сделал 3 демонстрационных сайта в своей домашней системе. Если мой компьютер работает, можно попробовать его для наблюдения. Если Вы проверите, то Вы будете видеть, что все 3 сайта имеют тот же самый IP-адрес, но переходят к различным виртуальным сайтам (вариации на значение по умолчанию, в котором Вы видите leftcoast.noip.us

http://site1.leftcoast.noip.us/
http://site2.leftcoast.noip.us/
http://site3.leftcoast.noip.us/
4
ответ дан 1 December 2019 в 15:36

Существует два шага, которые необходимо сделать, чтобы сделать это.

Первый это, чтобы указать Вашему компьютеру, что Вы хотите, чтобы он искал xxx.local и yyy.local в 127.0.0.1, который обычно означает localhost или Ваш компьютер.

Это сделано путем редактирования Вашего /etc/hosts файл.

Затем необходимо настроить веб-сервер для ответа по-другому, согласно которому относительно имени сервера просят, который сделан путем игры с апачскими виртуальными хостами.

ответ Marty довольно завершен в отношении того предмета. И не забывайте к sudo service apache2 restart, таким образом, это перезагружает, это - конфигурации.

кроме того, может Вы pastebin Ваши виртуальные конфигурации хостов?

1
ответ дан 1 December 2019 в 15:36

Другие вопросы по тегам:

Похожие вопросы: