Как настроить виртуальные хосты в Ubuntu или Debian. Файл hosts в Linux Файл hosts в ubuntu

Хочу рассказать о несколько нестандартном способе с помощью которого можно открывать в браузере сайты, используя короткие имена. Например, вместо того чтобы набирать в браузере «yandex.ru» можно просто набрать одну букву «y». Поможет нам в этом файл /etc/hosts.

Файл /etc/hosts

В файле /etc/hosts задаются соответствия между IP адресом и именем хоста (hostname, домен), а также их псевдонимами (также называются, синонимами, алиасами). Когда вы обращаетесь к какому-нибудь адресу в сети, например, http://yandex.ru, то для доступа к сайту системе требуется вначале преобразовать адрес сайта в соответствующий ему IP адрес, для этого система запрашивает IP адрес у DNS сервера. Если в файле /etc/hosts прописано соответствие между yandex.ru и IP адресом, тогда система будет использовать именно этот IP адрес. А так как мы можем в файле /etc/hosts указать еще и псевдоним, по которому будет доступен конкретный IP адрес, то мы можем указать, например, для yandex.ru псевдоним «y». Соответственно, при запросе «y» в своем браузере, система прочитает IP адрес в файле /etc/hosts и откроет сайт yandex.ru. То есть /etc/hosts, это своего рода локальный DNS сервер.

Как узнать IP адрес сайта

Теперь нам нужно определить IP адреса сайтов, которые мы хотим добавить в /etc/hosts. Стоит отметить, что не все сайты имеют отдельный выделенный IP адрес и получить к ним доступ только по IP адресу нельзя. Но почти все крупные сайты и порталы имеют свой выделенный IP адрес. Простой способ узнать IP адрес сайта это использовать командну ping:

Ping адрес-сайта.ru

Например, выполним:

ping yandex.ru

На экране отобразится процесс пинга (чтобы прервать нажмите Ctrl+C). Итак, мы получим вывод команды ping вида:

PING yandex.ru (87.250.250.11) 56(84) bytes of data. 64 bytes from yandex.ru (87.250.250.11): icmp_seq=1 ttl=57 time=3.57 ms ...

Здесь видно, что yandex.ru соответствует IP адресу 87.250.250.11. Аналогично, выполняем для других сайтов.

Редактирование файла /etc/hosts

Редактировать файл /etc/hosts нужно осторожно, чтобы ничего не испортить, так как это системный файл и важно не нарушать его синтаксис. Откройте файл для редактирования, для этого выполните в командной строке:

Sudo gedit /etc/hosts

Содержимое файла выглядит примерно следующим образом:

127.0.0.1 localhost::1 mycomp localhost6.localdomain6 localhost6 127.0.1.1 mycomp # The following lines are desirable for IPv6 capable hosts::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ...

Синтаксис у файла /etc/hosts очень простой:

IP-адрес имя-хоста [псевдонимы, ...]

Добавим в файл новые строки для разных сайтов:

74.125.232.19 google.ru g 94.100.191.203 mail.ru m 194.186.36.211 rbc.ru r 87.250.250.11 yandex.ru y

Сохраните и закройте файл. Мы прописали соответствия между IP адресами, именами сайтов и их псевдонимами. Теперь перейдите в браузер и в адресной строке введите просто «g», должен открыться сайт google.ru. Чтобы открыть mail.ru введите просто «m», для rbc.ru — просто «r», yandex.ru — «y».

Малоизвестная возможность под названием "файл hosts" может быть использована для модификации вашей системы в зависимости от ваших нужд. Нужно ли вам создать сокращения, заблокировать веб-сайты или что-то еще, все это вы можете сделать с помощью hosts-файла.

Но как производить в нем изменения? Здесь мы расскажем вам, как, и приведем несколько примеров использования, чтобы вы могли начать использование файла прямо сейчас.

Что такое файл hosts?

Если говорить понятным языком, то hosts-файл - это простой текстовый файл, который используется в любой операционной системе для перевода имен хостов в IP-адреса. Когда вы набираете имя хоста - например, facebook.com или myubuntu.ru - ваша система проверит файл hosts, чтобы получить IP-адрес, который требуется для соединения с соответствующим сервером. Но если вы откроете этот файл у себя на компьютере, вы быстро обнаружите, что там не хранится каталог всех сайтов Интернета. Там может быть всего лишь пара строк и ничего более. Ваша система сначала всегда проверяет hosts-файл, и все, что не задано в нем, будет найдено на DNS-серверах, заданные в ваших настройках сети (обычно это сервера вашего Интернет-провайдера).


Но это также означает и то, что вы можете использовать файл Hosts, чтобы добавлять в него адреса, которые не могут быть предоставлены DNS-серверами (например, это могут быть алиасы различных местоположений в вашей домашней сети, что иначе будет доступно только в том случае, если у вас в локальной сети установлен и настроен собственный DNS-сервер), или для обхода IP-адресов, предоставляемых вашими DNS-серверами по-умолчанию.

Например, если вы просите ваш браузер открыть facebook.com, DNS-сервера вернут IP-адрес Facebook на ваш компьютер. Но если вы вдруг захотите заблокировать Facebook на своем компьютере, вы можете добавить в hosts-файл запись, которая укажет вашему компьютеру, что все запросы на facebook.com нужно перенаправлять на какой-то другой IP-адрес, который отличается от настоящего IP-адреса Facebook. Чтобы заблокировать эту социальную сеть, вы можете просто прописать перевод запросов на facebook.com на IP-адрес 127.0.0.1, который будет всегда возвращаться к вашей системе. Вы много чего можете сделать с помощью этого файла, а это лишь самый простой пример - все зависит от вашего желания и потребностей.

Как отредактировать hosts-файл

В операционных системах Linux вы можете найти hosts-файл в /etc/hosts. Поскольку это обычный текстовый файл, вы можете просто использовать обычный текстовый редактор (неважно, терминальный или графический). К сожалению, есть только один графический инструмент, который предоставляет частичное управление файлом hosts - это приложение Domain Blocker от Linux Mint.

Эта программа работает, добавляя записи в ваш hosts-файл, которые перенаправляют указанные вами домены на 127.0.0.1 - то есть на ваш компьютер. Так или иначе, это все, что вы можете сделать с помощью Domain Blocker - все остальные способы использования файла hosts требуют от вас ручного редактирования файла с помощью текстового редактора.


Поскольку hosts - это системный файл, вам потребуются административные права, чтобы сохранять изменения в этот файл. Впрочем, вы можете отредактировать его с помощью команды терминала, такой как sudo nano /etc/hosts или gksu gedit /etc/hosts. Вам нужно использовать терминал, чтобы вы могли таким образом запустить требуемое приложение с административными правами. Вы также можете заменить nano или gedit на команду для запуска вашего любимого текстового редактора. Когда вы закончите редактирование файла в nano, вы можете нажать Ctrl+X, а затем y, чтобы подтвердить перезапись изменений

Как понять формат содержания файла hosts?

В файле hosts каждая запись находится на своей собственной строчке. Для целей нашей статьи вы можете использовать очень простой синтаксис - вы набираете IP-адрес, на который хотите перенаправлять имя хоста (домен), затем символ табуляции и собственно домен. Например, чтобы заблокировать Facebook, вы можете ввести 127.0.0.1facebook.com, где - нажатие Tab-клавиши на вашей клавиатуре. Чтобы убедиться в правильности ввода, вы можете также посмотреть на скриншот и сравнить его с тем, что находится у вас в файле.


Приведем другой пример использования этой возможности. Например, если у вас в домашней сети есть компьютер (допустим, его IP-адрес 192.168.1.10), на котором работает простой веб-сайт, делающий что-то полезное для вас. Вы можете ввести следующее в файл hosts: 192.168.1.10homeserver. Теперь, если вы откроете ваш браузер и просто введете в адресную строку http://homeserver , он автоматически отобразит вам содержание хоста 192.168.1.10. Это намного проще, чем вводить IP-адрес каждый раз.

Потенциальные проблемы

Единственная проблема, на которую я наткнулся, связана с работой браузера Chrome. Он стремится игнорировать hosts-файл, если вы не сделаете как минимум одну из двух возможных вещей:

  • вводить http:// перед каждым адресом. Например, если у вас заблокирован Facebook через hosts-файл, Chrome обойдет блокировку, если вы просто введете facebook.com в адресную строку. Если вы введете

Я говорил, что напишу про то как настроить виртуальные хосты в Ubuntu и изменить каталог для размещения сайтов. Ну вот, пишу.

В интернете много написано о виртуальных хостах и о том, как их настроить. Но где-то информация устаревшая, где то на половину рабочая. В итоге процедура, которая занимает от силы пять минут, растягивается на несколько часов. У меня та было. Поэтому, для того, чтобы снова не тратить много времени в следующий раз, когда мне это понадобится я и пишу эту статью.

Настройка корневого каталога для сайтов

По умолчанию Apache ищет интернет страницы в /var/www/html . Но для пользователя это может быть неудобно. Поэтому при желании корневой каталог можно сменить. Я например, для своих сайтов буду использовать папку public_html в домашнем каталоге. Кроме того, я сразу же создам папку для тестового сайта testsite.loc и непосредственно папку, в которой будут находится файлы сайта www . То есть нужно создать такую структуру каталогов: /public_html/testsite.loc/www/ . Можно сделать это через файловый менеджер, можно через терминал:

Mkdir -p public_html/testsite.loc/www

Сразу создаем простую тестовую страницу index.html

Настройка виртуальных хостов

Привет!!

И сохраняем ее в папку www.

Теперь редактируем файл виртуального хоста 000-default.conf , чтобы указать Apache где мы теперь размещаем сайты:

Sudo gedit /etc/apache2/sites-available/000-default.conf

В открывшимся файле находим строчку, которая начинается с DocumentRoot и меняем путь на новый: /home/user/public_html/ . Где user — ваше имя пользователя.

Сохраняем файл и закрываем редактор.

Внесем изменения в файл настроек apache2.conf :

Sudo gedit /etc/apache2/apache2.conf

Добавляем в открывшийся файл такой блок:

Options Indexes FollowSymLinks AllowOverride None Require all granted

Опять же, не забываем заменить user на свое имя пользователя. Сохраняем файл.

Создаем файл конфигурации нового хоста. Для этого скопируем стандартный файл 000-default.conf и переименуем его на testsite.conf :

Sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/testsite.conf

Теперь отредактируем его:

Sudo gedit /etc/apache2/sites-available/testsite.conf

Для удобства можно удалить все закомментированные строки (которые начинаются с #)

Добавляем «ServerName testsite.loc»

Добавляем «ServerAlias www.testsite.loc»

В DocumentRoot указываем путь к каталогу с файлами сайта.

Сохраняем изменения.

И включаем сайт:

Sudo a2ensite testsite.conf

Перезагружаем Apache:

Service apache2 reload

Файл hosts

Для того, чтобы перенаправлять запросы браузера на наш сервер. Отредактируем файл hosts:

Sudo gedit /etc/hosts

В первой строке через пробел, рядом с localhost дописываем домены нашего сайта testsite.loc и www.testsite.loc

Сохраняем изменения

Можем проверить результат нашей работы. Набираем в браузере адрес нашего сайта — testsite.loc .

Права на папки

Сервер Apache работает от группы и пользователя www-data . В домашнем каталоге же, владелец файлов текущий пользователь. Поэтому, чтобы не возникало проблем, нужно на файлы и папки внутри public_html и на ее саму изменить права. Для этого вводим в терминале.

Как изменить и управлять файлом hosts в Linux Малоизвестная возможность под названием "файл hosts" может быть использована для модификации вашей системы в зависимости от ваших нужд. Нужно ли вам создать сокращения, заблокировать веб-сайты или что-то еще, все это вы можете сделать с помощью hosts-файла.Но как производить в нем изменения? Здесь мы расскажем вам, как, и приведем несколько примеров использования, чтобы вы могли начать использование файла прямо сейчас.Что такое файл hosts?Если говорить понятным языком, то hosts-файл - это простой текстовый файл, который используется в любой операционной системе для перевода имен хостов в IP-адреса. Когда вы набираете имя хоста - например, facebook.com или myubuntu.ru - ваша система проверит файл hosts, чтобы получить IP-адрес, который требуется для соединения с соответствующим сервером. Но если вы откроете этот файл у себя на компьютере, вы быстро обнаружите, что там не хранится каталог всех сайтов Интернета. Там может быть всего лишь пара строк и ничего более. Ваша система сначала всегда проверяет hosts-файл, и все, что не задано в нем, будет найдено на DNS-серверах, заданные в ваших настройках сети (обычно это сервера вашего Интернет-провайдера).Но это также означает и то, что вы можете использовать файл Hosts, чтобы добавлять в него адреса, которые не могут быть предоставлены DNS-серверами (например, это могут быть алиасы различных местоположений в вашей домашней сети, что иначе будет доступно только в том случае, если у вас в локальной сети установлен и настроен собственный DNS-сервер), или для обхода IP-адресов, предоставляемых вашими DNS-серверами по-умолчанию.Например, если вы просите ваш браузер открыть facebook.com , DNS-сервера вернут IP-адрес Facebook на ваш компьютер. Но если вы вдруг захотите заблокировать Facebook на своем компьютере, вы можете добавить в hosts-файл запись, которая укажет вашему компьютеру, что все запросы на facebook.com нужно перенаправлять на какой-то другой IP-адрес, который отличается от настоящего IP-адреса Facebook. Чтобы заблокировать эту социальную сеть, вы можете просто прописать перевод запросов на facebook.com на IP-адрес 127.0.0.1 , который будет всегда возвращаться к вашей системе. Вы много чего можете сделать с помощью этого файла, а это лишь самый простой пример - все зависит от вашего желания и потребностей.Как отредактировать hosts-файлВ операционных системах Linux вы можете найти hosts-файл в /etc/hosts. Поскольку это обычный текстовый файл, вы можете просто использовать обычный текстовый редактор (неважно, терминальный или графический). К сожалению, есть только один графический инструмент, который предоставляет частичное управление файлом hosts - это приложение Domain Blocker от Linux Mint.Эта программа работает, добавляя записи в ваш hosts-файл, которые перенаправляют указанные вами домены на 127.0.0.1 - то есть на ваш компьютер. Так или иначе, это все, что вы можете сделать с помощью Domain Blocker - все остальные способы использования файла hosts требуют от вас ручного редактирования файла с помощью текстового редактора.Поскольку hosts - это системный файл, вам потребуются административные права, чтобы сохранять изменения в этот файл. Впрочем, вы можете отредактировать его с помощью команды терминала, такой как sudo nano /etc/hosts или gksu gedit /etc/hosts. Вам нужно использовать терминал, чтобы вы могли таким образом запустить требуемое приложение с административными правами. Вы также можете заменить nano или gedit на команду для запуска вашего любимого текстового редактора. Когда вы закончите редактирование файла в nano, вы можете нажать Ctrl+X, а затем y, чтобы подтвердить перезапись измененийКак понять формат содержания файла hosts?В файле hosts каждая запись находится на своей собственной строчке. Для целей нашей статьи вы можете использовать очень простой синтаксис - вы набираете IP-адрес, на который хотите перенаправлять имя хоста (домен), затем символ табуляции и собственно домен. Например, чтобы заблокировать Facebook, вы можете ввести 127.0.0.1facebook.com , где - нажатие Tab-клавиши на вашей клавиатуре. Чтобы убедиться в правильности ввода, вы можете также посмотреть на скриншот и сравнить его с тем, что находится у вас в файле.Приведем другой пример использования этой возможности. Например, если у вас в домашней сети есть компьютер (допустим, его IP-адрес 192.168.1.10), на котором работает простой веб-сайт, делающий что-то полезное для вас. Вы можете ввести следующее в файл hosts: 192.168.1.10homeserver. Теперь, если вы откроете ваш браузер и просто введете в адресную строку http://homeserver, он автоматически отобразит вам содержание хоста 192.168.1.10 . Это намного проще, чем вводить IP-адрес каждый раз.Потенциальные проблемыЕдинственная проблема, на которую я наткнулся, связана с работой браузера Chrome. Он стремится игнорировать hosts-файл, если вы не сделаете как минимум одну из двух возможных вещей:вводить http:// перед каждым адресом. Например, если у вас заблокирован Facebook через hosts-файл, Chrome обойдет блокировку, если вы просто введете

НАЗВАНИЕ
hosts - статическая таблица преобразования IP-адресов в
имена машин

СИНТАКСИС
/etc/hosts

ОПИСАНИЕ
На это странице содержится описание формата файла
/etc/hosts. Этот файл содержит текст, описывающий
соответствие IP-адресов и имен машин (по одному адресу в
строке). Для каждой машины в одной строке должна
присутствовать следующая информация:

IP_адрес каноническое_имя алиасы

Поля этой записи отделяются друг от друга пробелами и/или
табуляциями. Текст, начинающийся с символа "#", до конца
строки считается комментарием и игнорируется. Имена машин
могут содержать любой печатный символ, кроме разделителя
полей, символа новой строки или символа комментария.
Алиасы представляют собой измененные, альтернативные,
укороченные или обобщенные формы имен машин (например,
localhost). Формат таблицы имен машин описан в RFC 952.

Сервер доменных имен интернет Berkeley (BIND) содержит
сервер интернет-имен для машин UNIX. Он заменяет файл
/etc/hosts или систему поиска машин и освобождает машину
от необходимости полного подробного заполнения файла
/etc/hosts.

Несмотря на то, что функции этой таблицы давно исполняются
DNS, она все еще используется для

Начальной загрузки системы.
Во многих системах есть небольшая таблица имен
машин, содержащая информацию об именах и адресах
важных машин в локальной сети. Это полезно в том
случае, если DNS не работает, например, при
загрузке системы.

NIS Сайты, работающие с NIS, используют таблицу имен
машин в качестве источника информации для базы
данных машин NIS. Несмотря на то, что NIS может
работать и с DNS, многие NIS-сайты используют
таблицу имен машин со строками для всех машин
локальной сети в качестве подстраховки.

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

ПРИМЕР
127.0.0.1 localhost
192.168.1.10 foo.mydomain.org foo
192.168.1.13 bar.mydomain.org bar
216.234.231.5 master.debian.org master
205.230.163.103 www.opensource.org

ИСТОРИЧЕСКАЯ СПРАВКА
Перед введением DNS, таблица имен машин была единственным
средством для преобразования имен машин в адреса в
растущей сети интернет. На самом деле, этот файл
создавался на основе официальной базы данных машин,
поддерживаемой в Сетевом информационном контрольном центре
(NIC), а также на основе локальных исправлений, содержащих
неофициальные алиасы и/или информацию о неизвестных
машинах. NIC больше не поддерживает файлы hosts.txt,
однако, во время написания этой страницы (около 2000 года)
существовали старые файлы hosts.txt на WWW. Они были
найдены; даты их размещения - 92, 94 и 95 годы.