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

Published by 1 Comment

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

Виртуальный хост позволяет разместить несколько доменов на одном IP-адресе/сервере. Именно благодаря этой технологии пользователи могут размещать несколько сайтов на одном виртуальном выделенном сервере. Если на одном сервере одновременно находятся несколько сайтов, но при этом виртуальные хосты не настроены, все домены будут отображать одинаковую информацию. Благодаря корректно настроенным виртуальным хостам пользователи могут попасть на нужный сайт, поскольку хост выводит данные согласно запрашиваемому домену. Один сервер может содержать неограниченное количество хостов (точнее, это количество ограничивается только ресурсами машины).

Требования

Для выполнения команд данного руководства нужны привилегии root. Можно либо войти в систему как root пользователь, либо создать альтернативного пользователя с расширенными привилегиями (для этого читайте данное руководство).

Кроме того, нужно заранее установить и запустить Apache. Для этого используйте команду:

sudo apt-get install apache2

Если на сервере будут размещены сайты, зависимые от PHP или MySQL (такие как WordPress), рекомендуется установить группу программ LAMP (Linux, Apache, MySQL, PHP):

sudo tasksel install lamp-server

Что значит красный?

Строки руководства, выделенные красным, пользователь должен ввести самостоятельно или отредактировать. Остальной код можно просто скопировать и вставить.

1: Создание нового каталога

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

sudo mkdir -p /var/www/example.com

Использованный в команде флаг –р автоматически сгенерирует все каталоги высшего уровня для нового каталога.

Обратите внимание: в данном руководстве в качестве доменного имени используется example.com. Не забудьте заменить этот заполнитель своим доменным именем.

2: Привилегии

Теперь нужно передать все права на каталог пользователю Apache:

sudo chown -R www-data:www-data /var/www/example.com

Затем нужно убедиться, что все имеют право на чтение данного каталога:

sudo chmod -R 755 /var/www

3: Создание страницы

Теперь создайте файл index.html; он понадобится для тестирования виртуального хоста.

Примечание: для начала убедитесь, что на сервере установлен редактор nano.

sudo apt-get install nano

Создайте файл index.html:

sudo nano /var/www/example.com/index.html

Скопируйте и вставьте в только что созданный файл нижеприведенный блок кода:

<html>
<head>
<title>www.example.com<title>
</head>
<body>
<h1>Success: You Have Set Up a Virtual Host</h1>
</body>
</html>

4: Создание виртуального хоста

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

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf

Обратите внимание: версия Ubuntu 13.10 требует вносить в конец этой команды расширение .conf.

5: Редактирование конфигурационного файла

На данном этапе необходимо отредактировать конфигурационный файл виртуального хоста. Откройте этот файл:

sudo nano /etc/apache2/sites-available/example.com.conf

При этом на экране появится подобное сообщение:

# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf

Для начала раскомментируйте (удалите символ #) строку ServerName и внсите в нее свой домен. Строка должна выглядеть так:

ServerName example.com

Чтобы сайт был доступен по нескольким именам (к примеру, с www), внесите после строки ServerName строку ServerAlias и задайте в ней дополнительные имена:

ServerAlias www.example.com

Затем задайте DocumentRoot, каталог для файлов данного виртуального хоста (это каталог, созданный в разделе 1).

DocumentRoot /var/www/example.com

Теперь файл должен содержать такой блок кода:

ServerAdmin webmaster@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com

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

Чтобы включить хост, используйте команду:

sudo a2ensite example.com

Перезапустите веб-сервер Apache, чтобы изменения вступили в силу:

sudo service apache2 restart

Готово! Чтобы добавить еще несколько виртуальных хостов, просто повторите все вышеперечисленные действия.

Tags: , , , ,

1 комментарий

  • GenaP:

    Многоуважаемый автор забыл добавить, что еще нужно в файле /etc/hosts прописать серверное имя и IP-адрес, по которому он будет доступен

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>