- Создание виртуальных хостов на Apache
- Настройка виртуальных хостов на Apache для начинающих
- Настройка виртуальных хостов APACHE
- Создание структуры каталогов Apache
- Настройка прав Apache
- Создание демо-страниц для виртуальных хостов Apache
- Success! The example.com virtual host is working!
- Настройка виртуальных хостов Apache в Windows
- Виртуальные хосты на основе IP-адреса
- Виртуальные хосты на основе имени хоста
Создание виртуальных хостов на Apache
Данное руководство предназначено для использования в локальной среде тестирования на Windows. Инструкции подходят для Apache 2.4 и более поздних версий.
- Создайте вложенную папку внутри C:\vhosts для каждого виртуального хоста, который вы хотите добавить на сервер Apache.
- Откройте C:\WINDOWS\system32\drivers\etc\hosts в блокноте или в любом другом текстовом редакторе. Найдите следующую строку в нижней части документа:
- На отдельной пустой строке введите 127.0.0.1, затем поставьте пробел и введите имя виртуального хоста, который необходимо зарегистрировать. Например, чтобы создать виртуальный хост с именем mysite, введите следующую команду:
- Добавьте нужное количество дополнительных виртуальных хостов, каждый из которых должен быть введён на отдельной строке с указанием того же IP-адреса (127.0.0.1). Сохраните файл хостов, и закройте его.
- Откройте конфигурационный файл Apache, httpd.conf , в текстовом редакторе. Он находится в файлах Apache в папке conf . Если вы используете XAMPP, этот файл находится по адресу C:\xampp\apache\conf\httpd.conf . Прокрутите вниз до конца раздела Supplemental configuration и найдите следующий раздел (приблизительно около 500 строки):
- Сотрите # около начала второй строки, раздел теперь должен выглядеть так:
- Сохраните файл httpd.conf и закройте его.
- Откройте extra\httpd-vhosts.conf в блокноте или в любом другом текстовом редакторе. Если вы используете XAMPP, то адрес будет таким C:\xampp\apache\conf\extra\httpd-vhosts.conf . Главный раздел выглядит так:
В XAMPP все строки будут закомментированы. Вам нужно удалить # в начале строки, содержащей следующую директиву:
Настройка виртуальных хостов на Apache для начинающих
В прошлых статьях мы установили и настроили на локальном компьютере сервер Apache. В принципе, на этом можно было бы остановиться, так как сервер находится в рабочем состоянии и его можно спокойно использовать в работе. Но, по личному опыту, могу сказать, что использование только одного хоста localhost не очень удобно при разработке нескольких сайтов, так как для каждого сайта нужно будет создавать в каталоге localhost отдельный каталог и со временем в ней (папке localhost) будет очень трудно разобраться и что-то найти. Да и при тестировании разрабатываемого проекта гораздо удобнее набирать в браузере адрес вида test, чем localhost/test. Поэтому мы приступаем к настройке виртуальных хостов на локальном сервере.
Вообще, существует два способа конфигурирования виртуальных хостов: на основе имени и на основе IP-адреса. Но, так как мы настраиваем локальный сервер и у нас только один IP (кстати, для локалки он 127.0.0.1), то вариант с привязкой к IP нам не подходит и мы будем рассматривать вариант с привязкой к имени.
В прошлой статье я уже упоминал, что в файле конфигурации httpd.conf сервера есть строчка Include conf/extra/httpd-vhosts.conf. Мы ее уже раскомментировали, поэтому собственно и переходим к этому файлу. Найти его можно в папке Apache/conf/extra/.
Начнем рассматривать содержимое файла.
Первая директива – это NameVirtualHost *:80 привязывает виртуальные хосты, указываемы далее, к именам сайтов указанных в секциях . Здесь вместо звездочки можно вписать IP 127.0.0.1, но тогда во всех секциях нужно будет указать то же самый IP. Принцип работы этой директивы заключается в том, что при обращении, допустим, к адресу localhost, сервер проверяет, соответствует ли входящий адрес и порт, описанным в секциях VirtualHost и имеется ли запись 127.0.0.1:80 в директиве NameVirtualHost. Если соответствует, то он перебирает секции VirtualHost, в заголовках которых указан входящий адрес. Таким образом, запрос 127.0.0.1:80 будет распределяться только между виртуальными хостами, в которых он указан.
Дальше в файле идут секции VirtualHost. Как видно из названия, каждая секция описывает настройки каждого виртуального хоста. Обязательно должна быть хотя бы одна такая секция, которая описывает настройки для localhost.
DocumentRoot “D:/server/localhost/www”
ServerName localhost
ErrorLog “D:/server/logs/localhost.error.log”
CustomLog “D:/server/logs/localhost.access.log” common
Директива DocumentRoot в этой секции указывает на папку, к которой будет происходить обращение при вызове адреса localhost.
ServerName как раз содержит имя нашего виртуального хоста, то есть его адрес. Сюда можно вписывать как адреса вида localhost, test, site, так и адреса localhost.ru, test.com, www.site.org.
В ErrorLog и CustomLog мы указываем, где будут хранится логи этого виртуального хоста. Обратите внимание, имеет смысл для каждого хоста добавлять в имя файла лога название этого хоста, чтобы в будущем было легко найти лог требуемого хоста. Эти директивы можно и не указывать, но тогда логи этого виртуального хоста будут храниться в общих логах сервера.
В таком виде секция виртуального хоста уже работоспособна и на этом можно остановиться. Но можно добавить такие директивы как:
- ServerAdminwebmaster@site.ru – адрес электронки администратора виртуального хоста
- ServerAlias www.site.ru – зеркало хоста
Кроме того, можно добавить секции для индивидуальной настройки хоста:
ScriptAlias /cgi-bin/ “d:/server/host_name/cgi-bin”
Создает ссылку на папку скриптов cgi-bin для хоста host_name.
Options Indexes Includes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
Настройки директории хоста host_name, их мы разбирали в прошлой статье.
После настройки файла httpd-vhosts.conf проверим правильность его конфигурации. В каталоге D:\server\Apache\bin\ создайте файл httpd-S.cmd с содержимым:
“D:\server\Apache\bin\httpd.exe” –S
pause
После запуска этого файла вы увидите окно с отчетом о проверке, Syntax OK в конце говорит о том, что все настройки в порядке.
Теперь нужно прописать созданные хосты в файл C:\Windows\system32\drivers\etc\hosts. Для этого открываем его текстовым редактором и вносим следующие записи:
127.0.0.1 www.host1.ru host1.ru #Чтобы не набирать www перед именем сайта, создаем зеркало
127.0.0.1 www.host2 host2 #Можно и без .ru создавать хосты
127.0.0.1 host3 #Самый распространенный вариант для локалки
127.0.0.1 localhost # Обычно уже указано, проследите чтобы случайно не удалили и не закомментировали.
Сохраните файл и перезапустите Apache. Попробуйте разместить в каталогах созданных вами виртуальных хостов какие-нибудь тестовые файлы (например index.html) и из браузера открыть хосты по адресам, указанным в директории ServerName каждого хоста.
Если вам приходится часто создавать виртуальные хосты и не очень хочется каждый раз редактировать все эти файлы и перезапускать Apache вручную, создайте в папке сервера (D:\server\) файл createVH.cmd с таким содержимым:
@cls
@rem Получаем текущую папку. Если у вас структура папок сервера как у меня, но он установлен, например на другом диске, укажите здесь вместо %
dp0 путь с нему (например, D:\server\) косая черта в конце обязательна.
@set server_path=%
dp0
:dir_exist
@set /P new_dir=»Enter new VHost name:»
@set /P ip_add=»Enter your IP address:»
@ if exist %server_path%%new_dir% echo «VHost %new_dir% already exist. Please re-enter Vhost name.»
@ if exist %server_path%%new_dir% goto dir_exist
@md %server_path%%new_dir%
@rem Здесь указывается путь до конфиг файла виртуальных хостов, если у вас другой , поменяйте
@set outputfile=%server_path%Apache\conf\extra\httpd-vhosts.conf
@echo. >> %outputfile%
@echo ^ >> %outputfile%
@echo ServerName %new_dir% >> %outputfile%
@echo DocumentRoot «%server_path%%new_dir%» >> %outputfile%
@echo ErrorLog «%server_path%logs\%new_dir%.error.log» >> %outputfile%
@echo CustomLog «%server_path%logs\%new_dir%.access.log» common >> %outputfile%
@echo ^ >> %outputfile%
@if %ip_add%==* set ip_host=127.0.0.1
@if not %ip_add%==* set ip_host=%ip_add%
@set hostfile=%windir%\system32\drivers\etc\hosts
@echo. >> %hostfile%
@echo %ip_host% %new_dir% >> %hostfile%
@set htmlfile=%server_path%%new_dir%\index.html
@echo ^ >> %htmlfile%
@echo ^ >> %htmlfile%
@echo ^ %new_dir%^ >> %htmlfile%
@echo ^ >> %htmlfile%
@echo ^ >> %htmlfile%
@echo %new_dir% >> %htmlfile%
@echo ^ >> %htmlfile%
@echo ^ >> %htmlfile%
@rem Здесь путь до самого сервера, если у вас другой, поменяйте
@start %server_path%Apache\bin\httpd.exe -k restart
Теперь для создания хоста просто запустите этот файл, впишите в ответ имя нового хоста и IP, который будет указываться в секции VirtualHost файла httpd-vhosts.conf. По окончанию работы программа сама закроется. Вам останется только проверить созданный хост, набрав в адресной строке браузера имя, которое вы вписали в программу. Если все успешно прошло, то вы увидите страницу с именем нового хоста.
Обратите внимание, программа рассчитана на то, что структура каталогов сервера соответствует той, которую я указывал в первой статье. Если у вас установлен сервер по другим путям, поправьте файл в соответствии с ними.
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.
Настройка виртуальных хостов APACHE
Информация взята из https://www.8host.com/blog/nastrojka-virtualnyx-xostov-apache-v-ubuntu-16-04/
Apache является одним из самых популярных веб-серверов в мире.
Компоненты и функции Apache разделены на отдельные элементы, которые можно индивидуально устанавливать и настраивать. Одним из базовых элементов, отвечающим за индивидуальные параметры сайта или домена, является виртуальный хост.
Виртуальные хосты позволяют администратору использовать один сервер для размещения нескольких сайтов (в рамках одного интерфейса или IP-адреса). Каждый домен, настроенный таким образом, будет направлять посетителя на соответствующий сайт.
Количество виртуальных хостов на одном сервере ограничивается исключительно ресурсами этого сервера.
Данное руководство поможет настроить виртуальные хосты на выделенном сервере Linux, Debian, Ubuntu, что позволит обслуживать разный контент в зависимости от запрашиваемого домена.
- Предварительно настроенный сервер.
- Не-root пользователь с расширенными привилегиями.
- Установленный веб-сервер Apache
sudo apt-get update
sudo apt-get install apache2
Примечание: В руководстве используются условные домены example.com и test.com; не забудьте заменить их своим доменным именем.
Создание структуры каталогов Apache
Для начала нужно создать структуру каталогов, в которой будут храниться данные сайта.
Каталог 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
Примечание: Не забудьте указать свои доменные имена в командах.
Настройка прав Apache
Структура каталогов готова, но все они принадлежат пользователю 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, содержащие контент сайтов, будут принадлежать текущему пользователю.
Также нужно изменить привилегии и открыть веб-каталог и всё его содержимое для чтения, в противном случае страницы будут отображаться некорректно.
Теперь все права установлены верно; можно приступать к созданию контента в специальных каталогах.
Создание демо-страниц для виртуальных хостов Apache
Создайте тестовый контент; для пробной настройки хостов простых страниц будет достаточно. Просто создайте страницы index.html для каждого сайта.
Начнём с example.com; откройте файл index.html в текстовом редакторе:
В этом файле создайте простой HTML-документ, который указывает, к какому сайту подключена страница. В данном случае этот файл выглядит так:
Success! The example.com virtual host is working!
Настройка виртуальных хостов Apache в Windows
Виртуальные хосты могут быть привязаны к имени хоста (например, host.local ) или к IP-адресу (например, 127.0.0.3 ). Рассмотрим оба способа, и начнём с создания директорий виртуальных хостов. После установки Apache у меня уже есть директория DocumentRoot :
Внутри директории d:/work создаем еще три: localhost1 , localhost2 , localhost3 . Внутри каждой директории localhost* создаем еще одну директорию www . В каждую папку www добавляем файл index.html с любым содержанием, который позволил бы идентифицировать хост. Например
- в файл D:\work\localhost1\www\index.html добавляем текст «localhost1»
- в файл D:\work\localhost2\www\index.html добавляем текст «localhost2»
- в файл D:\work\localhost3\www\index.html добавляем текст «localhost3»
В файле C:\wamp\apache\conf\httpd.conf надо найти и раскоментировать строку:
В файле C:\wamp\apache\conf\extra\httpd-vhosts.conf надо закомментировать (или удалить) те строки, которые приведены по умолчанию.
Виртуальные хосты на основе IP-адреса
Для виртуальных хостов, которые привязаны к IP, требуются несколько IP-адресов. Таковые у нас имеются: это 127.0.0.1 , 127.0.0.2 , 127.0.0.3 , 127.0.0.4 , 127.0.0.5 и так далее. И к каждому из них можно привязать виртуальный хост.
Для этого добавляем в файл C:\Windows\System32\drivers\etc\hosts строки
А в файл C:\wamp\apache\conf\extra\httpd-vhosts.conf добавляем следующее
Теперь можно обращаться к виртуальным хостам так:
- http://127.0.0.1 , http://localhost/ , http://host.ru/ , http://www.host.ru/
- http://127.0.0.2 , http://localhost1/ , http://host1.ru/ , http://www.host1.ru/
- http://127.0.0.3 , http://localhost2/ , http://host2.ru/ , http://www.host2.ru/
- http://127.0.0.4 , http://localhost3/ , http://host3.ru/ , http://www.host3.ru/
Виртуальные хосты на основе имени хоста
Для этого добавляем в файл C:\Windows\System32\drivers\etc\hosts строки
А в файл C:\wamp\apache\conf\extra\httpd-vhosts.conf добавляем следующее
Теперь можно обращаться к виртуальным хостам так: