СайтоведСмотреть рейтинг

Хостинг с нуля

Хостинг для Python и Django: почему нужен VPS

Редакция Сайтоведа ·

Вы написали Django-приложение, всё крутится локально, база отвечает, формы работают. Остаётся "просто залить на хостинг" - и тут начинается цирк. Панель управления с готовностью предлагает поставить WordPress в один клик, в списке языков гордо красуется PHP восьмой версии, а про Python - ни слова. Или слово есть, но стоит попытаться запустить приложение, сервер молчит, а в логах появляются странные ошибки про отсутствующие модули, которые вы точно ставили через pip.

Это не баг и не ваша кривая рука. Это архитектурное ограничение: обычный хостинг физически не умеет того, что нужно Django-проекту.

Коротко

  • Shared-хостинг, где сотни сайтов живут на одном сервере и делят ресурсы, заточен под PHP и WordPress - для Python там либо нет поддержки, либо она сильно урезана
  • Django и Flask - не папка со статичными файлами, а постоянно работающий процесс, которому нужен прямой доступ к серверу
  • VPS (виртуальный сервер, где вы полноправный хозяин операционной системы) решает проблему, но настраивается через консоль - новичку будет непросто
  • Облачные платформы вроде Timeweb Cloud дают тот же VPS, но с кнопками вместо голого терминала и быстрым разворачиванием через панель
  • За удобство придётся платить больше, чем стоит хостинг для сайта-визитки, и цена растёт вместе с нагрузкой
  • Обновления системы, SSL-сертификат (тот самый замочек https в адресной строке) и перезапуск приложения после правок кода - теперь ваша забота, а не провайдера

Почему обычный хостинг не запустит ваш Django-проект

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

Python-приложение устроено иначе. Django или Flask - это постоянно запущенный процесс, который слушает порт и обрабатывает запросы через WSGI или ASGI (протоколы, по которым веб-сервер передаёт запрос вашему коду и получает ответ обратно). Для этого нужен доступ к установке нужной версии Python, возможность ставить пакеты через pip, настраивать виртуальное окружение и держать процесс живым круглосуточно. На шаред-хостинге с общей средой для сотен сайтов такое не разрешают из соображений безопасности - один завравшийся процесс уронит всех соседей.

Отдельные хостинги пишут "поддержка Python" в описании тарифа, но на практике это часто старые CGI-скрипты с жёсткими лимитами по времени и памяти. Для тестового Flask-скрипта на пару строк это ещё сработает, для полноценного Django-проекта с базой данных и очередями задач - уже нет.

Посмотреть тарифы прямо сейчас

Ссылки партнёрские, на оценки это не влияет. Подробнее

Что на самом деле нужно Python-проекту

Django нужны четыре вещи: сервер с полным доступом к операционной системе, установленный интерпретатор нужной версии Python, база данных (обычно PostgreSQL или MySQL) и возможность держать процесс запущенным постоянно, с автоперезапуском при сбое. Ничего экзотического, но ни один из этих пунктов обычный хостинг для сайта-визитки в полной мере не даёт. Поэтому разговор про хостинг для Python быстро сворачивает в сторону VPS или облачного сервера.

VPS: сервер, который целиком ваш

VPS - это кусочек физической машины, выделенный лично вам, со своей операционной системой, root-доступом (правами администратора на всё) и своими ресурсами памяти и процессора. Ставите туда что хотите: нужную версию Python, Nginx перед приложением, Gunicorn или uWSGI для запуска Django, Postgres для базы. Соседи по железу есть, но они изолированы и в вашу систему не заглядывают.

Это снимает ограничения обычного хостинга, но добавляет ответственности. Настройка идёт через SSH: конфиги, порты, файрвол, обновления безопасности - всё самостоятельно. Для человека, который раньше работал только с панелью хостинга в браузере, это заметный скачок сложности. Если раньше не приходилось сравнивать VPS по цене и ресурсам, можно заглянуть в разбор дешёвого VPS в России - там видно, как цена связана с реальными характеристиками, а не только с цифрой на тарифной странице.

Облако: тот же VPS, но с кнопками вместо консоли

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

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

Панель или терминал - что выбрать новичку

Если вы уже писали код на Python и хоть немного знакомы с консолью Linux, голый VPS без панели обойдётся дешевле и даст больше контроля. Если задача - просто быстро выложить дипломный проект, пет-проект или MVP и не тратить вечера на конфиги Nginx, облачная панель с готовыми шаблонами сильно экономит нервы.

Отдельный случай - если рядом с Django-сайтом должен крутиться ещё и Telegram-бот на том же Python, работающий круглосуточно независимо от сайта. Принципы организации такого фонового процесса описаны в статье про хостинг для Telegram-бота - нужен сервер, который работает постоянно, а не хостинг для статичных страниц.

Подводные камни, о которых молчат в рекламе

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

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

Третье: SSL-сертификат на VPS не настраивается автоматически, как на многих шаред-хостингах с панелью. Его придётся получать и продлевать самому, обычно через бесплатный Let's Encrypt, с отдельной настройкой автообновления.

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

Частые вопросы

Можно ли вообще запустить Django на обычном хостинге?

Технически иногда да, если провайдер заявляет поддержку Python через CGI или FastCGI, но это редкость и почти всегда с жёсткими лимитами по времени и памяти. Для серьёзного проекта это не вариант - нужен VPS или облачный сервер с полным доступом.

Чем VPS отличается от облачного сервера для Python-проекта?

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

Какая версия Python нужна для Django?

Зависит от версии самого Django: актуальные релизы требуют свежих версий Python. На VPS и в облаке версию ставите сами через системный менеджер пакетов или pyenv, в отличие от шаред-хостинга, где версия жёстко задана провайдером.

Подходит ли Hostinger для Django-проекта в России?

Даже если формально сервис предлагает VPS с поддержкой Python, по данным проверок доступности из разных регионов сайт hostinger.com не открывался из Москвы и Петербурга (подробности - в материале о доступности хостингов из разных стран). Для российского пользователя это рискованный выбор - лучше смотреть провайдеров с работающей поддержкой внутри страны.

Нужна ли база данных отдельно от сервера приложения?

На старте можно держать PostgreSQL или MySQL на том же VPS, где крутится Django - так проще и дешевле. По мере роста нагрузки базу часто выносят на отдельный сервер, чтобы она не конкурировала за ресурсы с самим приложением.

Что в итоге выбрать

Если вы новичок и хотите за вечер поднять Django-проект без борьбы с конфигами, разумный путь - облачный сервер вроде Timeweb Cloud с готовым образом под Python: панель берёт на себя часть рутины, а документация написана понятно даже для тех, кто раньше работал только с обычным хостингом. Если вы уже уверенно чувствуете себя в консоли Linux и хотите выжать максимум ресурсов за минимальные деньги, обычный VPS у REG.RU даст больше гибкости и цену чуть ниже - правда, настраивать там придётся всё руками. В обоих случаях закладывайте запас по ресурсам наперёд: Python-приложения любят внезапно начинать есть память, когда трафик растёт быстрее, чем вы рассчитывали.

Смотреть тарифы

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

Читайте также