Что такое виртуальный хост?
Виртуальные хосты (англ. Virtual Hosts) используются для размещения нескольких доменов на одном IP-адресе. Это особенно необходимо тем пользователям, которые хотят запустить несколько сайтов на одном виртуальном выделенном сервере. В зависимости от запрашиваемого домена посетитель будет получать соответствующую информацию. Ограничений на количество виртуальных хостов, которые можно добавить на один VPS, нет.
Требования
Для выполнения данного руководства необходимы привилегии root; чтобы узнать, как создать пользователя с такими привилегиями, читайте руководство «Начальная установка сервера CentOS 6». В данном руководстве пользователь будет называться www, но для него можно выбрать любое удобное имя.
Кроме того, понадобится предварительно установленный и запущенный сервер Apache. Если Apache еще не установлен, используйте команду:
sudo yum install httpd
1: Создайте новый каталог
Для начала нужно создать каталог, в котором будут храниться данные нового сайта.
Это так называемый root-каталог сайта (раздел Document Root в конфигурационном файле Apache). При помощи флага -p команда автоматически создаст все необходимые каталоги высшего порядка для нового каталога.
sudo mkdir -p /var/www/example.com/public_html
Теперь нужно указать подтвержденное доменное имя или IP-адрес, чтобы проверить, работает ли виртуальный хост.
Примечание: инструкции по настройке локальных хостов можно найти в разделе 6 данного руководства.
2: Передайте привилегии
Теперь нужно передать все права на только что созданный каталог ранее созданному пользователю (см. раздел Требования):
sudo chown -R www:www /var/www/example.com/public_html
Кроме того, необходимо убедиться, что все желающие имеют право на чтение новых файлов.
sudo chmod 755 /var/www
Готово!
3: Создайте страницу сайта
На данном этапе нужно создать новый файл с именем index.html в конфигурационном каталоге.
sudo vi /var/www/example.com/public_html/index.html
Внесите в данный файл некоторый текст, чтобы при переходе на IP на странице отображался контент.
<html>
<head>
<title>www.example.com</title>
</head>
<body>
<h1>Success: You Have Set Up a Virtual Host</h1>
</body>
</html>
Сохраните и закройте файл.
4: Активируйте виртуальный хост
Далее нужно открыть конфигурационный файл Apache:
sudo vi /etc/httpd/conf/httpd.conf
В нем нужно выполнить несколько изменений. Просто убедитесь, что эти строки имеют такой вид:
#Listen 12.34.56.78:80
Listen 80
Перейдите в конец файла и найдите раздел Virtual Hosts:
NameVirtualHost *:80
#
# NOTE: NameVirtualHost cannot be used without a port specifier
# (e.g. :80) if mod_ssl is being used, due to the nature of the
# SSL protocol.
#
#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for requests without a known
# server name.
#
<VirtualHost *:80>
ServerAdmin webmaster@example.com
DocumentRoot /var/www/example.com/public_html
ServerName www.example.com
ServerAlias example.com
ErrorLog /var/www/example.com/error.log
CustomLog /var/www/example.com/requests.log
</VirtualHost>
Самыми важными являются строки NameVirtualHost, Virtual Host, Document Root и Server Name; рассмотрим их подробнее:
- Строку NameVirtualHost нужно раскомментировать, не внося никаких изменений. Символ звездочки значит, что IP-адресом любой IP адрес, подключившийся к порту 80, будет виртуальным хостом. Система, как правило, имеет только один IP-адрес, однако на всякий случай можете заменить символ звездочки вашим IP.
- Числовые значения до строки VirtualHost *:80 можно оставить как есть. Раскомментируйте все строки, начиная с VirtualHost.
- Не меняйте строку VirtualHost *:80 – ее значение должно совпадать с разделом NameVirtual Host. Если же все-таки ее значение было изменено, не забудьте сделать то же самое и в разделе NameVirtual Host.
- Document Root – очень важный раздел! В Document Root укажите расширение нового каталога, созданного в первом разделе статьи. Если Document Root указан неверно или отсутствует, настроить виртуальный хост будет невозможно.
- Раздел Server Name не менее важен; он содержит доменное имя виртуального хоста (например, www.example.com). Обратите внимание: домен нужно указывает полностью, а все возможные вариации нужно поместить в следующую строку.
- ServerAlias – строка конфигурационного файла, которой нет по умолчанию. Внеся ее в файл, вы получите возможность указать список возможных псевдонимов доменного имени (например, без www).
Остальные строки в этом блоке кода нужны уже не для настройки виртуального хоста:
- Server admin указывает адрес электронной почты вебмастера.
- ErrorLog и CustomLog – это логи, которые отслеживают сервер на возникновение ошибок. ErrorLog охватывает проблемы, возникшие при поддержке сервера, а CustomLog отслеживает запросы к серверу. В строках ErrorLog и CustomLog можно задать пользовательские логи.
- Убедитесь, что строка VirtualHost раскомментирована; затем сохраните и закройте файл
5: Перезапустите Apache
В ходе настройки виртуального хоста было внесено немало изменений, но ни одно из них не вступит в силу до тех пор, пока веб-сервер Apache не будет перезапущен.
Остановите все процессы Apache:
sudo apachectl -k stop
Затем запустите Apache снова:
sudo /etc/init.d/httpd start
Может появиться следующая ошибка:
Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
Тем не менее, это просто предупреждение; теперь можно без проблем получить доступ к виртуальному хосту.
6: Настройка локальных хостов (дополнительно)
Если вы направили доменное имя на IP-адрес виртуального сервера, можете пропустить этот шаг – устанавливать локальные хосты не нужно. Но чтобы проверить работу новых виртуальных хостов, не подключаясь при этом к домену, можно настроить на компьютере локальные хосты.
Для выполнения этого раздела нужен пароль администратора компьютера, в противном случае для проверки виртуальных хостов придется использовать имя домена.
Пользователям Mac или Linux нужно войти в систему как пользователь root (su) и открыть файл hosts:
nano /etc/hosts
Примечание: пользователи Windows могут найти все необходимые инструкции на сайте Microsoft.
В этот файл можно внести все данные локальных хостов, как показано в примере ниже. Пока эти строки находится в файле, example.com будет выводить всю информацию виртуальных хостов для соответствующего IP.
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
#Virtual Hosts
12.34.56.789 www.example.com
Во избежание возможной путаницы рекомендуется удалить эти составленные адреса из папки локальных хостов после выполнения проверки.
7: Итоги
Завершив настройку виртуального хоста, можно посмотреть, как он работает в сети. Для этого введите в браузер ip-адрес в формате: http://12.34.56.789.
Готово!
Чтобы добавить больше виртуальных хостов, просто повторите вышеописанный процесс, создав новый document root с соответствующим доменным именем и активировав новый файл виртуального хоста.
<VirtualHost *:80>
ServerAdmin webmaster@example.com
DocumentRoot /var/www/example.com/public_html
ServerName www.example.com
ServerAlias example.com
ErrorLog /etc/var/www/example.com/error.log
CustomLog /var/www/example.com/requests.log
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@example.org
DocumentRoot /var/www/example.org/public_html
ServerName www.example.org
ServerAlias example.org
ErrorLog /var/www/example.org/error.log
CustomLog /var/www/example.orgrequests.log
</VirtualHost>
Читайте также
После настройки виртуальных хостов можно приступить к созданию SSL-сертификата или установить FTP-сервер.