Apache настройка виртуальных хостов windows. Cоздание виртуальных хостов apache

Введение: Есть настроенный Веб-сервер на Ubuntu 14.04 TLS (связка Apache + MySQL + php + phpmyadmin). Доступ к нему осуществляется с компьютера под управлением Windows 7, следующим образом:

Из браузера – по IP.

В консоль – через putty.

По ssh – через winCSP.

Компьютеры в одной локальной сети. Теперь я расскажу о том как осуществить настройку виртуальных хостов в Apache.

При первоначальной настройке виртуальный хост это IP адрес самого Веб-сервера. Требуется создать новый виртуальный хост на Веб-сервере с возможностью доступа к нему с различных машин.

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

Создаем корневые каталоги для локального хоста newhost:

sudo mkdir -p /var/www/newhost/public_html

В папке public_html будут храниться файлы хоста newhost.

Шаг 2: назначение прав

Для того, что бы пользователь it мог изменять файлы в папке public_html выполним команду:

sudo chown -R it /var/www/newhost/public_html

Для корректного отображения страниц сайта назначим пользователю it (у меня он уже создан) права доступа на общую веб-директорию:

sudo chmod it -R 755 /var/www

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

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

Стандартный файл виртуального хоста в Apache – 000-default.conf./ Скопируем его для нового виртуального хоста:

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

После чего откроем его для редактирования:

sudo nano /etc/apache2/sites-available/newhost.conf

Для удобства удалим комментарии – весь текст в строке начинающейся со знака #.

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

ServerAdmin webmaster@localhost

DocumentRoot /var/www/html

Приведем его к виду:

ServerAdmin admin@newhost

ServerName newhost

ServerAlias www.newhost

DocumentRoot /var/www/newhost/public_html

ErrorLog ${APACHE_LOG_DIR}/error.log

CustomLog ${APACHE_LOG_DIR}/access.log combined

Сохраним и закроем файл. Для редактора nano это команды Ctrl+O (сохранить) Ctrl+X (закрыть).

Шаг 4: включение виртуального хоста

Для включения виртуального хоста выполним команду

sudo a2ensite newhost.conf

После чего перезапустим Apache

sudo service apache2 reload

Шаг 5: создание индексного файла и проверка работы хоста

Создадим файл index.html со следующим содержимым:

Добро пожаловать на хост newhost!

Успех! Хост newhost работает!

Шаг 6: настройка файла локального хоста

Открываем файл hosts

sudo nano /etc/hosts

Файл будет иметь примерно следующий вид

127.0.0.1 localhost

127.0.1.1 webserver

Добавляем строку

127.0.1.2 newhost

Сохраняем файл.

Проверяем работоспособность хоста

curl http://newhost

Данная команда должна вывести нам html код страницы. Хост успешно создан и работает. Для доступа к хосту через браузер компьютеров под управлением Windows 7 необходимо в файле C:\Windows\System32\drivers\etc добавить

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: ,

Нескольких сайтов, то Apache для этих целей предоставляет возможность настройки виртуальных хостов (virtual hosts). Виртуальные хосты бывают двух видов: name-based virtual hosts , то есть привязанные к доменному имени, и IP-based virtual hosts , то есть привязанные к IP-адресу. Виртуальные хосты первого типа используют разные имена для одного IP-адреса, а второго типа – используют для каждого сайта отдельный IP-адрес. Создание виртуальных хостов в Apache необходимы, если на вашем сервере есть несколько сайтов, а их настройка необходима для корректного отображения всех сайтов.

Наиболее распространенным является использование виртуальных хостов на базе имен (name-based virtual hosts), привязанных к одному IP-адресу. Таким образом, можно хранить множество сайтов на одном IP.

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

В Red-Hat /CentOS /Fedora :

/etc/httpd/conf/httpd.conf

Debian /Ubuntu :

/etc/apache2/apache2.conf

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

В Red-Hat /CentOS /Fedora :

/etc/httpd/conf.d/filename.conf,

Debian /Ubuntu :

/etc/apache2/conf.d/filename.conf.

Как правило, в конфигурационном файле httpd.conf или apache2.conf раздел управления виртуальными хостами располагается в самом конце. Для добавления виртуального хоста нужно будет открыть этот файл и раскомментировать в нём (убрать # ) директиву NameVirtualHost *:80 (Аргумент * обозначает «все имена хостов»). Если будет использоваться способ размещения конфигурации в conf.d , то указанную директиву не нужно раскомментировать, а следует определить её в самом создаваемом файле.

После NameVirtualHost следует блок VirtualHost *:80 . Подобные блоки и являются конфигурацией ваших виртуальных хостов. Выглядит это все примерно следующим образом:

NameVirtualHost *:80 AllowOverride All Options All ServerAdmin [email protected] DocumentRoot /var/www/site1.ru ServerName site1.ru ServerAlias www.site1.ru ErrorLog logs/site1.ru-error_log CustomLog logs/site1.ru-access_log common ServerAdmin [email protected] DocumentRoot /var/www/site2.ru ServerName site2.ru ServerAlias www.site2.ru ErrorLog logs/site2.ru-error_log CustomLog logs/site2.ru-access_log common

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

Рассмотрим более детально, за что отвечает каждая указанная выше директива.

1. Директива ServerAdmin указывает электронный адрес администратора сервера, на который приходят все уведомления с хоста, касающиеся его администрирования.

2. Директива DocumentRoot указывает корневую директорию с файлами сайта, которые должны будут выдаваться веб-сервером клиенту (браузеру).

3. Директива Server Name определяет имя хоста, по запросу которого должны будут выдаваться файлы, расположенные в DocumentRoot.

4. Директива ServerAlias служит для задания альтернативных имен хоста (алиасов, псевдонимов), на которые он откликается.

5. Директива ErrorLog задает файлы протоколов ошибок для каждого хоста, а CustomLog – файлы протоколов для всего остального, кроме ошибок.

До блоков с виртуалхостами, как вы заметили, есть еще запись:

AllowOverride All

В тегах заключается перечень директив (параметров), которые будут применяться к конкретной директории, которая указывается в открывающем теге. В примере выше – это var/www/ . Указанная директива AllowOverride указывает, использовать ли файлы .htaccess и если да, то какие глобальные директивы веб-сервера в можно переопределять в таких файлах. В представленном выше примере значение AllowOverride установленно в All , что разрешает обрабатывать файлы.htaccess и все указанные в нём директивы. Существуют и другие возможные значения:

AuthConfig – разрешает использовать директивы авторизации (AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, require, и т.д..).

FileInfo – разрешает использовать директивы, управляющие типами документов (AddEncoding, AddLanguage, AddType, DefaultType, ErrorDocument, LanguagePriority, и т.д..).

Indexes — разрешает использовать директивы для управления индексацией каталогов (AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName, и т.д..).

Limit — разрешает использовать директивы управления доступом (allow, deny и order).

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

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

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

Apachectl configtest apachectl -S apachectl -d

Если получено сообщение “Syntax OK ”, значит ошибок нет и можно перезагружать веб-сервер, чтобы применились изменения. Сделать это можно с помощью следующих команд:

Red-Hat/CentOS/Fedora:

Service httpd restart

/etc/init.d/ httpd restart

Debian/Ubuntu:

Service apache2 restart

/etc/init.d/apache2 restart

Далее вы можете столкнуться со следующей проблемой. При поступлении запроса Apache проходит по всему списку виртуальных хостов в поисках соответствующего, и, если не находит соответствия, выдает первый по порядку хост. Чтобы устранить данную неприятность, специалисты придумали так называемую секцию-заглушку, которую следует вставить перед первой секцией VirtualHost реального сайта. Выглядит она приблизительно следующим образом:

ServerName default DocumentRoot /var/www/default

Таким образом, все неправильные запросы будут отсылаться по пути var/www/default , где можно создать индексную страницу, которая будет сообщать о неправильном запросе.

Также, Apache по умолчанию не имеет доступа к вашим домашним директориям, а только к директории /var/www . Если вы используете на своем сервере SElinux, то для предоставления Apache доступа к домашним директориям используйте следующие команды:

Setsebool -P httpd_enable_homedirs 1

Setsebool -P apache2_enable_homedirs 1

Для того чтобы Apache имел доступ к определенной директории, например, к /home/mydir следует использовать команду:

Chcon -R -t httpd_sys_content_t /home/mydir

Chcon -R -t apache2_sys_content_t /home/mydir

При отключенном SELinux для предоставления Apache доступа к той или иной домашней директории сайта, вам нужно будет вручную отредактировать его конфигурационный файл (/etc/httpd/conf/httpd.conf в CentOS/Fedora или /etc/apache2/apache2.conf в Debian/Ubuntu ).

Открыв конфигурационный файл веб-сервера для редактирования, найдите строку DocumentRoot (при использовании редактора nano ее можно отыскать с помощью комбинации клавиш Ctrl+W ). Замените значение в кавычках /var/www/html на абсолютный путь к домашней директории сайта (например, /home/username/site.com ). Сохраните изменения и выйдите из меню редактора (Ctrl+O и Ctrl+X ). Перезапустите Apache.

Если у вас на VPS установлена ОС Debian/Ubuntu , то править строку DocumentRoot необходимо в файле /etc/apache2/sites-available/default . Откройте его для редактирования и замените стандартное значение /var/www на абсолютный путь к домашней директории сайта. Выполните перезапуск веб-сервера.

На этом базовая настройка виртуальных хостов окончена.

В этой заметке речь пойдет о настройке виртуальных хостов 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 . Если вы все сделали правильно, то увидете что-то вроде:

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

Термин Virtual Host (виртуальный хост) относится к практике запуска более чем одного сайта (такие как company1.example.com и company2.example.com) на одной машине. Виртуальные хосты могут быть "IP-based", что означает, что у вас есть различные IP адреса для каждого сайта, или "name-based", что означает, что у вас есть несколько имён, работающие на каждом IP адресе. Для конечного пользователя тот факт, что эти сайты работают на одном и том же физическом сервере, не является очевидным, то есть он может об этом и не знать.

Можно создать виртуальный хост Apache — один или сразу много. Суть хостов Apache в том, что в браузере вместо ввода IP к сайту можно обратиться по имени хоста — точно также как мы открываем все сайты в Интернете: мы вводим доменное имя, а не IP адрес сайта. Аналогично можно настроить и на локальном веб-сервере: в браузере вместо 127.0.0.1 или вместо localhost можно открывать свои локальные сайты, например, по легко запоминающимся именам.

Особенности настройки виртуальных хостов Apache в Windows

Прежде чем приступить к настройке, совсем немного теории: при открытии сайтов по доменному имени или по имени хоста, веб-браузеру всё равно нужно знать IP адрес веб-сервера, куда делается запрос. Эту проблему решают DNS сервера. То есть перед открытием они спрашивают у сервера имён DNS, какой IP имеет сайт, например, ?

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

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

Допустим я хочу создать виртуальный хост Apache с именем php.test , тогда я открываю файл C:\Windows\System32\drivers\etc\hosts и добавляю в него запись

127.0.0.1 php.test

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

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

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

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

Откройте главный конфигурационный файл httpd.conf (например у меня он расположен по адресу C:\Server\bin\Apache24\conf\httpd.conf ).

Найдите там строку:

#Include conf/extra/httpd-vhosts.conf

И раскомментируйте её, чтобы получилось:

Include conf/extra/httpd-vhosts.conf

Найдите строку

LoadModule log_config_module modules/mod_log_config.so

и убедитесь, что она раскомментирована.

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

Теперь откройте сам файл httpd-vhosts.conf (c:\Server\bin\Apache24\conf\extra\httpd-vhosts.conf ). Содержимое этого файла можно просто удалить — оно нам не понадобится.

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

  • ServerName — определяет само имя хоста
  • DocumentRoot — определяет, какие файлы показывать для этого имени, то есть содержит путь до сайта этого хоста

Секций может быть любое количество — столько, сколько вам нужно виртуальных хостов на данном сервере.

Ещё одно правило: первый раздел VirtualHost используется для сбора всех запросов, которые не соответствуют ServerName или ServerAlias в любом другом блоке . То есть первая секция является как бы дефолтной — для всех остальных запросов, которые не предназначены для виртуальных хостов. Поэтому нам нужно сделать как минимум два контейнера :

  1. Будет собирать запросы, которые не предназначены ни для какого из хостов. Обычные запросы, например, к localhost или 127.0.0.1
  2. Контейнер самого хоста (у меня хост называется php.test)

Что будет если не сделать первый («дефолтный») контейнер? Все запросы, которые даже те, которые не предназначаются для php.test, всё равно будут обрабатываться как будто бы они пришли для хоста php.test.

Вместе с контейнером VirtualHost можно указать IP адрес и порт, которые прослушиваются для данного хоста. Если вы используете какой-то нестандартный порт, который ещё не открыт с помощью директивы Listen , то вам нужно добавить эту директиву с соответствующим портом в главный конфигурационный файл или прямо в файл httpd-vhosts.conf . Например, я хочу, чтобы виртуальный хост был привязан к порту 81, тогда перед VirtualHost мне нужно добавить:

Listen 81

Для нашего примера я буду использовать стандартный 80 порт, а в качестве IP адреса укажу звёздочку. Дефолтным хостом у меня является localhost , файлы которого расположены по пути C:/Server/data/htdocs/ , тогда первый контейнер выглядит так:

Второй контейнер создан для хоста php.test , и его файлы будут располагаться в папке , тогда полностью код контейнера будет выглядеть так:

Собираем всё вместе, полное содержимое файла httpd-vhosts.conf :

ServerName localhost DocumentRoot "C:/Server/data/htdocs/" ServerName php.test DocumentRoot "C:/Server/data/htdocs/virthosts/host1/"

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

C:\Server\bin\Apache24\bin\httpd.exe -k restart

Открываю в веб-браузере ссылку http://php.test и вижу там тот файл, который создан для этого хоста (то есть размещён в папке C:/Server/data/htdocs/virthosts/host1/ ):

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

Например, кроме ServerName , можно добавить ещё ServerAlias :

ServerName dummy-host.example.com ServerAlias www.dummy-host.example.com

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

ErrorLog "logs/dummy-host.example.com-error.log" CustomLog "logs/dummy-host.example.com-access.log" common

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

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

 
Статьи по теме:
Календарь: как использовать онлайн-сервис для планирования личного времени
Данное средство Outlook поможет вам спланировать наилучшим образом свои дела (встречи, собрания, события) в течение дня, недели или месяца. С помощью календаря Outlook можно планировать следующее. Встреча . Для этого требуется выделить время в деловом рас
HDD vs SSD в играх: сравнение времени загрузки и производительности
Привет всем Я постараюсь простыми словами рассказать вам что лучше использовать для игр: жесткий диск или SSD. Но это все мои личные мысли я не претендую на истину, ну это так… Я немного разбираюсь в SSD и в HDD, вообще люблю железо.. Все мы знаем что SS
WiFi SiStr – бесплатная утилита для отображения силы сигнала Wi-Fi сетей Программа для поиска точек доступа wifi
В статье рассматривается бесплатное программное обеспечение (ПО) под управлением Microsoft Windows, позволяющее производить предварительный анализ радиопокрытия территории на предмет наличия стороннего оборудования, работающего в Wi-Fi диапазоне 2.4/5 ГГц
Обзор Samsung Galaxy А5 (2016): удачное перерождение Какой экран на самсунг галакси а5
Samsung обновил Galaxy A5 в 2016 году и проделал фантастическую работу над этим Android-смартфоном среднего класса. В прошлом году Samsung приложил немало усилий для модернизации своей топовой серии S, начав с тогдашнего флагмана Samsung Galaxy S6. В 2016