Site icon Персональный блог

Создание сайта на Python/Django: подбор хостинга

Сегодня немного забегу вперед и остановлюсь на вопросе выбора хостинга для проекта на Django/Python, т.к. это весьма важный вопрос, к которому стоит подойти с высокой долей ответственности. Делая подбор хостинга необходимо заранее учитывать особенности вашего проекта и путь его дальнейшего развития, но это вовсе не значит, что необходимо покупать дорогой вариант с запасом на будущее. Запас конечно необходим, но без лишнего фанатизма. Ведь всегда можно будет докупить мощности, т.е. перейти в более дорогой пакет обслуживания.

Выбираем VDS для Django-проекта

На мой взгляд, на начальном этапе для запуска проекта на Django в т.н. production понадобиться самый простой VDS или же виртуальный выделенный сервер. Возникает вопрос – как определить необходимую производительность такого сервера?

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

Минимальные требования к ресурсам VDS на старте проекта на Django

Для запуска небольшого сайта, реализованного на Django/Python я использую сервер VDS с 1 ядром по процессору 2,4 GHz, 2 GB оперативной памяти и 10 Gb SSD диска. На таком сервере у меня работает проект с посещаемостью около 200-300 уников в сутки. При этом стоит понимать, что в зависимости от сложности реализованных алгоритмов в работе сайта, ориентироваться только на количество посетителей не стоит. Возможно возникнет необходимость в увеличении количества ядер и/или ОЗУ. Дополнительное место на диске так же может понадобиться, если планируется загрузка объемного медиа-контента, хотя лучше для этих целей использовать отдельные сервера. Ровно так же и с базой данных. Если проект предусматривает значительные объемы и частые запросы к БД, то БД лучше развернуть на отдельном сервере, но для старта это нам тоже не понадобиться и мы обойдемся одним сервером, на котором будут работать все и сразу.

Как развернуть проект на базе Django / Python на сервере VDS

И так, чтобы развернуть проект на базе Django / Python на сервере я использую Dokku. Dokku – это мини-Heroku и самая компактная реализация PaaS (Platform as a Service – платформа как сервис). Если вы еще не знаете, что такое Heroku, то спросите у Google. Преимущество Heroku и его альтернативы в виде Dokku заключается в простоте процесса выгрузки и запуска проекта в продакшн, т.к. работа происходит через Git. Если вы еще не знает, что такое Git, то подробнее можно посмотреть снова в Гугл, а если коротко, то это система управления версиями. Проще говоря, каждый раз когда вы хотите внести изменения в код вашего проекта, вы создаете некую запись в структуре Git и в ней будут отображены изменения в коде по отношению к предыдущим версиям. Это удобно, т.к. вы всегда можете отследить изменения в коде, выявить причины изменений, вернутся к более ранним версиям и т.п. При разработке ПО это обязательная вещь, но, как показывает практика, его используют не только программисты, но и ученые, педагоги и многие другие для сохранения истории своей работы над тем или иным проектом.

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

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

Пока все. Удачи!

Exit mobile version