Как сделать локальный домен apache

Настройка виртуальных хостов на 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/.

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

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. Для этого открываем его текстовым редактором и вносим следующие записи:

Сохраните файл и перезапустите 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%

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

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

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.

Источник

Виртуальные хосты Apache

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

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

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

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

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

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

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

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

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

Как сделать локальный домен apache

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Как сделать локальный домен apache

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

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

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

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

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

Источник

Как настроить виртуальные хосты веб-сервера Apache на Ubuntu 16.10 или 17.04

Введение

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

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

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

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

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

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

Также у вас уже должен быть установлен Apache.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Здесь и далее вместо vim используйте привычным вам текстовый редактор (gedit, если вы находитесь в графическом окружении, или nano в безголовом сервере).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Далее отключим стандартный сайт, определённый в 000-default.conf:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Как сделать локальный домен apache

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

Как сделать локальный домен apache

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

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

Заключение

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

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *