Apache виртуальный хост доступ с удаленной машины. Настройка виртуальных хостов Apache в macOS. Создание структуры каталогов

В предидущей статье мы разобрались как установить apache . Теперь давайте разберём зачем создают на apache виртуальный хост и как проводится настройка виртуальных хостов apache windows.

И так давайте разберёмся зачем нам нужен виртуальный хост. После установки apache мы можем к нему обращаться набрав в браузере localhost. А хотелось бы что бы мы могли держать на сервере несколько сайтов и обращаться к ним по отдельному url. Для этого должна быть сделана на apache настройка виртуальных хостов. Для начала создадим на пример на диске С папку "www.Zametki". В папке С:\Zametki создадим три папки conf, htdocs, logs, Errors . В папке conf создадим файл zametki.conf. Откроем файл С:\www.Zametki\conf\zametki.conf и опишем наш виртуальный хост:

#Виртуальный хост zametki <VirtualHost *:80> #Настройки сервера ServerName www.zametki ServerAlias zametki ServerAdmin webmaster@zametki #Журналы сервера ErrorLog "c:/www.Zametki/logs/error.log" CustomLog "c:/www.Zametki/logs/access.log" common #корневая папка DocumentRoot "c:/www.Zametki/htdocs" <Directory "c:/www.Zametki/htdocs"> Options Indexes FollowSymLinks AllowOverride All Order deny,allow Allow from all </Directory> </VirtualHost>

Сохраняем файл zametki.conf. Теперь нам осталось подключить его к основному файлу конфигурации сервера httpd.conf. Он находится по адресу C:\Program Files\Apache Software Foundation\Apache2.2\conf. Открываем его и для начала дописываем в самый низ файла:

NameVirtualHost *:80 <VirtualHost *:80> ServerName localhost ServerAdmin admin@localhost </VirtualHost>

Мы создали виртуальный хост по умолчанию. Теперь подключим созданный нами хост. Пишем в тот же файл в самый низ документа:

# www.zametki Include "c:/www.Zametki/conf/zametki.conf"

Теперь нам осталось создать запись о нашем хосте в файле hosts по адресу C:\WINDOWS\system32\drivers\etc. Это будет замена DNS серверу.

//запись по умолчанию виндовс 127.0.0.1 localhost //наша запись 127.0.0.1 zametki www.zametki

Создание виртуальных папок Apache

За создание виртуальных папок у нас отвечает директива Alias. Создадим папку для хранения файлов с ошибками Apache. Добавим в файл zametki.conf в директиву <VirtualHost> … </VirtualHost> нашего виртуального хоста следующее:

# Папка с сообщениями об ошибках //назначаем алиас(псевдоним) для папки Alias /err/ "c:/www.Zametki/Errors/" <Directory "c:/www.Zametki/Errors/"> Options Indexes FollowSymLinks AllowOverride All Order deny,allow Allow from all </Directory>

Создание своих страниц с ошибками Apache

За сообщение об ошибках у нас отвечает директива ErrorDocument. Создадим в папке c:/www.Zametki/Errors/ файл например 404.html. Это будет наша html страничка, выводящаяся при ошибке сервера 404. В файл zametki.conf добавим следующие строки:

# Сообщения об ошибках ErrorDocument 404 /err/404.html

Apache является одним из самых популярных веб-серверов в мире.

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

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

Данное руководство поможет настроить виртуальные хосты на выделенном сервере Ubuntu 16.04, что позволит обслуживать разный контент в зависимости от запрашиваемого домена.

Требования

  • Предварительно настроенный сервер Ubuntu 16.04.
  • Не-root пользователь с расширенными привилегиями.
  • Установленный веб-сервер Apache:

sudo apt-get update
sudo apt-get install apache2

Примечание : В руководстве используются условные домены example.com и test.com; не забудьте заменить их своим доменным именем.

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

1: Создание структуры каталогов

Для начала нужно создать структуру каталогов, в которой будут храниться данные сайта.

Каталог document root (каталог, содержащий контент для Apache) по умолчанию находится в /var/www; в нём нужно создать отдельный каталог для каждого виртуального хоста. В каждом таком каталоге будет размещен каталог public_html, в котором будут находиться нужные файлы. Благодаря этому хостинг становится более гибким.

Необходимые каталоги можно создать при помощи следующих команд:

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

Примечание : Не забудьте указать свои доменные имена в командах.

2: Настройка прав

Структура каталогов готова, но все они принадлежат пользователю root. Чтобы не-рутовый пользователь мог вносить изменения в файлы веб-каталога, нужно изменить права на эти файлы при помощи следующей команды:

sudo chown -R $USER:$USER /var/www/example.com/public_html
sudo chown -R $USER:$USER /var/www/test.com/public_html

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

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

sudo chmod -R 755 /var/www

Теперь все права установлены верно; можно приступать к созданию контента в специальных каталогах.

3: Создание демо-страниц для виртуальных хостов

Создайте тестовый контент; для пробной настройки хостов простых страниц будет достаточно. Просто создайте страницы index.html для каждого сайта.

Начнём с example.com; откройте файл index.html в текстовом редакторе:

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

В этом файле создайте простой HTML-документ, который указывает, к какому сайту подключена страница. В данном случае этот файл выглядит так:



Welcome to Example.com!




Сохраните и закройте файл.

Затем можно скопировать этот файл и использовать его как шаблон для второго сайта:

cp /var/www/example.com/public_html/index.html /var/www/test.com/public_html/index.html

Откройте скопированный файл и внесите соответствующие коррективы:

nano /var/www/test.com/public_html/index.html


Welcome to Test.com!



Сохраните и закройте файл. Теперь тестовые страницы готовы.

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

Файлы виртуальных хостов задают настройки отдельных сайтов и помогают Apache корректно отвечать на запросы.

Apache поставляется со стандартным файлом хоста по имени 000-default.conf, который можно использовать в качестве шаблона. Скопируйте его, чтобы создать виртуальный хост для каждого доменного имени.

Примечание : По умолчанию настройки Ubuntu требуют, чтобы файлы виртуальных хостов заканчивались на.conf.

Для начала скопируйте файл для первого домена:

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

Откройте файл в текстовом редакторе с привилегиями root:

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

С опущенными комментариями файл будет выглядеть примерно так:


ServerAdmin webmaster@localhost
DocumentRoot /var/www/html


Как видите, файл не такой уж объёмный. Теперь нужно внести данные о первом домене и добавить несколько директив. Этот виртуальный хост будет отвечать на запросы, отправляемые на стандартный HTTP-порт 80.

Сначала нужно изменить директиву ServerAdmin, указав электронный адрес администратора сайта.

ServerAdmin [email protected]

После этого нужно добавить две директивы. Первая – ServerName, которая определяет базовый домен, для которого предназначен хост. Вторая – ServerAlias, которая определяет псевдонимы домена (например, домен с префиксом www):

ServerName example.com
ServerAlias www.example.com

Осталось внести в файл хоста последнее изменение – указать нахождение document root этого домена. Укажите в DocumentRoot ранее созданный каталог:

DocumentRoot /var/www/example.com/public_html

В результате файл хоста выглядит так:


ServerAdmin [email protected]
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

Сохраните и закройте файл.

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

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

Откройте новый файл с привилегиями root в текстовом редакторе:

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

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


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

Сохраните и закройте файл.

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

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

К примеру, для этого можно использовать a2ensite:

sudo a2ensite example.com.conf
sudo a2ensite test.com.conf

Затем отключите стандартный виртуальный хост 000-default.conf:

sudo a2dissite 000-default.conf

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

sudo systemctl restart apache2

Обратите внимание: система Ubuntu 16.04 использует systemctl.

Также можно использовать команду:

sudo service apache2 restart

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

6: Настройка локальных хостов (опционально)

Если у вас нет доменного имени, и вместо настоящего вы использовали условный домен, вы можете протестировать настройки, временно отредактировав файл hosts на локальном компьютере. он будет перехватывать запросы на настроенные ранее домены и направлять их на VPS (то есть, выполнять работу DNS). Но этот метод работает только на локальной машине и подходит только для тестирования.

Примечание : Убедитесь, что вы перешли на локальную машину. Для выполнения данного раздела нужны учётные данные администратора.

В системах Mac или Linux отредактируйте файл hosts с привилегиями администратора.

sudo nano /etc/hosts

Примечание : Пользователи Windows могут найти необходимые инструкции по этой ссылке .

В этом файле нужно указать IP-адрес сервера, а затем доменное имя, которое будет использоваться для доступа к серверу.

К примеру, если IP-адрес сервера — 111.111.111.111, в конец файла хоста нужно внести следующие строки

127.0.0.1 localhost
127.0.1.1 guest-desktop
111.111.111.111 example.com
111.111.111.111 test.com

Теперь все запросы к example.com и test.com будут отправлены на локальный компьютер, а оттуда — на IP-адрес сервера.

Сохраните и закройте файл.

7: Результаты

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

http://example.com

В данном случае на экране появится сообщение:

Success! The example.com virtual host is working!

Примечание : Результат, появившийся на экране, зависит от содержания файла, созданного в разделе 3.

Точно так же нужно проверить и второй сайт:

На экране появится следующий результат:

Success! The test.com virtual host is working!

Если оба сайта работают, значит, виртуальные хосты успешно настроены. Если файл hosts на локальном компьютере был изменён, после тестирования удалите внесённые в него строки, чтобы не засорять файл ненужными записями.

Заключение

Теперь сервер Ubuntu 16.04 поддерживает два сайта на отдельных доменах. В целом, количество хостов, которое может поддерживать Apache, зависит только от ресурсов виртуального выделенного сервера. Чтобы добавить на сервер новый виртуальный хост, просто повторите весь вышеописанный процесс.

Tags: ,

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

Вначале небольшое объяснение.

Что такое виртуальный хост? Это такая настройка локального веб-сервера, при которой веб-сервер начинает откликаться на заданное имя, а не только на IP 127.0.0.1 или псевдоним localhost . То есть, при настройке виртуального хоста на имя site.ru , в браузере по этому URL начнет отвечать локальный веб-сервер.

Веб-сервер можно настроить на несколько имен сайтов. Тогда веб-сервер начнет выдавать страницы, соответсвующие каталогу, в котором находятся данные для указанного имени. Например, есть два виртуальных хоста - site.ru и money.com . Для site.ru настроен рабочий каталог /var/www/site.ru , а для money.com настроен рабочий каталог /var/www/money.com . Если теперь в браузере обратиться к site.ru , то веб-сервер будет выдавать страницы из каталога /var/www/site.ru , а если обратиться к money.com , то веб-сервер будет генерировать страницы из каталога /var/www/money.com . Как сделать такую настройку и написано в данной статье.

В Debian 5.x.x , сервер Apache-2 сразу после установки готов работать с виртуальными хостами. Но настроен только на один (default) хост, который доступен как localhost . Чтобы добавить еще один виртуальный хост, надо сделать следущее:

1. В каталог /etc/apache2/sites-available нужно добавить пустой файл с произвольным именем. Для удобства, лучше давать имя файла, содержащее имя виртуального хоста. Например, если планируется добавить виртуальный хост с именем studio.ru , надо задатьдать имя файла studio.ru.conf .

2. В этот файл надо вписать (примерно) следующее:

ServerName studio.ru
ServerAlias www.studio.ru

DocumentRoot "/var/www/studio"


allow from all
Options +Indexes

  • ServerName, ServerAlias - это URL, набираемый в браузере, на который должен откликаться данный виртуальный хост;
  • DocumentRoot - это корневая директория данного виртуального хоста;
  • Секция Directory - настройка прав доступа к указанной директории. В данном случае настраиваются права доступа к корневой директории виртуального хоста.

Нужно обратить внимание на параметр секции VirtualHost. Здесь он написан как "*:80 ". Но обязательно нужно заглянуть в файл /etc/apache2/sites-available/default и посмотреть, какой параметр написан там в такой же секции VirtualHost. Если написано "* ", то в нашем файле надо так же написать "* ".

Другоми словами, нужно заглянуть в файл /etc/apache2/ports.conf . Там нужно найти директиву:

NameVirtualHost *:80

Какое значение стоит в этой директиве (здесь - "*:80 "), такое значение и нужно прописать в качестве параметра секции VirtualHost во всех файлах директории /etc/apache2/sites-available , иначе хосты видны не будут.

Частая ошибка - когда в /etc/apache2/ports.conf прописано "*.80", а в файле хоста в секции VirtualHost прописано "*". Несмотря на то, что маска "*" покрывает маску "*.80", сервер Apache не понимает такой записи. При такой настройке, сервер Apache не найдет нужного хоста!

3. Надо перейти в каталог /etc/apache2/sites-enabled и создать там символическую ссылку на созданный нами файл:

# cd /etc/apache2/sites-enabled
# ln -s /etc/apache2/sites-available/studio.ru.conf studio.ru.conf

4. Необходимо перезапустить Apache командами:

# /etc/init.d/apache2 stop
Stopping web server: apache2 ... waiting .

# /etc/init.d/apache2 start
Starting web server: apache2.

в момент перезапуска надо смотреть, не появляются ли в консоли сообщения об ошибках или предупреждения. В нормально сконфигурированном Апаче никаких сообщений о ошибках (и даже предупреждений!) выдаваться не должно.

5. Завершающее действие - нужно открыть файл /etc/hosts и прописать там новую строку следующего содержания:

127.0.0.1 studio.ru

это позволит браузеру обращаться локально к Апачу, а не искать данный сайт в интернете.

Все, конфигурирование закончено. Никаких перезагрузок не требуется.

Можно в браузере набрать URL http://studio.ru/index.html , и должен открыться файл /var/www/studio/index.html (если он есть). Таким образом, сразу видно, что виртуальный хост создался, и отображается в браузере. Подобным образом добавляются и другие виртуальные хосты.

Во время разработки, одним хостом не обойдешься. На одном можно разрабатывать, на другом тестировать, а на третьем еще один проект.

Плюс ко всему, в Apache2 по умолчанию файлы сайта хранятся в /var/www, у меня же они будут находиться в моей домашней папке, /home/goodigy/sites .

Apache2 может определять хосты по ip-адресам, по доменным именам и по портам.

Мы будем использовать второй вариант, то есть определение хостов по доменным именам.

В Apache2, установленном в Ubuntu 16.04 и Ubuntu 14.04, для этого уже почти все готово.

В папке /etc/apache2/ sites-available будут храниться все конфигурационные файлы виртуального хоста.
Затем мы его просто будем включать и выключать по надобности.
Один файл там уже есть, на основе его мы и сделаем свой.

Скопируем под именем example (наш хост будет называться example, и в браузере станет доступен по ссылке http://example)

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

В предыдущих версиях apache2 (до версии 2.4), не использовались расширения файлов.conf. В новых версиях (с версии 2.4) это приведет к ошибке.

Теперь надо отредактировать, вновь созданный, файл

Sudo nano /etc/apache2/sites-available/example.conf

Файл приводим к следующему виду:

ServerName example DocumentRoot /home/goodigy/sites/example AllowOverride All Require all granted ErrorLog /home/goodigy/sites/example/error.log CustomLog /home/goodigy/sites/example/access.log combined

Разъяснение настроек:

  • ServerName example - указание доменного имени по которому будет определяться хост.
  • DocumentRoot /home/goodigy/sites/example - привязывает папку к хосту.

  • Options Indexes FollowSymlinks
    AllowOverride All
    Require all granted
    - это настройки папки,
  • Options Indexes FollowSymlinks - если нет индексного файла (index.html, index.php), показывать список файлов, удобно на локальном сервере.
  • AllowOverride All - разрешает переопределять настройки в.htaccess.
  • Require all granted - доступ разрешен всем.
  • ErrorLog - указывает расположение файла с логом ошибок, я их храню в папке с сайтом.
  • CustomLog - указывает расположение файла с логом доступа, я их храню в папке с сайтом.

Сохраняем.
Создаем папки, указанные в конфигурационном файле

Mkdir /home/goodigy/sites mkdir /home/goodigy/sites/example

Включаем сайт

Sudo a2ensite example.conf

И отключаем тот, который по умолчанию

Sudo a2dissite 000-default.conf

Перезапускаем Apache2

Sudo nano /etc/hosts

Выглядит он, примерно, так

127.0.0.1 localhost 127.0.1.1 googidy-comp # The following lines are desirable for IPv6 capable hosts::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters

Туда надо добавить указание на наш домен example

127.0.0.1 localhost 127.0.1.1 igy-nout 127.0.0.1 example # The following lines are desirable for IPv6 capable hosts::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters

Сохраняем.
Все, теперь по адресу http://example доступен наш новый хост. В браузере должна отобразиться папка с файлами, так как там отсутствует индексный файл.

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

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

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

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

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

Предполагается, что вы работаете под обычным пользователем. Если нет, то предварительно создайте обычного пользователя и залогинтесь под ним.

Для целей этой инструкции, мы будем настраивать виртуальный хост для домена example.com, а другой виртуальный хост для test.com. На них будут делаться ссылки в этом руководстве, но вы должны подставить ваши собственные домены или значения.

Для реальных доменов должны быть прописаны DNS записи, указывающие на IP вашего сервера. Если у вас нет доменов, с которыми можно было бы поиграться, вы можете использовать ненастоящие значения.

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

Шаг 1 — Создание структуры директорий

Первым шагом, который будет предпринят, мы собираемся создать структуру директорий, которые будут содержать данные сайтов, которые будет обслуживать сервер для посетителей.

Наша корневая директория документов (директория самого верхнего уровня, в которой Apache ищет содержимое для обслуживания) будет установлена на индивидуальные директории в папке /var/www . В ней мы создадим подпапки для обоих виртуальных хостов, которые мы планируем сделать.

Внутри каждой из этих директорий, мы создадим папку public_html , которая и будет содержать файлы. Это даст больше гибкости в развёртывании сложных веб-приложений; в папке public_html будет расположен веб-контент, а родительская папка может содердажть скрипты или код приложения для поддержки веб-контента.

Например, для наших сайтов мы собираемся сделать наши директории следующим образом:

Sudo mkdir -p /var/www/example.com/public_html sudo mkdir -p /var/www/test.com/public_html

Поскольку мы создали директории с sudo, то они принадлежат пользователю root. Если мы хотим, чтобы наш обычный пользователь был способен изменять файлы в наших веб-директориях, мы можем изменить права собственности сделав так:

Sudo chown -R $USER:$USER /var/www/example.com/public_html sudo chown -R $USER:$USER /var/www/test.com/public_html

При нажатии на Enter переменная $USER примет значение вашего пользователя, под которым вы вошли. Сделав это, наш обычный пользователь станет владельцем поддиректорий public_html где мы будем размещать наш контент.

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

Sudo chmod -R 755 /var/www

Теперь ваш веб-сервер должен иметь необходимые разрешения для обслуживания контента, и вы должны быть способны создавать контент внутри необходимых папок.

Шаг 2 — Создание демо страниц для каждого виртуального хоста

Структура директорий размещена в нужном месте. Давайте создадим контент, чтобы его мог обрабатывать веб-сервер.

Мы только собираем показать принцип работы, поэтому наши страницы будут очень простыми. Мы просто собираемся сделать страницу index.html для каждого сайта.

Давайте начнём с example.com. Мы можем открыть файл index.html в нашем редакторе напечатав:

Vim /var/www/example.com/public_html/index.html

В этом файле создайте HTML документ, который говорит о том, что к сайту есть соединение. Мой файл выглядит примерно так:

Welcome to Example.com!

Success! The example.com virtual host is working!

Когда закончите, сохраните и закройте файл.

Мы можем скопировать этот файл для использования его в качестве основы для нашего второго сайта:

Cp /var/www/example.com/public_html/index.html /var/www/test.com/public_html/index.html

Затем мы можем открыть новый файл и изменить его в нужных местах:

Vim /var/www/test.com/public_html/index.html Welcome to Test.com!

Success! The test.com virtual host is working!

Также сохраните и закройте этот файл. Теперь у вас есть необходимые страницы для тестирования конфигурации виртуального хоста.

Шаг 3 — Создание файлов настроек новых виртуальных хостов

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

Apache поставляется со стандартным файлом виртуального хоста, называемым 000-default.conf. Его мы можем использовать как отправную точку. Мы скопируем его для создания файла виртуального хоста для каждого нашего домена.

Мы начнём с одного домена, настроем его, скопируем его для нашего второго домена и затем сделаем небольшие необходимые исправления. Стандартная конфигурация Ubuntu требует, чтобы каждый файл виртуального хоста заканчивался на.conf.

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

Начните с копирования файла для первого домена:

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

Откройте новый файл в текстовом редакторе с привилегиями рута:

Sudo vim /etc/apache2/sites-available/example.com.conf

Файл будет выглядеть примерно так (я удалил здесь комментарии, чтобы сделать файл более читаемым):

ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined

Как вы можете убедиться, здесь не слишком много. Мы настрое пункты для нашего первого домена и добавим некоторые директивы. Секция VirtualHost соответствует любым запросам, сделанным на порт 80, это стандартный HTTP.

Для начала нам нужно изменить директиву ServerAdmin , впишите сюда адрес электронной почты, на который администратор может принимать письма.

ServerAdmin [email protected]

После этого нам нужно добавить две директивы. Первая называется ServerName, она устанавливает базовый домен, который должен соответствовать определению виртуального хоста. Скорее всего, это будет ваш домен. Вторая, называемая ServerAlias, определяет дополнительные имена (псевдонимы), по которым также можно обратиться к этому виртуальному хосту. Т.е. здесь указываются различные имена хостов, указывающие на один виртуальный хост, например, чтобы сайты с и без www сервер считал за один сайт нужно сделать так:

ServerName example.com ServerAlias www.example.com

Ещё нам осталось изменить путь, указывающий где размещена корневая директория сайта для этого домена - DocumentRoot . Мы уже создали нужную нам директорию, поэтому нам нужно просто изменить директиву DocumentRoot в соответствии с нашими условиями:

DocumentRoot /var/www/example.com/public_html

В конечном счёте файл нашего виртуального хоста выглядит так:

ServerAdmin [email protected] ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example.com/public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined

Сохраните и закройте этот файл.

Скопируйте первый виртуальный хост и подредактируйте под второй домен

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

Начнём с копирования:

Sudo cp /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-available/test.com.conf

Откройте новый файл с привилегиями рута в вашем редакторе:

Sudo vim /etc/apache2/sites-available/test.com.conf

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

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

Когда всё готово, сохраните и закройте файл.

Шаг 4 — Включение новых файлов виртуальны хостов

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

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

Sudo a2ensite example.com.conf sudo a2ensite test.com.conf

Sudo a2dissite 000-default.conf

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

Sudo systemctl restart apache2

В другой документации вы можете увидеть пример использующий другую сервисную команду:

Sudo service apache2 restart

Эта команда ещё работает, но вы можете не увидеть вывод, обычно видимый на других системах, поскольку сейчас это обёртка для systemctl из systemd.

Шаг 5 — Настройка файла Hosts (опционально)

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

Эта настройка будет перехватывать любые запросы для настроенных вами доменов и указывать на ваш локальный компьютер или VPS сервер, как бы это делала DNS система если бы использовались зарегистрированные домены. Хотя это будет работать только с вашего компьютера, это полезно для целей тестирования.

Если вы настраивали виртуальные хосты на вашем локальном компьютере, то последующие изменения также нужно делать на нём. Если вы настраивали виртуальные хосты на VPS сервере, то убедитесь, что последующие изменения вы делаете не на нём, а на компьютере, с которого собираетесь тестировать (на вашем локальном компьютере). Вам нужно знать пароль администратора или быть членом административной группы.

Если вы на компьютере Mac или Linux, отредактируйте ваш локальный файл с привилегиями администратора:

Sudo gedit /etc/hosts

Допустим, мой VPS имеет IP адрес 111.111.111.111, тогда в самый низ файла hosts мне нужно добавить две строки:

127.0.0.1 localhost ... 111.111.111.111 example.com 111.111.111.111 test.com

Если вы настроили виртуальные домена на локалхосте, то строки могут выглядеть так:

127.0.0.1 example.com 127.0.0.1 test.com

Если вы на машине Windows, откройте командную строку с привилегиями администратора и наберите там:

Notepad %windir%\system32\drivers\etc\hosts

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

Вам нужно добавить IP адрес вашего VPS сервера за которым следует домен, который вы хотите достичь на VPS.

Это будет перенаправлять любые запросы на example.com и test.com с вашего компьютера и отправлять их на ваш сервер 111.111.111.111.

Сохраните и закройте файл. Теперь вы можете протестировать ваши настройки. Когда убедитесь, что всё работает, удалите эти две строки из файла.

Шаг 6 — Тестирование ваших результатов

Теперь, после настройки ваших виртуальных хостов, вы можете легко протестировать вашу установку перейдя на домен, который вы настраивали в вашем веб-браузере. Посетите первый сайт http://example.com и вы увидите примерно следующую страницу:

Точно также посетите второй сайт http://test.com, вы увидите файл, созданный для второго сайта:

Если оба этих сайта работают хорошо, значит вы успешно настроили два виртуальных хоста на одном сервере.

Заключение

Теперь у вас есть единый сервер, работающий с двумя отдельными доменами. Вы можете распространить этот процесс, следуя этим шагам для добавления виртуальных хостов.

Нет программных ограничений на количество доменных имён, которые может обслуживать Apache, поэтому добавляйте столько, сколько ваш сервер способ обработать.