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

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

Виртуальные хосты (англ. 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-сервер.

Tags: , , ,

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