Apache2 virtualhost настройка: Настройка виртуальных хостов Apache — Losst

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

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

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

Содержание статьи:

Как работают виртуальные хосты Apache?

Не будем пока о локальных системах. Если у вас есть веб-сайт, то наверное, вы занимались парковкой домена и уже знаете как все настраивается. Сначала используется DNS сервер, который выдает IP адрес вашего сервера всем клиентам, запросившим адрес этого домена. Затем клиенты отправляют запрос на ip вашего сервера, а веб-сервер уже должен его обработать.

Обычно, на хостингах один веб-сервер обслуживает десятки, а то и сотни сайтов. И как вы понимаете, все запросы поступают на один ip. Для распределения их между папками на сервере используется имя домена, которое передается вместе с запросом в HTTP заголовке «Host». Именно поэтому нужно выполнять парковку домена не только на DNS сервисе, но и на вашем сервере.

Вы настраиваете виртуальные хосты Apache, а затем веб-сервер сравнивает домен, переданный в заголовке «Host» с доступными виртуальными доменами и если находит совпадение, то возвращает содержимое настроенной папки или содержимое по умолчанию, или ошибку 404. Нужно сказать, что вы можете настроить виртуальный хост для любого домена, например, vk.com или losst.pro. Но пользователи смогут получить доступ к этому домену у вас, только если к вам будут поступать запросы от браузеров, в которых будет значиться этот домен. А теперь детальнее про настройку.

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

Я уже подробно рассматривал как настроить Apache в отдельной статье. Поэтому не буду полностью расписывать здесь все конфигурационные файлы. Остановимся на файлах виртуальных хостов. Для удобства они вынесены в отдельные папки:

  • /etc/apache2/sites-available
  • /etc/apache2/sites-enabled

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

Для примера, создадим новый конфигурационный файл для виртуального хоста site1.ru. Для этого просто скопируем существующую конфигурацию для хоста по умолчанию — 000-default:

$ sudo cp /etc/apache2/sites-enabled/000-default.conf /etc/apache2/sites-enabled/site1.ru.conf

Сначала рассмотрим синтаксис того, что вы увидите в этом файле:

<VirtualHost адрес_хоста_для прослушивания:порт> ServerName домен ServerAlias псевдоним_домена ServerAdmin емейл@администратора DocumentRoot /путь/к/файлам/сайта ErrorLog /куда/сохранять/логи/ошибок/error. log CustomLog /куда/сохранять/логи/доступа/access.log combined </VirtualHost>

Это минимальная конфигурация, которую вам нужно указать, чтобы создать виртуальный хост Apache. Конечно, здесь вы можете использовать и другие директивы Apache, такие как Deny, Allow и многие другие. А теперь рассмотрим наш пример для тестового сайта site1.ru:

<VirtualHost *:80> ServerName site1.ru ServerAdmin webmaster@localhost DocumentRoot /var/www/html/site1.ru/ ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>

Здесь мы используем звездочку вместо ip адреса, это значит, что веб-сервер будет слушать соединения на всех адресах, как на внешнем, так и на localhost. Порт 80, это порт по умолчанию. Затем указываем домен, электронный адрес администратора, и путь к папке, в которой будут находиться данные сайта. Две строчки Log говорят куда сохранять логи, но добавлять их необязательно. Дальше, нам нужно активировать этот хост. Мы можем вручную создать ссылку или использовать уже заготовленную команду:

sudo a2ensite site1.ru

Затем перезапустите Apache:

sudo systemctl restart apache2

И нам осталось все это протестировать. Если ваш сервер имен еще не направляет запросы к домену на ваш ip, а вы хотите уже проверить как все работает, можно пойти обходным путем. Для этого достаточно внести изменения в файл /etc/hosts на машине, с которой вы собрались открывать сайт. Этот файл, такой себе локальный DNS. Если компьютер находит ip для домена в нем, то запрос в интернет уже не отправляется. Если вы собираетесь тестировать с той же машины, на которую установлен Apache2, добавьте:

sudo vi /etc/hosts

127.0.0.1 site1.ru

Если же это будет другой компьютер, то вместо 127.0.0.1 нужно использовать адрес вашего сервера, на котором установлен Apache. Затем можете открыть сайт в браузере:

site1. ru

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

Если вы хотите использовать современный безопасный протокол https для работы вашего виртуального хоста, то вам кроме обычного хоста на порту 80 будет необходимо создать виртуальный хост на порту 443. Здесь будет не так много отличий, вот пример, для нашего сайта site1.ru:

<IfModule mod_ssl.c> <VirtualHost *:443> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ServerName site1.ru ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLEngine on SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> </VirtualHost> </IfModule>

Теперь о каждой новой строчке более подробно:

  • <IfModule mod_ssl.c> — весь код в этой секции будет выполнен только в том случае, если активирован модуль mod_ssl.
    Это нужно для безопасности, чтобы если модуль не активирован, то код не вызывал ошибок;
  • SSLEngine — включает поддержку SSL;
  • SSLCertificateFile, SSLCertificateKeyFile — пути к файлам сертификата и приватного ключа;
  • SSLOptions — для скриптов php, cgi и других мы передаем стандартные SSL опции.

Вот и все. Как видите, не так сложно. Осталось перезапустить Apache и проверить как все работает:

sudo a2enmod ssl sudo a2ensite site1.ru-ssl sudo systemctl restart apache2

Затем откройте https адрес в браузере:

https://site1.ru

 

Выводы

В этой статье мы рассмотрели как выполняется настройка виртуальных хостов Apache. Как видите, один веб-сервер может обслуживать сотни сайтов, а создание виртуальных хостов apache совсем не сложно. Надеюсь, эта статья была вам полезной. Если у вас остались вопросы, спрашивайте в комментариях!

Как настроить Virtual Host Apache на CentOS 8

 

В этом руководстве мы покажем вам, как настроить виртуальный хост Apache на CentOS 8. Для тех из вас, кто не знал, Apache Web Server — это программное обеспечение для создания, развертывания и управления веб-сервером с открытым исходным кодом. Первоначально разработанный группой программистов, сейчас он поддерживается Apache Software Foundation. HTTP-сервер Apache — самый популярный веб-сервер в мире с апреля 1996 года. По умолчанию Apache может размещать только один корень документа для всех запросов, что, вероятно, не то, что вы хотите. Мы можем использовать блоки VirtualHost для перевода именованных доменов в соответствующие корни документов с новыми настройками для каждого блока по мере необходимости.

В этой статье предполагается, что у вас есть хотя бы базовые знания Linux, вы знаете, как использовать оболочку, и, что наиболее важно, вы размещаете свой сайт на собственном VPS.  Установка довольно проста и предполагает, что вы работаете с учетной записью root, в противном случае вам может потребоваться добавить sudo к командам для получения привилегий root. Я покажу вам пошаговую настройку веб-сервера Apache виртуального хоста на сервере CentOS 8.

Настройка Virtual Host Apache на CentOS 8

Шаг 1. Сначала давайте начнем с проверки актуальности вашей системы.

sudo dnf update

Шаг 2. Установка Apache на CentOS 8.

Мы будем устанавливать Apache с dnf, который является менеджером пакетов по умолчанию для CentOS 8:

sudo dnf install httpd

После установки запустите и включите веб-сервер Apache для запуска после перезагрузки:

sudo systemctl restart httpd
sudo systemctl status httpd
sudo systemctl enable httpd

Затем настройте брандмауэр CentOS 8 для Apache:

firewall-cmd --add-port=80/tcp --zone=public --permanent
firewall-cmd --add-port=443/tcp --zone=public --permanent
firewall-cmd --reload

Шаг 3.

Создание структуры каталогов.

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

/var/www/
├── your-domain-example.com
│   └── public_html
├── your-domain-example2.com
│   └── public_html

Теперь создадим корневой каталог для домена your-domain-example.com:

sudo mkdir -p /var/www/your-domain-example.com/public_html

Затем создайте файл index.html в корневом каталоге документов домена:

sudo nano /var/www/your-domain-example.com/public_html/index.html
<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Welcome to your-domain-example.com</title>
  </head>
  <body>
    <h2>Success! your-domain-example.com home page!</h2>
  </body>
</html>

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

sudo chown -R apache: /var/www/your-domain-example. com

Шаг 4. Создание файла виртуального хоста.

По умолчанию Apache настроен на загрузку всех файлов конфигурации, которые заканчиваются на .conf, из каталога:/etc/httpd/conf.d/

nano /etc/httpd/conf.d/your-domain-example.com.conf
<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    ServerAdmin [email protected]
    DocumentRoot /var/www/your-domain-example.com/public_html

    <Directory /var/www/your-domain-example.com/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>

    ErrorLog /var/log/httpd/your-domain-example.com-error.log
    CustomLog /var/log/httpd/your-domain-example.com-access.log combined
</VirtualHost>

Протестируйте и перезапустите Apache:

sudo apachectl configtest

Эта команда вернет:

Syntax OK

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

sudo systemctl restart httpd

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

http://your-domain-example.
com

Поздравления! Вы успешно установили Apache . Благодарим за использование этого руководства для настройки веб-сервера Apache виртуального хоста в системе CentOS 8. Для получения дополнительной помощи или полезной информации мы рекомендуем вам посетить официальный сайт Apache .

Как настроить виртуальный хост Apache в Debian GNU/Linux

Устали от LeetCode? 😩

Изучите 24 паттерна, чтобы решить любой вопрос на собеседовании по программированию, не заблудившись в лабиринте практических задач в стиле LeetCode. Практикуйте свои навыки в практической среде кодирования, не требующей настройки. 💪

Настройка веб-сервера, такого как Apache, дает нам только один домен, который http://localhost связан с IP-адресом 127.0.0.1 или другим адресом.

Один хост на сервер:

localhost

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

 http://localhost/time-tracker
http://localhost/smartsapp
 

У нас есть два каталога по адресу http://localhost . Вы можете добавить столько, сколько хотите.

Хотя это решение может работать, обратите внимание, что:

  • Оно не отражает всех реалий рабочего сервера, где каждый сайт имеет свой собственный домен (
    http://time-tracker.com
    ).
  • У вас могут возникнуть проблемы с относительными путями.

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

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

Чтобы разрешить более одного веб-сайта в одной системе или веб-сервере, каждый со своим собственным доменным именем, нам необходимо активировать функцию виртуального хоста на этом сервере. Например, www.amezon.cd и www.facebook.cd могут быть размещены на одном и том же веб-сервере.

Существует много типов методов виртуального хоста, но наиболее часто используется виртуальный хост на основе имени . Это позволяет одному IP-адресу (например, 127.0.0.1 ) размещать более одного веб-сайта (имя хоста). Такой подход позволяет использовать неограниченное количество серверов, прост в настройке и использовании и не требует дополнительного оборудования или программного обеспечения.

Как создать виртуальный хост

Шаг 1: Создайте новый виртуальный хост

В моей установке он находится по адресу: /opt/lampp/etc/extra/httpd-vhosts.conf

  • Теперь откройте его с помощью редактора gedit , используя следующую команду:
 sudo gedit /opt/lampp/etc/extra/httpd-vhosts.conf
 
  • Введите пароль и начните редактирование следующим образом:
 <Виртуальный хост *:80>
    Администратор сервера [email protected]
    DocumentRoot "/opt/lampp/htdocs/time-tracker"
    Имя сервера local.tracker.com
    Псевдоним сервера www.local.tracker.com
    ErrorLog "журналы/tracker. com-error_log"
    CustomLog "logs/tracker.com-access_log" общий
  • В директиве DocumentRoot указываем где находится наш проект. ServerName и ServerAlias ​​ — это доменное имя, на которое сервер должен отвечать. В моем случае сервер ответит на http://local.tracker.com или www.local.tracker.com .

Шаг 2: Зарегистрируйте новое имя виртуального хоста
  • Это необходимо сделать в файле hosts . В Debian GNU/Linux он расположен по адресу 9.0007 /etc/hosts :
 судо нано /etc/hosts
 
  • Введите пароль, если потребуется:
 127.0.0.1 local.tracker.com
 
  • Сохраните файл ( Ctrl + X и Y ).

Шаг 3: Включить виртуальный хост conf
  • По умолчанию виртуальный хост отключен в httpd.conf . Откройте его, чтобы разрешить виртуальный хост:
 судо нано /opt/lampp/etc/httpd. conf
 
  • Выполните поиск, чтобы быстро найти строку виртуальных хостов ( ctrl + W и напишите Include etc ).
  • Раскомментировать (удалить знак # перед строкой) эту строку.
 Включить etc/extra/httpd-vhosts.conf
 

  • Теперь вы можете перезапустить свой сервер:
 sudo /opt/lampp/lampp перезапуск
 
  • Откройте браузер, и теперь вы можете получить доступ к своему сайту по адресу local.tracker.com .

Резюме

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

Вы можете создать виртуальный хост в Debian GNU/Linux, выполнив следующие три шага:

  1. Создайте новый виртуальный хост в файле httpd-vhosts.conf .

  2. Зарегистрируйте его на хостах .

  3. Включить виртуальный хост в httpd.conf .

УЧАСТНИК

Абель Лифаефи Мбула

Лицензия: Creative Commons-Attribution-ShareAlike 4.0 (CC-BY-SA 4.0)

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

В этом руководстве объясняется, что такое виртуальные хосты и как их настроить их с помощью Apache на машине с Ubuntu Linux.

Если у вас есть один IP-адрес для вашего сервера и вы хотите иметь возможность размещать несколько веб-сайтов, у вас есть несколько вариантов. Вы можете либо настроить каждый веб-сайт с поддоменами, либо настроить виртуальные хосты с помощью Apache и обслуживать несколько доменов с одного компьютера и одного веб-сервера. Большинство хостинговых компаний, предлагающих общий веб-хостинг, используют для этого виртуальные хосты. Виртуальные хосты также весьма полезны при настройке локальной среды веб-разработки на вашем компьютере. Я покажу вам, как настроить виртуальные хосты с помощью Apache на компьютере с Ubuntu Linux.

В этом примере мы установим два виртуальных хоста на вашем локальном компьютере — calvin.dev и hobbes.dev . Оба они будут указывать на разные места в вашей файловой системе и размещать разные сайты. Начнем с установки Apache и его пакетов поддержки. В командной строке введите следующую команду:

# sudo apt-get install apache2-utils apache2-common

Возможно, эти пакеты уже установлены. Если вы это сделаете, когда вы запустите вышеуказанную команду, вам об этом скажут. Затем убедитесь, что Apache работает нормально. Для этого запустите веб-браузер на своем компьютере и перейдите по адресу http://localhost. Вы должны увидеть простую страницу, информирующую вас о том, что вы используете веб-сервер Apache. Если нет, обратитесь в Интернет за помощью по установке Apache.

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

После установки и работы веб-сервера мы переходим к настройке веб-сервера. Создайте новый файл /etc/apache2/sites-available/vhosts.conf в вашем любимом текстовом редакторе (мой vim). Добавьте следующий текст. ServerName hobbes.dev
ServerAlias ​​www.hobbes.dev
DocumentRoot /var/www/hobbes.dev

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

# sudo mkdir /var/www/calvin.dev
# sudo mkdir /var/www/hobbes.dev

Добавьте два домена в файл hosts. Откройте файл /etc/hosts в текстовом редакторе и добавьте в конец следующую строку:

127. 0.0.1 calvin.dev
127.0.0.1 hobbes.dev

Теперь активируйте конфигурацию vhosts.conf в Apache.

# sudo cd /etc/apache2/sites-enabled/
# ln -s ../sites-available/vhosts.conf

Мы почти закончили. Нам просто нужно перезапустить Apache:

# sudo /etc/init.d/apache2 restart

И добавить пару тестовых файлов:

# echo «Hi I’m Calvin» > /var/www/ calvin.dev/index.html
# echo «Привет, я Хоббс» > /var/www/hobbes.dev/index.html

Держите пальцы скрещенными. Пришло время заставить магию работать. Запустите веб-браузер и перейдите по ссылке http://calvin.dev. На нем должно быть написано «Привет, я Кальвин». А затем http://hobbes.dev. Здесь должно быть написано «Привет, я Хоббс».

Теперь у вас должен быть рабочий набор виртуальных хостов. Вы можете добавить столько из них, сколько хотите. Если вы хотите запустить это на удаленной машине, вы можете заменить «*:80» в файле vhosts.

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

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