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

Что такое виртуальные хосты?

Виртуальные хосты используются для размещения нескольких доменов на одном 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:

1domain2.com:

2

Готово!

Чтобы добавить больше виртуальных хостов, просто повторите вышеописанный процесс, создав новый document root с соответствующим доменным именем и активировав новый файл виртуального хоста.

Tags: , , ,

Добавить комментарий