Что такое виртуальные хосты?
Виртуальные хосты используются для размещения нескольких доменов на одном IP-адресе. Это особенно важно для пользователей, которые хотят запустить несколько сайтов на одном сервере. На один сервер можно добавить неограниченное количество виртуальных хостов.
Требования
Для выполнения руководства нужна учетная запись пользователя с расширенными привилегиями или привилегиями root. Подробнее об этом можно узнать в статье «Начальная настройка сервера Arch Linux».
Кроме того, нужно предварительно установить Apache. Для этого используйте команду:
sudo pacman -S apache
1: Создание нового каталога
Сначала нужно создать каталог, в котором будет храниться информация нового сайта. Это – так называемый root-каталог (раздел Document Root в файле конфигурации Apache).
sudo mkdir /srv/http/domain1.com
sudo mkdir /srv/http/domain2.com
На данном этапе нужно указать доменное имя или IP-адрес, чтобы проверить работу виртуальных хостов. В данном руководстве в качестве доменных имен используются domain1.com и domain2.com.
Если для проверки работы хоста вы используете неутвержденное доменное имя, обратитесь к разделу 4 данного руководства, который содержит инструкции по запуску хостов на локальном компьютере.
2: Создание страницы
Создайте тестовую страницу в новом каталоге хоста.
sudo nano /srv/http/domain1.com/index.html
Внесите в файл следующий код, чтобы при переходе на IP на странице отображался некоторый контент.
<html>
<head>
<title>domain1.com</title>
</head>
<body>
<h1>Success: You Have Set Up a Virtual Host</h1>
</body>
</html>
Сохраните и закройте файл.
Повторите те же действия для второго домена, заменив domain1 на domain2.
sudo nano /srv/http/domain2.com/index.html
3: Настройка виртуальных хостов
Прежде чем приступить к настройке виртуального хоста, нужно убедиться, что сервер поддерживает виртуальные хосты. Откройте конфигурации Apache:
sudo nano /etc/httpd/conf/httpd.conf
Убедитесь, что следующая строка раскомментирована (она находится в самом конце файла):
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
Получить доступ к файлу виртуального хоста можно в папке Apache:
sudo nano /etc/httpd/conf/extra/httpd-vhosts.conf
Стандартные конфигурации виртуального хоста для Arch Linux имеют следующий вид:
<VirtualHost *:80>
ServerAdmin webmaster@domain1.com
DocumentRoot "/srv/http/domain1.com"
ServerName domain1.com
ServerAlias www.domain1.com
ErrorLog "/var/log/httpd/domain1.com-error_log"
CustomLog "/var/log/httpd/domain1.com-access_log" common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@domain2.com
DocumentRoot "/srv/http/domain2.com"
ServerName domain2.com
ErrorLog "/var/log/httpd/domain2.com-error_log"
CustomLog "/var/log/httpd/domain2.com-access_log" common
</VirtualHost>
В этом файле нужно настроить виртуальные хосты.
Изменяя данные в разделах конфигурационного файла виртуального хоста, можно отобразить два отдельных сайта, размещенных на одном IP-адресе. Главные разделы в этом случае – Document Root и ServerName.
- Document Root ссылается на каталог, содержащий файлы сервера. Виртуальный хост не сможет работать без такого каталога. В данном случае это каталог, созданный в разделе 1.
- Server Name – это доменное имя сайта; здесь можно указать, какой сайт должен обслуживаться Document Root. Чтобы добавить www в домен, укажите это в строке ServerAlias.
Настроив виртуальные хосты, сохраните и закройте файл, а затем проверьте настройки виртуального хоста:
apachectl configtest
4: Перезапуск Apache
В настройки было внесено довольно много изменений. Но эти настройки не вступят в исполнение до тех пор, пока Apache не будет перезапущен.
Но прежде чем перезапустить Apache, нужно поместить доменное имя в файле hosts. При использовании FQDN укажите доменное имя после IP-адреса.
sudo nano /etc/hosts
127.0.0.1 domain1.com
127.0.0.1 domain2.com
Если же FQDN нет, поместите в конец строки имя, которое указано в файле /etc/hostname. Без этого дополнения Apache не перезапустится.
127.0.0.1 localhost.localdomain localhost droplet1
Сохраните файл и перезапустите Apache:
sudo rc.d restart httpd
5: Настройка локальных хостов (опционально)
Если вы используете для виртуальных хостов зарегистрированные домены, пропустите данный раздел – устанавливать локальные хосты не нужно.
Однако, чтобы протестировать работу новых виртуальных хостов, не подключаясь при этом к домену, можно настроить на компьютере локальные хосты.
Примечание: прежде чем начать выполнять действия, описанные в данном разделе, убедитесь, что вы перешли с сервера на локальную машину.
Для выполнения следующих действий нужно знать пароль администратора компьютера, в противном случае для проверки виртуальных хостов придется использовать имя домена.
Пользователям Mac или Linux нужно войти в систему как пользователь root (su) и открыть файл hosts:
sudo nano /etc/hosts
Примечание: пользователи Windows могут найти все необходимые инструкции на сайте Microsoft.
В этот файл внесите все данные локальных хостов, как показано в примере ниже. Пока выделенные красным строки находится в этом файле, domain1.com и domain2.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 domain1.com
12.33.44.555 domain2.com
Однако после выполнения проверки рекомендуется удалить эти адреса из папки локальных хостов во избежание возможной путаницы.
6: Итоги
После настройки виртуального хоста, можно посмотреть, как он работает в сети. Для этого введите в браузер имя сервера (например, domain1.com).
На экране появится:
domain1.com:
Готово!
Чтобы добавить больше виртуальных хостов, просто повторите вышеописанный процесс, создав новый document root с соответствующим доменным именем и активировав новый файл виртуального хоста.