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

Предположим, где-то работает физический сервер. У сервера есть собственный IP адрес. На сервере установлен веб-сервер: программа, которая принимает входящие HTTP запросы, обрабатывает их и отправляет обратно ответы. На серверах под виртуальные хостинги обычно используется веб-сервер Apache.

Веб-сервер должен понять, где искать файлы сайта из пришедшего HTTP запроса. Для этого в настройках создаются отдельные хосты. В хосте указано, в какой папке на хранятся файлы того или иного сайта. На каждую из этих папок установлен владелец, чтобы разграничить доступ и не пускать «соседей» друг к другу.

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

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

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

www/
    user1/
        site1.ru/
            файлы…
        site2.ru/
            файлы…
    user2/
        site3.ru/
            файлы…
        site4.com/
            файлы…

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

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

Кроме того, у всех сайтов на виртуальном хостинге в пределах одного сервера будет одинаковый IP адрес. Если кто-то из соседей «шалит» и попал под санкции, скажем, Роскомнадзора, то под раздачу попадут все - сайт может стать недоступным извне, пока провайдер это не исправит.

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

Это можно записать и в преимущества, и в недостатки, в зависимости от ситуации. При создании простого сайта на популярной CMS или вообще на голом HTML, вряд ли понадобиться что-то администрировать - все уже сделали за нас специалисты провайдера.

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

У нормальных хостеров есть панели управления хостингом, где все таки можно управлять некоторыми настройками - например, менять версии PHP и настраивать планировщик заданий.

Изменение версии php у Бегет
Изменение версии php у Вебхост

Нормальные хостеры: Beget, Timeweb.

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

Собственно, VPS (Virtual Private Server), VDS (Virtual Dedicated Server) и виртуальный сервер - это почти одно и тоже, но некоторые отличия все же есть.

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

Схема работы VPS

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

Схема работы VDS

В целом эти различия между VPS и VDS не критичны, а у большинства хостеров VPS может быть на самом деле VDS, и наоборот — разница весьма размыта.

Определение «виртуальный сервер» можно применить и к VPS, и к VDS, поскольку они оба являются виртуальными по своей сути.

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

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

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

Опять же, существуют панели управления сервером, которые позволяют решать большую часть задач в удобном интерфейсе - ISPManager, Cpanel, VestaCP. Но они либо платные, либо все равно требуют периодически погружаться в задачу глубже, чем «ткни вот сюда, а потом вот сюда — все и заработает». Поэтому в любом случае при расчете финансов нужно закладывать N количество расходов на администрирование.

Виртуальный сервер на минимальных тарифах стоит почти как виртуальный хостинг. Но, во-первых, дополнительные расходы на администрирование никто не отменял.

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

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

Аренда виртуального сервера: Beget, Timeweb.

Сводка - преимущества и недостатки

Преимущества виртуального хостинга:

  • Низкая цена
  • Не нужно лезть в настройки

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

  • Нет возможности настраивать окружение
  • Ограничения по нагрузке
  • Ограничения по сайтам, БД (не везде, но часто)
  • Делим ресурсы с соседями неравномерно
  • Общий IP адрес с соседями

Преимущества виртуального сервера:

  • Полный контроль над окружением
  • Права root, доступ SSH
  • Нет ограничений по нагрузке (кроме ресурсов по тарифу)
  • Можно масштабировать, меняя тариф
  • Неограниченное кол-во сайтов, БД, FTP-пользователей
  • Гарантированные ресурсы без соседей
  • Отдельный IP адрес

Недостатки виртуального сервера:

  • Более высокая цена
  • Расходы на администрирование

Вывод

Схема выбора между виртуальным хостингом и сервером

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

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