Мне нужно уникальный, несколько доменов все связанные с локальным IP-адресом моего компьютера. Это для тестирования. Я хочу смочь связать различные локальные домены с различными файлами HTML на моем компьютере. Например, xxx.local и yyy.local оба будет отличен, но только доступен от моего компьютера.
Что я попробовал: конфигурирование apache2, поддерживающего сайты и доступного сайтам, чтобы иметь xxx.local и .conf файлы yyy.local быть связанным с другим DocumentRoots. Однако это не разрешено, и когда я связываю их с локальным IP-адресом своего компьютера, они оба просто связываются с файлами HTML, уже связанными с localhost моего компьютера. Не к HTML файлы указаны DocumentRoot в .conf файлах.
Большая часть работы сделана в конфигурационном файле в каталоге /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/
Существует два шага, которые необходимо сделать, чтобы сделать это.
Первый это, чтобы указать Вашему компьютеру, что Вы хотите, чтобы он искал xxx.local и yyy.local в 127.0.0.1, который обычно означает localhost или Ваш компьютер.
Это сделано путем редактирования Вашего /etc/hosts
файл.
Затем необходимо настроить веб-сервер для ответа по-другому, согласно которому относительно имени сервера просят, который сделан путем игры с апачскими виртуальными хостами.
ответ Marty довольно завершен в отношении того предмета. И не забывайте к sudo service apache2 restart
, таким образом, это перезагружает, это - конфигурации.
кроме того, может Вы pastebin Ваши виртуальные конфигурации хостов?