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

Виртуальный хостинг. Основные понятия.

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

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

Т.е. у вас на комьютере может быть несколько сайтов, которые доступны по разным именам.

Виртуальные хосты бывают 2-х видов:

  • виртуальные хосты, основанные на имени (name-based );
  • виртуальные хосты, основанные на IP адресе компьютера (ip-based ).

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

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

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

Открываем этот файл в блокноте. Ищем и удаляем комментарий вначале строки, как показано ниже:

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

Эта строка подключает настройки, которые описаны в файле conf/extra/httpd-vhosts.conf .

Синтаксис для создания name-based виртуального хоста :


DocumentRoot путь к сайту
ServerName название сайта

В файле vhosts находятся примеры. Они нам не нужны. Просто удаляем их и заменяем тест на следующий:

#
# Virtual Hosts
#
# Здесь можно подробней почитать о тонкой настройке виртуальных хостов
#
#

#
# Use name-based virtual hosting.
#
NameVirtualHost *:80

# Здесь прописываем путь к файлам сайта (DocumentRoot) и имя хоста (ServerName)

DocumentRoot с:/www/test
ServerName test

Теперь создайте на диске C: папку www и в ней папку test . Обратите внимание, что в Windows используются обратные слэши, а в конфигурационном файле прямые /.

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

Следующим шагом мы должны должны известить Windows о созданных виртуальных хостах. Для этого найдите файлC:/Windows/system32/drivers/etc/hosts . Открываем его с помощью обычного блокнота и дописывает туда следующую строку:

127.0.0.1 – это IP адрес вашего комьютера. Этой строкой мы дали знать Windows, что на этом IP адресе находится сайт test .

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

127.0.0.1 имя вашего виртуального хоста

Теперь нужно проверить, правильность настройки. Для этого создадим в папке с:/www/test файл index.php и напишем там такой код:

Пишем в браузере URL http://test . Если вы все сделали правильно, то увидете что-то вроде:

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

Так как большинство читателей работают с операционной системой Windows, то сначала организуем виртуальные хосты в Windows 7.

Виртуальные хосты в Windows 7

В качестве примера поместим один или несколько проектов на диск D: локального компьютера. Сначала организуем структуру каталогов. На диске D: создаем каталог «mysites», а в нём каталог для первого сайта «site1». В каталоге «site1» сделаем два подкаталога: «www» и «logs». В первом подкаталоге будет располагаться сам сайт, а во втором, журналы виртуального хоста: access.log (журнал доступа) и error.log (журнал ошибок).

Файлы журналов создавать не надо, они будут созданы автоматически. А в каталоге «www», пока нет сайта, поместим простейший файл-заглушку «index.html» следующего содержания:

Теперь немного поправим настройки для виртуальных хостов веб-сервера Apache. Открываем C:\xampp\apache\conf\extra\ httpd-vhosts.conf
Как видим, этот файл уже содержит два примера виртуальных хостов. Не будем их трогать, а ниже разместим следующие строки:

NameVirtualHost *:80 DocumentRoot "C:/xampp/htdocs" ServerName localhost ServerAdmin [email protected] DocumentRoot "D:/mysites/site1/www" ServerName site1 ServerAlias www.site1 ErrorLog "D:/mysites/site1/logs/error.log" CustomLog "D:/mysites/site1/logs/access.log" common AllowOverride All Require all granted

Первая директива NameVirtualHost *:80 включает поименное использование виртуальных хостов на 80-ом порту (обычный http, если нужен https, используем 443 порт).
Следующие четыре строки это общая секция для всех виртуальных хостов. Если клиент обращается к серверу по IP-адресу или по несуществующему имени он попадет на этот виртуальный хост. В нашем случае в корневую директорию веб-сервера. Остальные строки это описание нашего первого виртуального хоста. Если нужно добавить ещё один виртуальный хост, то просто копируем эту секцию, вставляем ниже и по аналогии изменяем данные. Сохраняем файл.
Значение данных в секции виртуального хоста:

  • Какой порт используется
  • ServerAdmin [email protected] Эл. почта администратора сайта
  • DocumentRoot "D:/mysites/site1/www" Корневой каталог сайта
  • ServerName site1 Имя хоста
  • ServerAlias www.site1 Псевдоним хоста. Можно обращаться, используя псевдоним
  • ErrorLog "D:/mysites/site1/logs/error.log" Расположение журнала ошибок
  • CustomLog "D:/mysites/site1/logs/access.log" common Расположение журнала доступа. Оператор common определяет общую степень детализации журнала. Если нужна более подробная детализация, то вместо common пишем combined
  • Подсекция, в которой определяются права и настройки для конкретного каталога.
  • AllowOverride All Эта директива нужна для правильной работы системы SEF

Из панели управления XAMPP перестартовываем Apache. Изменяем файл C:\Windows\System32\drivers\etc\hosts. Дописываем в него две строки:

Вместо 127.0.0.1 можно написать 127.0.0.2, а для следующего виртуального хоста 127.0.0.3, но в этом нет особой нужды. Об этом напишу в другой раз. А сейчас сохраняем файл. Открываем браузер и адресной строке вводим http://site1 или просто site1. Если всё сделано правильно, видим информацию из файла-заглушки.

Виртуальные хосты в Debian GNU/Linux

Настройка виртуальных хостов в Linux мало чем отличается от их настройки в Windows. Разве что созданием структуры каталогов. Оно и понятно, Apache кроссплатформенное решение, настроечные файлы практически одинаковы.
При установке XAMPP, корневой директорией веб-сервера Apache является каталог /opt/lampp/htdocs. А вот когда Apache устанавливается в Linux отдельным пакетом, то по умолчанию корневой директорией является каталог /var/www. Вот в этот каталог мы и поместим виртуальные хосты.
В качестве примера, создадим каталог /var/www/site1, который будет содержать два подкаталога: logs для журналов и www для файлов сайта.

Делаем владельцем каталога site1 пользователя www-data:

Sudo chown -R www-data:www-data /var/www/site1

В каталог /var/www/site1/www помещаем файл-заглушку index.html

Открываем файл /opt/lampp/etc/extra/httpd-vhosts.conf и удаляем всё его содержимое. Добавляем следующий код:

NameVirtualHost *:80 DocumentRoot "/opt/lampp/htdocs/" ServerName localhost ServerAdmin [email protected] DocumentRoot "/var/www/site1/www" ServerName site1 ServerAlias www.site1 ErrorLog "/var/www/site1/logs/error.log" CustomLog "/var/www/site1/logs/access.log" common Options Indexes FollowSymLinks Includes ExecCGI AddType text/shtml .shtml AddOutputFilter INCLUDES .shtml AllowOverride All Require all granted

Последние 15 строк кода – это как раз описание виртуального хоста site1. Если в дальнейшем надо будет добавить ещё один виртуальный хост, то просто скопируйте эти строки и измените пути к директориям.
Открываем файл /opt/lamp/etc/httpd.conf и раскомментируем (т. е. удалим символ решетки) строку 488:

Include etc/extra/httpd-vhosts.conf

Перестартовываем XAMPP

/opt/lampp/xampp restart

Правим файл /etc/hosts. Ниже строки

127.0.0.1 localhost

Вставляем строку следующие строки:

127.0.0.1 site1 127.0.0.1 www.site1

В адресной строке браузера набираем
http://site1 или просто site1

Если вы видите страницу-заглушку, значит, всё сделали правильно!

Ещё о сайтостроении

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

    • Развитие и совершенствование компьютерных технологий, не перестает удивлять современного человека. К примеру, не так давно позволить себе иметь собственный сайт мог только состоятельный человек, так как это, как вы понимаете,...

По умолчанию после установки Apache создается виртуальный хост с именем localhost . Я расскажу как добавлять новые виртуальные хосты в Apache.

Я создам виртуальный хост с именем myhost (вместо myhost вы можете выбрать любое имя, которое вам захочется).

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

Mkdir ~/myhost

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

Создаем конфигурационный файл хоста

В каталоге /etc/apache2/sites-available хранятся конфигурационные файлы виртуальных хостов Apache. По умолчанию там хранится файл default , который соответствует хосту localhost . Мы возьмем за основу файл default и скопируем его в файл с именем myhost . Для этого выполните следующие команды:

Cd /etc/apache2/sites-available sudo cp default myhost

Теперь отредактируем файл myhost . Откройте его в редакторе (например, в редакторе Gedit), выполнив команду:

Sudo gedit myhost

Внесите в файл соответствующие изменения. В частности пропишите путь до директории, в которой будут храниться файлы хоста. В нашем случае это путь /home/yuriy/myhost , где yuriy вы должны заменить на название вашей домашней директории. Путь нужно прописать в двух местах: у параметра DocumentRoot и в заголовке секции . В самом начале файла (на второй строке) обязательно пропишите строку « ServerName myhost ». Вот пример того, как должен выглядеть ваш файл myhost:

ServerName myhost ServerAdmin webmaster@localhost DocumentRoot /home/yuriy/myhost Options FollowSymLinks AllowOverride None Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all ErrorLog /var/log/apache2/error.log LogLevel debug CustomLog /var/log/apache2/access.log combined

Теперь нам нужно сделать наш хост активным. Apache использует каталог /etc/apache2/sites-enabled для определения хостов, которые нужно включить. Создадим символьную ссылку в каталоге sites-enabled , указывающую на наш файл myhost. Для этого выполните команды:

Cd ../sites-enabled sudo ln -s ../sites-available/myhost myhost

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

Перезапустите Apache, выполнив команду:

Sudo /etc/init.d/apache2 restart

Редактируем /etc/hosts

Осталось отредактировать файл /etc/hosts . В нем прописывается соответствие IP адреса имени хоста. То есть это своего рода локальный DNS. Чтобы открыть файл, выполните следующую команду:

Sudo gedit /etc/hosts

В файле после адреса 127.0.0.1 допишите название своего виртуального хоста. В моем случае это myhost .

127.0.0.1 localhost myhost

Заключение

На этом настройка виртуального хоста Apache с именем myhost закончена. Теперь к нему можно обратиться в браузере, набрав адрес http://myhost .

Проблема виртуальных хостов становится достаточно острой, когда вам нужно создать 2 или более хостов. Для их администрирования обычным "localhost " не обойтись. С помощью виртуальных хостов и сервера Apache эту проблему вполне можно решить.

Создание виртуальных хостов Apache, это совсем несложная и быстрая работа.

Итак, вы установили и настроили Apache, как написано в статье "Настройка Apache и PHP " и получили, таким образом, директорию "C:\web_server\apache\htdocs\ " для хранения документов. Однако в интернете вы поддерживаете (или, скорее всего, будете поддерживать) несколько серверов, а Apache создал только один. Конечно, можно структуру этих нескольких серверов хранить на одном сервере, однако проще и удобнее было бы создать несколько виртуальных хостов.

Мы создадим виртуальные хосты с использованием одного общего IP-адреса. Советую имена виртуальных хостов называть так же, как и на нынешнем Web-сервере, но только без суффикса ".net " или ".com " - это может многое упростить при программировании скриптов. Например, создадим виртуальный хост "profiphp ".

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

Создаем папку "localhost " в корневом каталоге диска (C:\localhost\ ). Далее создаем в ней каталог виртуального хоста - "profiphp " (C:\localhost\profiphp\ ). Именно в этой папке и будут содержаться файлы виртуального хоста.

Далее необходимо включить поддержку виртуальных хостов. Откройте файл "C:\web_server\apache\conf\httpd.conf " и добавьте следующие строки в самом конце файла после всех комментариев:
# localhost
NameVirtualHost 127.0.0.1
# Контейнер конфигурации виртуального хоста

# Домен по которому Вы сможете обращаться к виртуальному хосту.
ServerName localhost:80
# Папка, в которой будет корень хоста.

# Файл, в который будут записываться ошибки.

# Файл журнала доступа к хосту.


# profiphp

ServerName profiphp:80



Директива "NameVirtualHost " говорит серверу, что указанный IP-адрес может использоваться несколькими виртуальными хостами, поэтому для обработки запросов, поступающих на этот адрес, нужно использовать протокол HTTP 1.1 .

При необходимости можно добавить и другие параметры в блоки " " (например, DirectoryIndex и т.д.). Не переопределенные параметры наследуются виртуальным хостом от главного. Однако не советую злоупотреблять настройками в этих секциях - лучше сделать их в файле ".htaccess " в директории нужного хоста, так как компания, которая предоставляет настоящие виртуальные хосты в интернете, вряд ли позволит менять эти блоки.

Также следует заметить, что включить поддержку виртуальных хостов можно и другим вариантом. Для этого необходимо в файле "C:\web_server\apache\conf\httpd.conf " раскомментировать строку:
Include conf/extra/httpd-vhosts.conf И редактировать файл "C:\web_server\apache\conf\extra\httpd-vhosts.conf ", в котором прописаны все виртуальные хосты. Данный вариант более понятный, поскольку у нас есть отдельный файл с настройками виртуальных хостов. Но если виртуальных хостом немного, тогда проще добавить настройки в конфигурационный файл Apache напрямую чем подключать отдельный файл.

Если виртуальных хостов много, то работа по их конфигурированию в одном файле "httpd.conf " может осложниться. Решением этой проблемы является создание специального конфигурационного файла для каждого виртуального узла и присоединение этих файлов с помощью директивы "include ". В конфигурационные файлы помещаются только контейнер " " и директивы внутри него.

Следующий шаг создания виртуального хоста - это изменение файла "C:\WINDOWS\system32\drivers\etc\hosts " операционной системы. Откройте данный файл и добавьте в него строки:
127.0.0.1 localhost
127.0.0.1 profiphp Если у Вас уже есть запись "localhost ", то второй добавлять не нужно.

Теперь запустите сервер Apache, откройте браузер, введите в адресной строке "http://profiphp/ " и вы окажетесь в своем виртуальном хосте.

Если у вас по каким то причинам виртуальные хосты не работают, необходимо проверить файл логов, который находится по адресу: "/apache/logs/error.log ". Например, может содержаться уведомление:
AH00548: NameVirtualHost has no effect and will be removed in the next release /apache/conf/httpd.conf:553 Дело в том, что до версии Apache 2.3.11, директива NameVirtualHost должна была инструктировать сервер о конкретном IP-адресе и комбинации портов, которые могут использоваться в качестве виртуального хоста на основе имени. Версия 2.3.11 и более поздние, когда IP-адрес и комбинация портов используются на нескольких виртуальных хостах, виртуальный хост на основе имени автоматически включается для этого адреса. Поэтому в настоящее время эта директива не действует. Единственным решением данной проблемы является удаление директивы NameVirtualHost . Также необходимо заменить все значения VirtualHost :
Измененный код:

ServerName localhost:80
DocumentRoot "C:/web_server/apache/htdocs"
ErrorLog "c:/web_server/apache/htdocs/error.log"
CustomLog "c:/web_server/apache/htdocs/access.log" common

# profiphp

ServerName profiphp
DocumentRoot "C:/localhost/profiphp"
ErrorLog "c:/localhost/profiphp/error.log"
CustomLog "c:/localhost/profiphp/access.log" common

Веб-сервер 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, поэтому добавляйте столько, сколько ваш сервер способ обработать.




Close