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

Как настроить виртуальные хосты Apache в Debian 10

Виртуальные хосты Apache позволяют запускать более одного веб-сайта на одной машине. С помощью виртуальных хостов вы можете указать корень документа сайта (каталог, содержащий файлы веб-сайта), создать отдельную политику безопасности для каждого сайта, использовать разные сертификаты SSL и многое другое.

В этой статье описывается, как настроить виртуальные хосты Apache на сервере Debian 10.

Подготовка

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

  • Доменное имя, указывающее на IP вашего публичного сервера.
  • Apache установлен в вашей системе CentOS .
  • Вы вошли в систему как root или пользователь с привилегиями sudo .

Создайте структуру каталогов

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

Мы будем использовать следующую структуру каталогов:

Каждый домен, размещенный на сервере, будет иметь корневой каталог документа /var/www/ /public_html .

Начнем с создания корневого каталога документов для первого домена example.com :

Мы также создадим файл index.html внутри корневого каталога документов домена, который будет отображаться при посещении домена в браузере.

Откройте ваш любимый текстовый редактор, создайте новый файл и вставьте в него следующее:

Поскольку приведенные выше команды выполняются от имени пользователя sudo, вновь созданные файлы и каталоги принадлежат пользователю root. Чтобы избежать проблем с разрешениями, измените владельца корневого каталога документов домена и всех файлов в каталоге пользователю apache ( www-data ):

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

В системах Debian файлы конфигурации виртуальных хостов Apache расположены в каталоге /etc/apache2/sites-available и могут быть включены путем создания символических ссылок на каталог /etc/apache2/sites-enabled , который Apache читает во время запуска.

Откройте нужный текстовый редактор и создайте следующий базовый файл конфигурации виртуального хоста:

  • ServerName : домен, который должен соответствовать данной конфигурации виртуального хоста. Это должно быть ваше доменное имя.
  • ServerAlias : все другие домены или субдомены, которые также должны соответствовать этому виртуальному хосту, обычно субдомен www .
  • DocumentRoot : каталог, из которого Apache будет обслуживать файлы домена.
  • Options : эта директива определяет, какие функции сервера доступны в определенном каталоге.
    • -Indexes : предотвращает -Indexes каталогов.
    • FollowSymLinks : если этот параметр включен, Apache будет следовать символическим ссылкам.
  • AllowOverride : указывает, какие директивы, объявленные в файле .htaccess могут переопределять директивы конфигурации.
  • ErrorLog , CustomLog : указывает расположение файлов журнала.

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

Вы можете назвать файл конфигурации как хотите. Лучше всего использовать доменное имя в качестве имени файла конфигурации виртуального хоста.

Чтобы включить новый файл виртуального хоста, используйте вспомогательный сценарий a2ensite который создает символическую ссылку из файла виртуального хоста в каталог с поддержкой sites-enabled :

Другой вариант — вручную создать символическую ссылку, как показано ниже:

После включения конфигурации проверьте правильность синтаксиса:

Если ошибок нет, вы увидите следующий вывод:

Перезапустите службу apache2 чтобы изменения вступили в силу:

Чтобы убедиться, что все работает должным образом, откройте http://example.com в своем любимом браузере, и вы увидите что-то вроде этого:

Выводы

В этом руководстве мы показали вам, как создать конфигурацию виртуального хоста Apache в Debian 10, Buster. Вы можете повторить описанные выше шаги и создать дополнительные виртуальные хосты для всех ваших доменов.

Читайте также:  Rtx 2060 super драйвер windows 10

Если вы хотите защитить свой веб-сайт с помощью сертификата SSL, вы можете создать и установить бесплатный сертификат Letsencrypt SSL .

Не стесняйтесь оставлять комментарии, если у вас есть вопросы.

Этот пост является частью серии « Как установить LAMP Stack на Debian 10 ». Другие сообщения из этой серии:

Источник

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

Кроме того, можно добавить секции для индивидуальной настройки хоста:

Читайте также:  Команды для ремонта windows

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

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

Источник

Как настроить виртуальные хосты Apache в Ubuntu 18.04

В этом руководстве мы предоставим пошаговые инструкции о том, как настроить виртуальные хосты Apache в Ubuntu 18.04.

Виртуальные хосты Apache позволяют запускать более одного веб-сайта на одной машине. С помощью виртуальных хостов вы можете указать корень документа сайта (каталог, содержащий файлы сайта), создать отдельную политику безопасности для каждого сайта, использовать разные сертификаты SSL и многое другое.

Читайте также:  Ntfs sys ошибка при загрузке windows

Хотя это руководство написано для Ubuntu 18.04 Bionic Beaver, те же шаги можно использовать для Ubuntu 16.04 Xenial Xerus.

Подготовка

Прежде чем продолжить работу с этим руководством, убедитесь, что вы выполнили следующие предварительные требования:

  • У вас есть доменное имя, указывающее на IP-адрес вашего публичного сервера. Мы будем использовать example.com .
  • У вас установлен Apache, следуя этим инструкциям .
  • Вы вошли в систему как пользователь с привилегиями sudo .

Создайте структуру каталогов

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

По сути, мы создадим отдельный каталог для каждого домена, который хотим разместить на нашем сервере, в каталоге /var/www . В каждом из этих каталогов мы создадим каталог public_html котором будут храниться файлы веб-сайта домена.

Начните с создания корневого каталога для домена example.com :

В целях тестирования также создайте файл index.html внутри корневого каталога документов домена.

Откройте ваш редактор и создайте демонстрационный файл:

В этом руководстве мы запускаем команды от имени пользователя sudo, а вновь созданные файлы и каталоги принадлежат пользователю root.

Чтобы избежать проблем с разрешениями, мы можем изменить владельца корневого каталога документов домена на пользователя apache ( www-data ):

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

По умолчанию в системах Ubuntu файлы конфигурации виртуальных хостов Apache хранятся в каталоге /etc/apache2/sites-available и их можно включить, создав символические ссылки на каталог /etc/apache2/sites-enabled .

Откройте выбранный вами редактор и создайте следующий базовый файл конфигурации виртуального хоста:

  • ServerName : домен, который должен соответствовать данной конфигурации виртуального хоста. Это должно быть ваше доменное имя.
  • ServerAlias : все остальные домены, которые также должны соответствовать этому виртуальному хосту, например субдомен www .
  • DocumentRoot : каталог, из которого Apache будет обслуживать файлы домена.
  • Options : эта директива определяет, какие функции сервера доступны в определенном каталоге.
    • -Indexes : предотвращает -Indexes каталогов.
    • FollowSymLinks : этот параметр указывает вашему веб-серверу следовать символическим ссылкам.
  • AllowOverride : указывает, какие директивы, объявленные в файле .htaccess могут переопределять директивы конфигурации.
  • ErrorLog , CustomLog : указывает расположение файлов журнала.

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

Чтобы включить новый файл виртуального хоста, нам нужно создать символическую ссылку из файла виртуального хоста в каталог с поддержкой sites-enabled , который apache2 читает во время запуска.

Самый простой способ включить виртуальный хост — использовать помощник a2ensite :

Другой вариант — вручную создать символическую ссылку, как показано ниже:

После этого проверьте конфигурацию на наличие синтаксических ошибок с помощью:

Если ошибок нет, вы увидите следующий вывод:

Перезапустите службу Apache, чтобы изменения вступили в силу:

Наконец, чтобы убедиться, что все работает должным образом, откройте http://example.com в выбранном браузере, и вы увидите что-то вроде этого:

Выводы

Вы узнали, как создать конфигурацию виртуального хоста apache для размещения нескольких доменов на одном сервере Ubuntu. Вы можете повторить описанные выше шаги и создать дополнительные виртуальные хосты для всех ваших доменов.

Если вы столкнулись с какой-либо проблемой, не стесняйтесь оставлять комментарий.

Этот пост является частью серии статей о том, как установить LAMP стек на Ubuntu 18.04 . Другие сообщения из этой серии:

Источник

Оцените статью