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

После настройки файла 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. По окончанию работы программа сама закроется. Вам останется только проверить созданный хост, набрав в адресной строке браузера имя, которое вы вписали в программу. Если все успешно прошло, то вы увидите страницу с именем нового хоста.

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

Теги: apache, настройка сервера, начинающим

Так как большинство читателей работают с операционной системой 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 ошибках, которые сдерживают развитие вашего лендинга, Наличие именно этих ошибок на целевой странице может пробудить монстра, которого боятся абсолютно все веб-маркетологи - пожирателя конверсии. Вы читаете...

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

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

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

Что такое виртуальный хост? Это такая настройка локального веб-сервера, при которой веб-сервер начинает откликаться на заданное имя, а не только на 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 (если он есть). Таким образом, сразу видно, что виртуальный хост создался, и отображается в браузере. Подобным образом добавляются и другие виртуальные хосты.

Термин 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, можно перенести в конфигурацию виртуальных хостов для их тонкой и индивидуальной настройки.

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

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

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

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

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

Необходимые условия

Перед тем, как приступать, вам необходимо , как описано в шагах 1-4.

Также у вас должен быть установлен Apache, чтобы проделать описываемые ниже шаги. Если он еще не установлен, вы можете сделать это при помощи команды apt-get:

Sudo apt-get update sudo apt-get install apache2

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

В этом руководстве мы создадим виртуальный хост для доменов example.com и test.com . Мы будет ссылаться на них в руководстве, однако вам следует заменить их на свои домены при настройке ваших виртуальных хостов.

Вам необходимо добавить в файл публичный IP-адрес вашего VPS сервера и, следом, доменное имя, по которому вы хотите обращаться к этому VPS.

Для доменов, используемых в этом руководстве, предположим, что IP-адрес нашего VPS 111.111.111.111 . В этом случае мы можем добавить следующие строки в конец файла hosts:

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 с нашего компьютера будут перенаправляться на наш сервер по адресу 111.111.111.111 . Это удобно для проверки правильности настройки наших виртуальных хостов для случая, когда мы не являемся реальными владельцами этих доменных имен.

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

Шаг 7 - Тестирование результатов

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

Http://example.com

Вы должны увидеть похожую страницу:

Аналогично, вы можете зайти на вторую страницу:

Http://test.com

Вы увидите файл, созданный для второго сайта:

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

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

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

Заключение

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

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