Введение

Веб-сервер Apache является самым популярным средством размещения веб-контента в интернете. На его счету более половины всех действующих веб-сайтов. Это очень мощный и гибкий инструмент.

Apache разделяет свои функциональные возможности и компоненты на отдельные части, которые могут быть настроены и сконфигурированы независимо друг от друга. Базовая часть, которая отвечает за отдельный сайт или домен называется виртуальным хостом (virtual host).

Эта система позволяет администратору использовать один сервер, чтобы раздавать несколько сайтов используя один интерфейс или IP. Это удобно для тех, кто хочет использовать один VPS для хранения нескольких сайтов.

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

В этом руководстве мы расскажем, как настроить виртуальные хосты в Apache на VPS с Ubuntu 14.04. В процессе вы узнаете, как отображать разный контент для разных пользователей в зависимости от того, какой домен они запрашивают.

Что на нужно?

Перед тем, как начинать, нам нужен пользователь не Root. Если у Вас его нету, тогда вот мануал, как его быстро сделать:

Создаем пользователя

[code]
adduser demo
[/code]

Теперь добавим привилегии супер пользователя

[code]

gpasswd -a demo sudo

[/code]

Теперь у нас есть нужная нам учетная запись с правильными привилегиями.

Также у Вас должен быть установлен Apache. Если этого не сделано, то его можно установить следующими командами:

[code]sudo apt-get update
sudo apt-get install apache2[/code]

И теперь, когда у нас все готово, мы можем приступать к настройке.

В данном уроке будем делать на примере двух сайтов www.test.com и www.test1.com. Соответственно меняете на свои.

Веб директория по умолчанию /var/www/. В эту директорию создаем test.com и test1.com и в обе создаем еще по одному уровню /public_html/

Затем нужно установить владельца на эти директории.

[code]sudo chown -R $USER:$USER /var/www/test.com/public_html
sudo chown -R $USER:$USER /var/www/test1.com/public_html[/code]

Переменная $USER содержит имя пользователя, под которым вы залогинены в текущий момент. Теперь текущий пользователь владеет директориями public_html, в которых мы будем хранить контент.

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

[code]sudo chmod -R 755 /var/www[/code]

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

[box type=»info» align=»» class=»» width=»»]Файлы виртуальных хостов задают их конфигурацию, и определяют, как именно веб-сервер Apache будет отвечать на запросы к разным доменам. По умолчанию, Apache имеет файл виртуального хоста 000-default.conf, который мы можем использовать в качестве отправной точки. Мы собираемся скопировать его, чтобы создать файлы виртуального хоста для каждого из наших доменов. Мы начнем с одного домена, сконфигурируем его, скопируем для другого домена, и затем снова сделаем необходимые правки. Конфигурация Ubuntu по-умолчанию требует, чтобы каждый файл виртуального хоста заканчивался расширением .conf.[/box]

Копируем файл:

[code]sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/test.com.conf[/code]

 

Открываем его с root правами:

[code]sudo nano /etc/apache2/sites-available/test.com.conf[/code]

И файл должен быть с таким содержимым:

[code]<VirtualHost *:80>
ServerAdmin [email protected]
ServerName test.com
ServerAlias www.test.com
DocumentRoot /var/www/test.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>[/code]

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

Включение новых виртуальных хостов

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

Мы можем использовать утилиту a2ensite для включения каждого из наших сайтов следующим образом:

[code]sudo a2ensite test.com.conf[/code]

Теперь для того, чтобы изменения вступили в силу, нам нужно перезагрузить Apache.

[code]sudo service apache2 restart[/code]

Скорее всего у Вас может быть такая ошибка, но она не будет влиять на работу вашего сервера.

[code] * Restarting web server apache2
AH00558: apache2: Could not reliably determine the server’s fully qualified domain name…..[/code]

Это все. Если возникли вопросы, то их можно задать здесь.

Вопросы