0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Когда сайт написан, встает вопрос о том, как выложить его в интернет. Стандартный путь включает три пункта:</p>
1
<p>Когда сайт написан, встает вопрос о том, как выложить его в интернет. Стандартный путь включает три пункта:</p>
2
<ol><li>Покупка домена</li>
2
<ol><li>Покупка домена</li>
3
<li>Покупка хостинга и его настройка</li>
3
<li>Покупка хостинга и его настройка</li>
4
<li>Деплой</li>
4
<li>Деплой</li>
5
</ol><p>Первый пропустим, про два других поговорим в этом уроке.</p>
5
</ol><p>Первый пропустим, про два других поговорим в этом уроке.</p>
6
<h2>Процесс деплоя</h2>
6
<h2>Процесс деплоя</h2>
7
<p><strong>Деплой</strong>- процесс выкладки новой версии сайта на сервер или сервера. Этот процесс может быть сложным, также он зависит от используемых технологий.</p>
7
<p><strong>Деплой</strong>- процесс выкладки новой версии сайта на сервер или сервера. Этот процесс может быть сложным, также он зависит от используемых технологий.</p>
8
<p>Во время деплоя выполняются следующие задачи:</p>
8
<p>Во время деплоя выполняются следующие задачи:</p>
9
<ol><li>Код проекта скачивается на сервер (обычно через клонирование Git)</li>
9
<ol><li>Код проекта скачивается на сервер (обычно через клонирование Git)</li>
10
<li>Ставятся необходимые зависимости</li>
10
<li>Ставятся необходимые зависимости</li>
11
<li>Выполняется процесс сборки, например, собирается фронтенд-часть</li>
11
<li>Выполняется процесс сборки, например, собирается фронтенд-часть</li>
12
<li>Выполняются миграции. Миграции - SQL-скрипты, которые изменяют структуру базы данных</li>
12
<li>Выполняются миграции. Миграции - SQL-скрипты, которые изменяют структуру базы данных</li>
13
<li>Запускается новая версия кода</li>
13
<li>Запускается новая версия кода</li>
14
</ol><p>Это один из возможных вариантов, причем довольно примитивный.</p>
14
</ol><p>Это один из возможных вариантов, причем довольно примитивный.</p>
15
<p>Во многих компаниях этот процесс до сих пор выполняется руками. Программист заходит на сервер, запускает git pull и далее проходится по списку выше. Это худший способ деплоить. Деплой относится к тем задачам, которые должны быть автоматизированы от и до.</p>
15
<p>Во многих компаниях этот процесс до сих пор выполняется руками. Программист заходит на сервер, запускает git pull и далее проходится по списку выше. Это худший способ деплоить. Деплой относится к тем задачам, которые должны быть автоматизированы от и до.</p>
16
<p>Есть одно важное правило общее для всех - деплоить можно только вперед. Деплой нельзя "откатывать". В первую очередь это касается миграций, но про базы мы пока не говорим.</p>
16
<p>Есть одно важное правило общее для всех - деплоить можно только вперед. Деплой нельзя "откатывать". В первую очередь это касается миграций, но про базы мы пока не говорим.</p>
17
<p>Если после или во время деплоя что-то пошло не так, то нужно деплоить снова, причем именно предыдущую версию.</p>
17
<p>Если после или во время деплоя что-то пошло не так, то нужно деплоить снова, причем именно предыдущую версию.</p>
18
<p>Также деплои можно классифицировать по способу обновления и отката:</p>
18
<p>Также деплои можно классифицировать по способу обновления и отката:</p>
19
<ul><li>Последовательное обновление - сервера обновляются по очереди</li>
19
<ul><li>Последовательное обновление - сервера обновляются по очереди</li>
20
<li><a>Сине-зеленый деплой</a>- полное дублирование инфраструктуры с подменой</li>
20
<li><a>Сине-зеленый деплой</a>- полное дублирование инфраструктуры с подменой</li>
21
</ul><p>Отдельно стоит сказать про канареечный релиз - canary release. При таком подходе переключение на использование новой версии происходит постепенно: сначала для небольшого процента пользователей, а затем и для всех.</p>
21
</ul><p>Отдельно стоит сказать про канареечный релиз - canary release. При таком подходе переключение на использование новой версии происходит постепенно: сначала для небольшого процента пользователей, а затем и для всех.</p>
22
<h2>Типы хостингов</h2>
22
<h2>Типы хостингов</h2>
23
<p>Способ деплоя зависит от используемого хостинга и способа настройки серверного окружения. Выделяют следующие типы хостингов:</p>
23
<p>Способ деплоя зависит от используемого хостинга и способа настройки серверного окружения. Выделяют следующие типы хостингов:</p>
24
<ul><li>Виртуальный хостинг (Shared Hosting) - самый дешевый способ размещать сайт в интернете. Такая услуга включает в себя доступ на сервер с уже настроенным программным обеспечением под конкретный стек, например, Linux + PHP + MySQL. Этот способ подходит для самых простых сайтов и требует минимальной настройки</li>
24
<ul><li>Виртуальный хостинг (Shared Hosting) - самый дешевый способ размещать сайт в интернете. Такая услуга включает в себя доступ на сервер с уже настроенным программным обеспечением под конкретный стек, например, Linux + PHP + MySQL. Этот способ подходит для самых простых сайтов и требует минимальной настройки</li>
25
<li>VPS/VDS - наиболее сбалансированная услуга, в рамках которой предоставляется виртуальная машина. Плюс в том, что такой вид хостинга позволяет задействовать больше серверных мощностей: ЦПУ, память и диск. Предустановленного ПО нет, всё нужно делать самостоятельно. По сравнению с виртуальным хостингом мы не ограничены в правах и можем настраивать сервер как угодно</li>
25
<li>VPS/VDS - наиболее сбалансированная услуга, в рамках которой предоставляется виртуальная машина. Плюс в том, что такой вид хостинга позволяет задействовать больше серверных мощностей: ЦПУ, память и диск. Предустановленного ПО нет, всё нужно делать самостоятельно. По сравнению с виртуальным хостингом мы не ограничены в правах и можем настраивать сервер как угодно</li>
26
<li>Выделенный сервер (Dedicated Server) - либо свой, либо арендованный сервер. Такой хостинг требует больше всего участия, но зато мы получаем лучшее соотношение производительность/цена</li>
26
<li>Выделенный сервер (Dedicated Server) - либо свой, либо арендованный сервер. Такой хостинг требует больше всего участия, но зато мы получаем лучшее соотношение производительность/цена</li>
27
<li>IaaS (Infrastructure as a Service) - инфраструктура как сервис. Вид хостинга, при котором большая часть возможностей представляется как сервис. Как пример: Amazon Web Service (AWS)</li>
27
<li>IaaS (Infrastructure as a Service) - инфраструктура как сервис. Вид хостинга, при котором большая часть возможностей представляется как сервис. Как пример: Amazon Web Service (AWS)</li>
28
<li>PaaS (Platform as a Service) - платформа как сервис. Наиболее дорогой и самый автоматизированный способ из коробки по размещению сайтов. Выкладка сайта происходит буквально по команде git push. Кроме цены важно учитывать используемые технологии и подходы. PaaS обладает наибольшим числом ограничений по тому, что и как можно делать. Но в обмен мы получаем не просто автоматизированный хостинг, но и платформу, которая автоматически "скейлится" (масштабируется) под нагрузку.</li>
28
<li>PaaS (Platform as a Service) - платформа как сервис. Наиболее дорогой и самый автоматизированный способ из коробки по размещению сайтов. Выкладка сайта происходит буквально по команде git push. Кроме цены важно учитывать используемые технологии и подходы. PaaS обладает наибольшим числом ограничений по тому, что и как можно делать. Но в обмен мы получаем не просто автоматизированный хостинг, но и платформу, которая автоматически "скейлится" (масштабируется) под нагрузку.</li>
29
</ul><p>Все способы деплоя можно разбить на две большие категории: деплой на PaaS и деплой на все остальное.</p>
29
</ul><p>Все способы деплоя можно разбить на две большие категории: деплой на PaaS и деплой на все остальное.</p>
30
<h2>PaaS</h2>
30
<h2>PaaS</h2>
31
<p>Самый простой способ начать деплоить. Большинство PaaS-хостеров имеют бесплатные планы, достаточные для выкладки учебных проектов. Из плюсов: не придётся покупать адрес, домен третьего уровня предоставляется бесплатно.</p>
31
<p>Самый простой способ начать деплоить. Большинство PaaS-хостеров имеют бесплатные планы, достаточные для выкладки учебных проектов. Из плюсов: не придётся покупать адрес, домен третьего уровня предоставляется бесплатно.</p>
32
<p>Популярное PaaS-решение на текущий день -<a>Render.com</a>. У этого сервиса есть<a>документация</a>. Если следовать ей, можно быстро выложить свой первый сайт.</p>
32
<p>Популярное PaaS-решение на текущий день -<a>Render.com</a>. У этого сервиса есть<a>документация</a>. Если следовать ей, можно быстро выложить свой первый сайт.</p>
33
<p>Render используется в Хекслете студентами для выполнения проектов и в опенсорсе.</p>
33
<p>Render используется в Хекслете студентами для выполнения проектов и в опенсорсе.</p>
34
<h2>Все остальное</h2>
34
<h2>Все остальное</h2>
35
<p>Если не брать в расчет самый примитивный виртуальный хостинг, который не позволяет настраивать серверное окружение, остальные виды хостингов имеют схожие задачи для выкладки.</p>
35
<p>Если не брать в расчет самый примитивный виртуальный хостинг, который не позволяет настраивать серверное окружение, остальные виды хостингов имеют схожие задачи для выкладки.</p>
36
<p>Первая задача - настроить окружение. Если в виртуальном хостинге всегда есть набор предустановленных программ, то в остальных видах хостинга нет ничего, кроме "голой" операционной системы.</p>
36
<p>Первая задача - настроить окружение. Если в виртуальном хостинге всегда есть набор предустановленных программ, то в остальных видах хостинга нет ничего, кроме "голой" операционной системы.</p>
37
<p>Установка необходимого ПО - такой же автоматизируемый процесс как процесс деплоя. У него есть собственное название - Управление конфигурациями (Configuration Management).</p>
37
<p>Установка необходимого ПО - такой же автоматизируемый процесс как процесс деплоя. У него есть собственное название - Управление конфигурациями (Configuration Management).</p>
38
<p>Рекомендуем использовать Ansible - популярное решение для настройки (На Хекслете есть соответствующий<a>курс</a>).</p>
38
<p>Рекомендуем использовать Ansible - популярное решение для настройки (На Хекслете есть соответствующий<a>курс</a>).</p>
39
<p>Ключевое понятие Ansible - Playbook (плейбук). Это файл в формате YAML, в котором описывается, что нужно сделать на указанной машине.</p>
39
<p>Ключевое понятие Ansible - Playbook (плейбук). Это файл в формате YAML, в котором описывается, что нужно сделать на указанной машине.</p>
40
<p>В каждом плейбуке используются готовые модули, поставляемые вместе с Ansible. Этих модулей сотни. С их помощью можно делать практически всё: от установки программ до настройки сети и управления правами файловой системы.</p>
40
<p>В каждом плейбуке используются готовые модули, поставляемые вместе с Ansible. Этих модулей сотни. С их помощью можно делать практически всё: от установки программ до настройки сети и управления правами файловой системы.</p>
41
<p>Ansible - универсальный инструмент. С его помощью можно не только настраивать окружение, но и деплоить. При этом для деплоя есть готовый модуль -<a>deploy helper</a>.</p>
41
<p>Ansible - универсальный инструмент. С его помощью можно не только настраивать окружение, но и деплоить. При этом для деплоя есть готовый модуль -<a>deploy helper</a>.</p>
42
<p>В случаях, где используется, например, Docker, развертывание осуществляется системами оркестрации, среди которых выделяется<a>Kubernetes</a>.</p>
42
<p>В случаях, где используется, например, Docker, развертывание осуществляется системами оркестрации, среди которых выделяется<a>Kubernetes</a>.</p>