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

  1. Создать макет
  2. Создать index.html
  3. Определить виртуальные хосты
  4. Обзор NameVirtualHost
  5. Определить пользовательские виртуальные хосты
  6. Включить сайт
  7. Используйте ServerAlias
  8. Повторите процесс для другого домена
  9. Просмотр файлов журнала
  10. Vhost-файл по умолчанию
  11. Установите адрес электронной почты администратора
  12. Установите доменное имя
  13. Определить индексный файл
  14. Определите путь документов
  15. Установите файлы журнала
  16. Определить ошибки документов
  17. Включить cgi-bin
  18. Установить параметры каталога
  19. Опция просмотра каталогов
  20. Опция SSI
  21. Опция символических ссылок
  22. опция .htaccess
  23. Нет вариантов
  24. Варианты иерархии
  25. Резюме

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

Создать макет

В этом примере используются два домена: domain1.com и domain2.com.

  1. В вашем домашнем каталоге создайте папку public_html:

    cd ~ mkdir public_html

  2. Для каждого домена, который вы хотите разместить, создайте папку со стандартным набором подпапок. Следующие команды создают папки public, private, log, cgi-bin и backup для domain1.com и domain2.com:

    mkdir -p public_html / domain1.com / {public, private, log, cgi-bin, backup} mkdir -p public_html / domain2.com / {public, private, log, cgi-bin, backup}

Создать index.html

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

  1. Для каждого домена создайте файл index.html:

    nano public_html / domain1.com / public / index.html

  2. Добавьте следующий код в файл index.html:

    <html> <head> <title> domain1.com </ title> </ head> <body> <h1> domain1.com </ h1> </ body> </ html>

  3. Повторите процесс, чтобы у вас был похожий файл для domain2.com. Замените все экземпляры domain1.com на domain2.com.

Определить виртуальные хосты

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

Обзор NameVirtualHost

Для виртуальных хостов параметр NameVirtualHost часто вызывает путаницу.

Каждый интерфейс и порт, на котором Apache настроен на прослушивание, нуждается в директиве NameVirtualHost. Вы можете определить директиву только один раз для каждого порта.

В макете Apache для Ubuntu есть директива NameVirtualHost по умолчанию в файле ports.conf.

Выполните следующую команду, чтобы просмотреть содержимое файла ports.conf:

cat /etc/apache2/ports.conf

Вы должны получить следующий вывод (если вы ранее не изменяли файл):

# Если вы просто измените порт или добавите больше портов здесь, вы, вероятно, также # должны будете изменить оператор VirtualHost в # / etc / apache2 / sites-enabled / 000-default NameVirtualHost *: 80 Listen 80 <IfModule mod_ssl.c> # Виртуальные хосты на основе имени SSL еще не поддерживаются, поэтому здесь нет оператора # NameVirtualHost. Прослушивание 443 </ IfModule>

Параметр NameVirtualHost по умолчанию удовлетворяет требованиям в настоящее время - Apache будет применять логику виртуального хоста на основе имен и параметры для запросов HTTP, выполненных на любом доступном интерфейсе (*) на порту 80.

Примечание . Размещение директивы NameVirtualHost по умолчанию в 'ports.conf' является новым для макета Apache в Ubuntu; предыдущие выпуски Ubuntu помещали аналогичную настройку в vhost по умолчанию.

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

Теперь вы готовы добавить свои собственные виртуальные хосты, чтобы вы могли начать обслуживать свои домены.

Создайте файл vhost для domain1:

sudo nano /etc/apache2/sites-available/domain1.com.conf

Содержание выглядит следующим образом:

# Поместите любые заметки или комментарии, которые у вас есть здесь # Это облегчит любую настройку в ближайшие недели # domain: domain1.com # public: /home/demo/public_html/domain1.com/ <VirtualHost *: 80> # Электронная почта администратора, имя сервера (имя домена) и любые псевдонимы ServerAdmin [email protected] ServerName domain1.com ServerAlias ​​www.domain1.com # Индексный файл и корень документа (там, где находятся публичные файлы) DirectoryIndex index.html DocumentRoot / home / demo / public_html / domain1.com / public # Пользовательские расположения файлов журнала LogLevel warn ErrorLog /var/log/apache2/error-mydomainname.com.log CustomLog /var/log/apache2/access-mydomainname.com.log в сочетании </ VirtualHost >

Включить сайт

Включите сайт следующим образом:

sudo a2ensite domain1.com

Вывод команды выглядит следующим образом:

Сайт domain1.com установлен; Запустите /etc/init.d/apache2 reload, чтобы включить.

Запустите рекомендуемую команду:

sudo /etc/init.d/apache2 reload

Чтобы протестировать домен без создания зоны DNS и записей на некоторых серверах имен Интернета, вы можете изменить файл «/ etc / hosts» на локальном компьютере, включив в него некоторые записи, отображающие «domain1.com», «domain2.com» и остальное - общедоступный IP-адрес демонстрационного Cloud Server:

127.0.0.1 localhost ... # записей, связанных с демонстрационным облачным сервером 123.45.67.890 domain1.com 123.45.67.890 www.domain1.com 123.45.67.890 domain2.com ...

Расположение файла hosts зависит от того, какая ОС загружена на ваш локальный компьютер.

Примечание . Записи в файле hosts должны быть удалены перед тестированием и использованием действующих DNS-зон и записей, созданных на серверах имен Интернета. Невозможность их удаления может привести к путанице с вашей стороны и неточным проверкам новых или измененных общедоступных записей DNS.

С такими изменениями, внесенными в целях тестирования, вы можете перейти на свой сайт в веб-браузере на локальном компьютере, и отобразится содержимое файла public / index.html.

Используйте ServerAlias

Обратите внимание, что в файле vhost вы устанавливаете ServerAlias. Если у вас правильно настроен DNS, вы также можете использовать этот адрес.

Мы поговорим о принудительном использовании одного или другого адреса в следующей статье о правилах перезаписи.

Повторите процесс для другого домена

Чтобы создать и включить domain2.com, повторите процедуру следующим образом:

  1. Создайте файл vhost:

    sudo nano /etc/apache2/sites-available/domain2.com ... # Введите данные для domain2.com согласно приведенному выше примеру

  2. Включите сайт и перезапустите Apache:

    sudo a2ensite domain2.com ... sudo /etc/init.d/apache2 перезагрузить

  3. Перейдите ко второму домену:

    http://domain2.com или http://www.domain2.com

Вы должны увидеть индексный файл 'domain2.com'.

Просмотр файлов журнала

Как определено в файле vhosts, каждый домен имеет свои собственные файлы журнала.

Список журналов для ваших доменов:

ls /var/log/apache2/error-mydomainname.com.log

Вывод точно такой, как ожидалось:

access.log error.log

Vhost-файл по умолчанию

Хотя вы изменили виртуальный хост по умолчанию, вы оставили его на месте.

Если кто-то вводит IP-адрес облачного сервера, он получает содержимое этого файла vhosts по умолчанию (если вы не настроили отдельный vhost для IP-адреса).

Почему они обслуживаются из этого файла vhost?

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

Если вы отключили или удалили файл vhost по умолчанию, то будет отображаться содержимое домена domain1.com (в алфавитном порядке перед доменом domain2.com).

Это то, что нужно учитывать при планировании ваших сайтов. Вы хотите, чтобы определенный домен был по умолчанию? Вы хотите, чтобы IP-адрес имел совершенно другое содержание?

Установите адрес электронной почты администратора

Установите адрес электронной почты для администратора сервера. Этот адрес используется, если вы настроили сервер для связи с вами при возникновении ошибок. Это также отображается в ServerSignature, если его значение установлено в Email. (См. Раздел Определение нижних колонтитулов Apache .

ServerAdmin [email protected]

Установите доменное имя

Установите доменное имя (ServerName) для виртуального хоста. Вы можете иметь столько псевдонимов (ServerAlias), сколько требуется. Например, вы можете указать, что domain.com и domain.net указывают на одно и то же содержимое.

ServerName domain.com ServerAlias ​​www.domain.com

Примечание . Это не правило перезаписи, но определенные здесь домены будут обслуживать один и тот же контент (при условии, что вы установили DNS для указания IP-адреса вашего облачного сервера).

Определить индексный файл

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

DirectoryIndex index.html

Примечание . Это не очень хороший метод для перенаправления пользователей, поскольку они могут перейти непосредственно на неопределенную страницу, такую ​​как domain.com/index.php, тогда как значение DirectoryIndex работает только для тех, кто входит в domain.com.

Определите путь документов

Определите местоположение публичных файлов домена. Используйте абсолютный путь.

DocumentRoot /home/demo/public_html/domain.com/public

Установите файлы журнала

Установите уровни журналов и расположение файлов журналов виртуальных хостов.

LogLevel warn ErrorLog /var/log/apache2/error-mydomainname.com.log CustomLog /var/log/apache2/access-mydomainname.com.log вместе взятые

Определить ошибки документов

Установите ErrorDocument, который используется для всех стандартных сообщений об ошибках.

ErrorDocument 404 /errors/404.html ErrorDocument 403 /errors/403.html

В этом примере в общедоступном каталоге находится папка «ошибки». Каждый документ об ошибках был создан и помещен в папку ошибок. Указанные пути относятся к папке DocumentRoot, определенной ранее.

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

Определите ServerSignature, чтобы указать, будут ли сведения о сервере отображаться на каких-либо сгенерированных сервером страницах ошибок или в списках индексов. Возможные варианты: Вкл., Выкл. И Электронная почта.

ServerSignature On

Уровень детализации в подписи настраивается через ServerTokens, который не может быть установлен в файле Virtual Hosts. Для макета Apache в Ubuntu это правильно установлено в '/etc/apache2/conf.d/security'. Обратитесь к статье Apache configuration # 2 NEED LINK для более подробной информации.

Если ServerSignature установлен на Email , будет отображаться электронная почта ServerAdmin.

Включить cgi-bin

Включите расположение cgi-bin, как определено в пользовательском макете виртуальных хостов. Вы можете оставить cgi-bin в папке DocumentRoot, если хотите.

ScriptAlias ​​/ cgi-bin / /home/demo/public_html/domain.com/cgi-bin/ <Location / cgi-bin> Параметры + ExecCGI </ Location>

Установить параметры каталога

Установите параметры для указанного каталога. В следующем примере включается опция FollowSymLinks для общедоступного каталога domain.com.

Опции FollowSymLinks

Ниже приведены другие параметры, которые вы можете установить:

Опция просмотра каталогов

Чтобы отключить просмотр каталогов, используйте -Indexes. Чтобы включить просмотр каталогов, используйте + Indexes.

Опции -индексы

Опция SSI

Включить или отключить Включения на стороне сервера. В следующем примере это отключено.

Опции -Включает

Опция символических ссылок

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

Опции -FollowSymLinks

Вы можете использовать директиву SymLinksIfOwnerMatch вместо FollowSymLinks. Директива SymLinksIfOwnerMatch позволяет использовать символические ссылки только в том случае, если владелец ссылки идентичен владельцу целевого файла или каталога (с точки зрения владения / разрешений для файловой системы Linux). Это предотвращает многие угрозы безопасности, которые может создать простая директива FollowSymlinks.

опция .htaccess

Установите AllowOverride на None, чтобы отключить поддержку .htaccess. Установите все, чтобы разрешить поддержку.

AllowOverride Нет

Вы также можете указать, какие функции .htaccess включить, например:

AllowOverride AuthConfig Индексы

Апач Htaccess а также AllowOverride Документы имеют больше информации о различных функциях.

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

AccessFileName .myobscurefilename <Files ~ "^ \. My"> <SatisfyAll> Требовать все отказано </ SatisfyAll> </ Files>

Примечание . Предыдущий пример отформатирован для Apache 2.4. Если используется 2.2, замените <SatisfyAll> Require all denied </ SatisfyAll> ** на ** Order Allow, Deny | Запретить от всех | Удовлетворить все .

Нет вариантов

Укажите Нет, чтобы отключить все доступные параметры.

Варианты Нет

Варианты иерархии

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

AllowOverride Нет Параметры Нет AllowOverride Все

Первый параметр каталога отключит все параметры и отключит поддержку .htaccess для всех каталогов.

Однако второй параметр каталога переопределит первый и разрешит поддержку .htaccess для каталога domain.com/public.

Резюме

Файл виртуальных хостов - простой в использовании инструмент, но очень мощный. Мы рекомендуем вам ввести один параметр, а затем проверить его. Затем введите следующую настройку и проверьте, и так далее.

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

© 2019 Rackspace US, Inc.

Если не указано иное, контент на этом сайте лицензируется в соответствии с лицензией Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported.

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

Смотрите спецификацию лицензии и ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ

Почему они обслуживаются из этого файла vhost?
Вы хотите, чтобы определенный домен был по умолчанию?
Вы хотите, чтобы IP-адрес имел совершенно другое содержание?

Новости

Как сбалансировать юзабилити и дизайн при создании сайта — User House
Красота или уродство в веб-дизайне всегда связаны с восприятием конкретного человека. То, что для одного «красиво», может быть «ужасным» для другого и наоборот. Но как же так получается, что многие популярные

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

Знакомство с юзабилити-тестированием сайта. // webknowledge.ru
Перевод статьи:   An Introduction To Website Usability Testing. Автор:   Thomas Churm. При создании нового сайта необходимо учитывать множество факторов. Для того чтобы у посетителей возникло

Специалист по web-usability – боец невидимого фронта
Ярослав Перевалов Что такое usability engineering? Часто ли вы, бродя по Сети, обращаете внимание на то, насколько качественно структурирована информация на сайте и насколько удобно устроена навигация?

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

25 советов как улучшить юзабилити (usability) вашего сайта. | Блог об интернет деятельности и трудовых буднях Максима Вячеславовича
Доброго времени суток, дорогие друзья! Сегодня мы поговорим с вами о такой важной вещи как U sability (юзабилити) сайта , о том, как улучшить данный фактор, зная его основные принципы и правила.

Что такое юзабилити и зачем оно нужно
Юзабилити включает простоту, удобство в пользовании, тестирование, проведение аудита проекта. Юзабилити сайтов, интернет-магазинов — это неотъемлимая часть выгодного ведения бизнеса. Задача юзабилити

Юзабилити тестирование сайта турагентства
«Когда информации много и она дешева, дорогим становится внимание». James Gleick Представим сайт, владелец которого считает его достаточно хорошим, удобным и привлекательным. Он размещает рекламные объявления

Юзабилити
Юзабилити (от англ. слова «usability» – практичность, простота использования) – это весьма распространенное ныне понятие объединяет максимальное удобство использования сайта и полезность информации, на

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

Карта