Скидка 50% на все тарифы, ограниченное время. От $2.48/mo
13 мин. осталось
Веб и бизнес-приложения

Хостинг нескольких сайтов на одном сервере (Apache и IIS) 🌐

Лили Карнелл By Лили Карнелл 13 мин. чтения Обновлено 18 сентября 2023 г.
Хостинг нескольких сайтов на одном сервере (Apache и IIS) 🌐

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

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

Содержание

Что такое веб-сервер?

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

Веб-сервер общается с браузером по протоколу Протокол передачи гипертекста (HTTP) Большинство веб-страниц размечено на языке Hypertext Markup Language (HTML). Контент бывает статическим — текст и изображения, или динамическим — например, список товаров, добавленных покупателем в корзину. Большинство веб-серверов поддерживают серверные языки сценариев для встраивания бизнес-логики в ответы и формирования динамического контента. Как правило, поддерживаются такие языки, как Active Server Pages (ASP), JavaScript, PHP, Python и Ruby.

Как работает веб-сервер?

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

Для обработки запросов клиентов веб-сервер выполняет несколько шагов:

  1. Когда пользователь хочет загрузить контент сайта, браузер запрашивает доступ (HTTP запрос) через интернет.
  2. Браузер ищет IP-адрес запрошенного сайта. Он преобразует URL веб-страниц с помощью Системы доменных имён (DNS) или обращаясь к своему кэшу. Этот процесс позволяет найти веб-сервер, на котором хранятся файлы сайта.
  3. На этом этапе веб-сервер получает HTTP запрос и обрабатывает его через свой HTTP сервер.
  4. После того как HTTP сервер принимает запрос, он выполняет поиск по файлам сервера для получения нужных данных.
  5. Веб-сервер возвращает файлы сайта браузеру, который отправил запрос. После этого пользователь видит содержимое сайта.

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

Несколько сайтов на одном сервере: Apache

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

Читайте также:Хостинг Linux или Windows: что лучше подходит для вас?

Шаг 1: Создайте директорию для каждого сайта

Сначала установите apache2 с помощью этой команды

Для систем на базе Debian

apt install apache2 -y

Для систем на базе CentOS

yum install apache2 -y

Для каждого сайта, который вы будете размещать, нужно создать отдельный каталог (внутри папки /var/www). В качестве примеров доменных имён используйте domain.com и domain2.com.

mkdir -p /var/www/domain.com/public_html
mkdir -p /var/www/domain2.com/public_html

Шаг 2: Настройте права доступа к папкам

chmod -R 755 /var/www

Шаг 3: Настройка стартовой страницы

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

vim /var/www/domain.com/public_html/index.html

тестирование для domain.com

Теперь сохраните файл и выйдите с помощью Побег и ввода: wq

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

vim /var/www/domain2.com/public_html/index.html

Шаг 4: Скопируйте файл конфигурации для каждого сайта

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

cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/domain.com.conf
cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/domain2.com.conf

Шаг 5: Отредактируйте файл конфигурации для каждого сайта

Как минимум, измените и добавьте выделенные строки внутри <VirtualHost *:80> и тегов </VirtualHost>.

Обратите внимание, что ServerAlias — это альтернативное имя вашего домена. В большинстве случаев перед именем домена указывают www, чтобы сайт открывался как по адресу с www, так и без него (ServerName).

vim /etc/apache2/sites-available/domain.com.conf

Информация о сайте
Информация о сайте

Снова сохраните и закройте файл с помощью wq. Повторите этот процесс для файла domain2.com.conf ; не забудьте обновить ServerName, ServerAlias, и DocumentRoot для второго домена.

Читайте также:Apache vs NGINX

 Шаг 6: Активация файла конфигурации

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

a2dissite 000-default.conf

Чтобы сервер направлял запросы на ваши домены, включите каждый из созданных .conf файлов.

a2ensite domain.com.conf
a2ensite domain2.com.conf

Теперь перезапустим Apache, чтобы применить внесённые изменения.

systemctl restart apache2

Шаг 7: Проверка конфигураций Apache

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

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

Читайте также: Локальная инфраструктура vs. облако

Несколько сайтов на одном сервере: IIS

На одном IIS (Internet Information Services) сервере можно размещать десятки и даже сотни сайтов. IIS умеет обслуживать несколько сайтов одновременно, принимая запросы на одном и том же порту TCP. При этом интерфейс IIS Manager позволяет добавить новый сайт без привязки к другому порту, например 8080. В этом разделе объясняется, как разместить несколько сайтов на одном IIS-сервере и привязать их к одному порту и IP-адресу или к разным IP-адресам.

Как установить IIS на сервер Windows?

При установке IIS на Windows создаётся пустой Default Website, который прослушивает стандартный веб-порт HTTP – TCP 80. Технически это означает, что сайт привязан к порту TCP/80. Чтобы открыть его в браузере, нужно ввести имя IIS-сервера («http://web-srv1») или его IP-адрес («http://192.168.1.100»).

Шаг 1: привязка сайта в IIS 

IIS-сервер на базе Windows Server позволяет размещать несколько сайтов. Однако IIS корректно распределяет HTTP-запросы только в том случае, если каждый сайт идентифицируется уникальным сочетанием параметров. Для этого у каждого сайта в IIS есть три атрибута, образующих уникальную комбинацию:

  • номер порта TCP
  • IP-адрес
  • заголовок Host (имя хоста)

Данные о размещённых сайтах хранятся в атрибуте ServerBindings конфигурации IIS Metabase и имеют следующий формат: IP:Порт:Имя хоста. Чтобы разместить несколько сайтов на одном сервере с одинаковым портом и IP-адресом, необходимо использовать уникальный заголовок Host.

Что такое заголовок Host? Это часть HTTP-запроса к серверу, указывающая, какому сайту адресован запрос. Поэтому заголовок Host нужно указать и на стороне веб-сервера. Убедитесь, что в DNS есть корректная запись, связывающая имя хоста с IP-адресом IIS-сервера.

Предположим, у вас уже есть сайт, работающий на IIS-сервере и прослушивающий порт 80. Как привязать второй сайт к тому же порту?

Шаг 2: привязка второго сайта в IIS

В Internet Information Services (IIS) Manager создайте новый сайт через окно Add Website и назовите его TestSite. Файлы сайта будут располагаться в C:\inetpub\TestSite. На этом этапе имя хоста указывать не нужно.

После копирования содержимого сайта в C:\inetpub\TestSite откройте диспетчер служб IIS (Internet Information Services Manager) и в разделе имени хоста сервера добавьте сайт с помощью мастера настройки.

hostwebsites.png

добавить-новый-сайт-iis
Окно добавления сайта

 

После нажатия кнопки «ОК» появится предупреждение о том, что нельзя использовать binding *:80 для обоих сайтов одновременно.

добавить сайт

привязка-80-назначена-другому-сайту
Проверка привязки

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

4 Назначение разных портов привязки для сайтов
Назначение разных портов привязки для сайтов

windows-original-vps Windows VPS Хостинг

Ознакомьтесь с нашими доступными тарифами Windows VPS: мощное железо, минимальная задержка и бесплатный Windows на ваш выбор!

Получите бесплатный Windows

Размещение нескольких сайтов на IIS-сервере с помощью заголовков хоста

Для второго сайта IIS необходимо задать отдельное имя хоста (Host Name), чтобы привязка была уникальной. Для этого щёлкните правой кнопкой мыши по TestSite и выберите Изменить Bindings. Выберите нужную привязку и нажмите Изменить.

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

test-iis-site-binding
Окно редактирования привязки сайта

Для настройки привязки сайта IIS можно воспользоваться командной строкой. На IIS 7 и выше после выполнения команды вы увидите примерно следующее:

C:\Windows\System32\inetsrv\appcmd.exe set site /site.name:testsite /+bindings.[protocol='http',bindingInformation='*:80:testsite']

Второй сайт запускается так же, как и первый.

start-iis-site
Управление сайтами

На этом этапе необходимо добавить псевдоним DNS для сервера (запись A или CNAME), указывающий на IP-адрес или имя хоста вашего веб-сервера IIS. Если вы используете домен Active Directory, записи DNS нужно создать на контроллере домена. IIS позволяет создать CNAME запись для имени TestSite в консоли DNS (dnsmgmt.msc) и указать доменное имя вашего IIS-сервера в качестве целевого FQDN-хоста.

создание записи CNAME для имени TestSite в консоли DNS
создание записи CNAME для имени TestSite в консоли DNS

Эту же запись DNS можно создать через PowerShell следующей командой:

Add-DnsServerResourceRecordCName -HostNameAlias web-srv1.woshub.com -Name testsite -ZoneName woshub.com

Попробуем открыть http://TestSite в браузере. Если всё сделано правильно, страница должна открыться без ошибок.

несколько-сайтов-iis-на-одном-80-http-порту
Итоговый результат TestSite

 

linux-vps Хостинг Linux без лишних сложностей

Хотите удобнее размещать сайты и веб-приложения? Разрабатываете что-то новое? Просто не нравится Windows? Именно для этого у нас есть Linux VPS.

Получите свой Linux VPS

Запуск нескольких сайтов с разными IP-адресами на IIS-сервере

Теперь рассмотрим запуск двух сайтов на веб-сервере IIS с разными IP-адресами. Для начала нужно добавить отдельный интерфейс VLAN на сервер Windows или назначить дополнительный IP-адрес (псевдоним) на сетевой адаптер.

В этом примере основной IP-адрес сервера — 192.168.13.100. Мы добавим IP-псевдоним 192.168.13.101 на тот же сетевой адаптер:

Get-NetIPAddress | ft IPAddress, InterfaceAlias, SkipAsSource
New-NetIPAddress –IPAddress 192.168.13.101 –PrefixLength 24 –InterfaceAlias “Ethernet” –SkipAsSource $True

Теперь необходимо создать запись A для нового сайта на сервере DNS:

Add-DnsServerResourceRecordA -Name NewSite3 -IPv4Address 192.168.13.101 -ZoneName woshub.com -TimeToLive 01:00:00 –CreatePtr

Остаётся открыть настройки привязки сайта и привязать его к дополнительному IP-адресу хоста. Управлять привязками сайтов на IIS-сервере можно через PowerShell. Для этого используется модуль WebAdministration:

Import-Module WebAdministration

Вы можете просмотреть информацию обо всех доступных сайтах IIS и их привязках:

Get-IISSite

Или только об одном сайте:

(Get-Website -Name NewSite).bindings.Collection

bindings.Collection

Используйте следующую команду для изменения привязки сайта. Она позволяет поменять IP-адрес, порт или имя:

Set-WebBinding -Name NewSite1 -BindingInformation "192.168.13.101:80:NewSite1" -PropertyName 'Port' -Value '8080'
Set-WebBinding -Name NewSite1 -BindingInformation "192.168.13.101:8080:NewSite1" -PropertyName 'IPAddress' -Value '192.168.13.100'

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

New-IISSiteBinding -Name NewSite1 -BindingInformation "*:9090:" -Protocol http

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

Remove-IISSiteBinding -Name NewSite1 -BindingInformation "*:9090:"

Как видно из примеров, на веб-сервере IIS можно одновременно запускать несколько сайтов как на разных IP-адресах, так и на одном IP-адресе с одним номером порта TCP.

Итог: размещение нескольких сайтов на одном сервере

 В этой статье мы разобрали основные принципы работы серверов и показали, как разместить несколько сайтов на одном сервере. Cloudzy предлагает различные решения для Linux VPS хостинга, которые позволяют запускать несколько сайтов на одном сервере. Тарифы Cloudzy снижают затраты на содержание нескольких серверов, а наши услуги легко адаптировать под ваши задачи. Кроме того, вы можете в любой момент расширить ресурсы сервера: RAM, дисковое пространство, процессор и пропускную способность.

Часто задаваемые вопросы

 

Можно ли разместить несколько сайтов на одном веб-хостинге?

Если у вас мощный сервер с достаточным объёмом HDD, RAM и вычислительной мощностью CPU, вы можете размещать несколько сайтов с помощью виртуального хостинга. Количество сайтов на одном веб-сервере при этом не ограничено.

Как запустить два сайта на одном сервере?

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

Для чего используется сервер VPS?

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

Зачем люди используют VPS?

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

Поделиться

Другие статьи блога

Читать дальше.

Обзорное изображение Odoo: крупный заголовок слева, логотип Odoo справа, вокруг — панели интерфейса приложения на мягком фиолетовом фоне с облаками.
Веб и бизнес-приложения

Подробный обзор Odoo: подходит ли эта ERP-система для вашего бизнеса

Odoo — одна из наиболее популярных ERP-платформ среди растущих компаний, и причина проста: система обещает закрыть сразу много задач. Продажи, бухгалтерия, склад

Джим ШварцДжим Шварц 11 мин. чтения
Обзорное изображение для статьи об open-source альтернативах WordPress: цветной градиентный фон, монитор, редактор кода, размытый превью дашборда и крупный заголовок слева.
Веб и бизнес-приложения

Лучшие open-source альтернативы WordPress для разработчиков

WordPress по-прежнему востребован и отлично справляется с широким спектром задач. В его директории плагинов — более 62 000 решений, а в каталоге тем — свыше 14 000 бесплатных вариантов. Это

Джим ШварцДжим Шварц 14 мин. чтения
Обзорное изображение для сравнения Automad и WordPress: логотипы обеих платформ и заголовок с вопросом, какую CMS выбрать разработчику.
Веб и бизнес-приложения

Automad vs. WordPress: детальное сравнение двух CMS-платформ

Automad и WordPress решают одну задачу принципиально разными способами. Automad — это flat-file CMS с шаблонизатором: контент хранится в файлах, а не в базе данных. WordPress,

Джим ШварцДжим Шварц 9 мин. чтения

Готовы к деплою? От $2.48/мес.

Независимый облачный провайдер с 2008 года. AMD EPYC, NVMe, 40 Gbps. Возврат средств в течение 14 дней.