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>Чтобы приобрести домен, необходимо обратиться в компании-регистраторы. Домен оплачивается раз в год и закрепляется за определенным человеком или компанией.</p>
7
<p>Чтобы приобрести домен, необходимо обратиться в компании-регистраторы. Домен оплачивается раз в год и закрепляется за определенным человеком или компанией.</p>
8
<p>Иногда хостер и регистратор - одна и та же компания. Тогда домен и сервер связываются одновременно. Иначе нужно производить определенные настройки на стороне сервера и подтверждать свое право владения доменом.</p>
8
<p>Иногда хостер и регистратор - одна и та же компания. Тогда домен и сервер связываются одновременно. Иначе нужно производить определенные настройки на стороне сервера и подтверждать свое право владения доменом.</p>
9
<h2>Покупка хостинга и его настройка</h2>
9
<h2>Покупка хостинга и его настройка</h2>
10
<p>Хостинг - это ресурсы для размещения и обслуживания сайта в интернете. Хостинг бывает разным. Это может быть:</p>
10
<p>Хостинг - это ресурсы для размещения и обслуживания сайта в интернете. Хостинг бывает разным. Это может быть:</p>
11
<ul><li>Уже полностью готовая среда, в которую заливается код сайта</li>
11
<ul><li>Уже полностью готовая среда, в которую заливается код сайта</li>
12
<li>Просто железные серверы, которыми можно и нужно управлять самостоятельно</li>
12
<li>Просто железные серверы, которыми можно и нужно управлять самостоятельно</li>
13
</ul><p>Обычно работа с хостингом выглядит так:</p>
13
</ul><p>Обычно работа с хостингом выглядит так:</p>
14
<ol><li>Регистрируемся на сайте хостинга</li>
14
<ol><li>Регистрируемся на сайте хостинга</li>
15
<li>Выбираем тариф и вид хостинга (On-Prem, IaaS, PaaS, SaaS), привязываем банковскую карту</li>
15
<li>Выбираем тариф и вид хостинга (On-Prem, IaaS, PaaS, SaaS), привязываем банковскую карту</li>
16
<li>Получаем доступ к ресурсам - к IP-адресу и паре "логин/пароль" для доступа по SSH и FTP</li>
16
<li>Получаем доступ к ресурсам - к IP-адресу и паре "логин/пароль" для доступа по SSH и FTP</li>
17
<li>При необходимости настраиваем хостинг и деплоим проект</li>
17
<li>При необходимости настраиваем хостинг и деплоим проект</li>
18
</ol><h2>Деплой на PaaS</h2>
18
</ol><h2>Деплой на PaaS</h2>
19
<p><strong>Деплой</strong>- это выкладка новой версии сайта на сервер. Этот процесс может быть довольно сложным и зависит от используемых технологий. Во время деплоя могут выполняться следующие задачи:</p>
19
<p><strong>Деплой</strong>- это выкладка новой версии сайта на сервер. Этот процесс может быть довольно сложным и зависит от используемых технологий. Во время деплоя могут выполняться следующие задачи:</p>
20
<ol><li>Скачиваем код проекта на сервер (обычно через клонирование Git)</li>
20
<ol><li>Скачиваем код проекта на сервер (обычно через клонирование Git)</li>
21
<li>Ставим все необходимые зависимости</li>
21
<li>Ставим все необходимые зависимости</li>
22
<li>Выполняем сборку приложения</li>
22
<li>Выполняем сборку приложения</li>
23
<li>Выполняем<strong>миграции</strong>- SQL-скрипты, которые изменяют структуру базы данных</li>
23
<li>Выполняем<strong>миграции</strong>- SQL-скрипты, которые изменяют структуру базы данных</li>
24
<li>Запускаем новую версию кода</li>
24
<li>Запускаем новую версию кода</li>
25
</ol><p>Большинство PaaS-хостеров имеют бесплатные планы, достаточные для выкладки учебных проектов. Их достоинство в том, что нам не придется покупать адрес - домен третьего уровня предоставляется бесплатно.</p>
25
</ol><p>Большинство PaaS-хостеров имеют бесплатные планы, достаточные для выкладки учебных проектов. Их достоинство в том, что нам не придется покупать адрес - домен третьего уровня предоставляется бесплатно.</p>
26
<p>Для деплоя учебных проектов можно использовать PaaS<a>Render</a>. Этот сервис поддерживает деплой GitHub-репозиториев. Попробуем задеплоить на него проект<a>Гостевая книга</a>.</p>
26
<p>Для деплоя учебных проектов можно использовать PaaS<a>Render</a>. Этот сервис поддерживает деплой GitHub-репозиториев. Попробуем задеплоить на него проект<a>Гостевая книга</a>.</p>
27
<h2>Деплой на Render.com</h2>
27
<h2>Деплой на Render.com</h2>
28
<p>Зарегистрируйтесь в сервисе<a>Render</a>. После регистрации на вкладке Dashboard сможем добавлять новые приложения - веб-сервисы и базы данных.</p>
28
<p>Зарегистрируйтесь в сервисе<a>Render</a>. После регистрации на вкладке Dashboard сможем добавлять новые приложения - веб-сервисы и базы данных.</p>
29
<p>Так как наше приложение использует базу данных, сначала нужно ее создать. Создайте базу данных<a>PostgreSQL</a>(New → PostgreSQL), дайте ей имя, которое будет отображаться в панели. Нажмите кнопку Create database.</p>
29
<p>Так как наше приложение использует базу данных, сначала нужно ее создать. Создайте базу данных<a>PostgreSQL</a>(New → PostgreSQL), дайте ей имя, которое будет отображаться в панели. Нажмите кнопку Create database.</p>
30
<p>После того, как создадим базу данных, нам станут доступны сведения о подключении к БД (Connections). Нам потребуется<strong>Internal Database URL</strong>, эта строка подключения к БД потребуется нам позднее.</p>
30
<p>После того, как создадим базу данных, нам станут доступны сведения о подключении к БД (Connections). Нам потребуется<strong>Internal Database URL</strong>, эта строка подключения к БД потребуется нам позднее.</p>
31
<p>Теперь можно приступать к созданию нового приложения. Создайте новое веб-приложение (New → Web Service). Подключите свой GitHub-репозиторий или вставьте его URL, после чего нажмите Connect.</p>
31
<p>Теперь можно приступать к созданию нового приложения. Создайте новое веб-приложение (New → Web Service). Подключите свой GitHub-репозиторий или вставьте его URL, после чего нажмите Connect.</p>
32
<p>Заполните поля с настройками приложения.</p>
32
<p>Заполните поля с настройками приложения.</p>
33
<ul><li><em>Name</em>- задайте имя для своего приложения.</li>
33
<ul><li><em>Name</em>- задайте имя для своего приложения.</li>
34
<li><em>Language</em>выберите<strong>Ruby</strong>в качестве среды выполнения проекта, а</li>
34
<li><em>Language</em>выберите<strong>Ruby</strong>в качестве среды выполнения проекта, а</li>
35
<li><em>Root Directory</em>оставьте пустым, тк у нас приложение в корне репозитория</li>
35
<li><em>Root Directory</em>оставьте пустым, тк у нас приложение в корне репозитория</li>
36
<li><em>Region</em>- ближайший к вам регион. Обратите внимание, что веб-сервис и база данных должны находиться в одном регионе.</li>
36
<li><em>Region</em>- ближайший к вам регион. Обратите внимание, что веб-сервис и база данных должны находиться в одном регионе.</li>
37
<li><em>Build Command</em>- команда сборки приложения. Сюда нужно разместить установку зависимостей, сборку ассетов, миграцию БД.</li>
37
<li><em>Build Command</em>- команда сборки приложения. Сюда нужно разместить установку зависимостей, сборку ассетов, миграцию БД.</li>
38
<li><em>Start Command</em>- команда запуска сервера. При запуске сервер должен запускаться на динамическом порту, который указан в переменной окружения PORT.</li>
38
<li><em>Start Command</em>- команда запуска сервера. При запуске сервер должен запускаться на динамическом порту, который указан в переменной окружения PORT.</li>
39
</ul><p>Для Ruby on Rails сервис Render предоставляет предзаполненные команды сборки и запуска приложения. Их необходимо заменить на свои. Например для приложения<a>Гостевой книги</a>команды сборки определены в Makefile и называются render-build и render-start соответственно.</p>
39
</ul><p>Для Ruby on Rails сервис Render предоставляет предзаполненные команды сборки и запуска приложения. Их необходимо заменить на свои. Например для приложения<a>Гостевой книги</a>команды сборки определены в Makefile и называются render-build и render-start соответственно.</p>
40
<p>Далее необходимо указать тип инстанса (тариф). Для тестового проекта или демонстрации достаточно бесплатного (<em>Free</em>).</p>
40
<p>Далее необходимо указать тип инстанса (тариф). Для тестового проекта или демонстрации достаточно бесплатного (<em>Free</em>).</p>
41
<h3>Переменные окружения</h3>
41
<h3>Переменные окружения</h3>
42
<p>Для корректной работы приложения нужно задать значение для переменных окружения, которые зависят от настроек нашего приложения. В любом случае, нам понадобится передать приложению параметры для подключения к базе данных. Это делается с помощью переменных окружения.</p>
42
<p>Для корректной работы приложения нужно задать значение для переменных окружения, которые зависят от настроек нашего приложения. В любом случае, нам понадобится передать приложению параметры для подключения к базе данных. Это делается с помощью переменных окружения.</p>
43
<p>Добавим переменные необходимые переменные:</p>
43
<p>Добавим переменные необходимые переменные:</p>
44
<ul><li>DATABASE_URL: строка подключения к БД взятая в<strong>Internal Database URL</strong>. Она записывается в формате postgres://<username>:<password>@<host>:<port>/<database_name></li>
44
<ul><li>DATABASE_URL: строка подключения к БД взятая в<strong>Internal Database URL</strong>. Она записывается в формате postgres://<username>:<password>@<host>:<port>/<database_name></li>
45
<li>SECRET_KEY_BASE: строка для шифрования важных данных, например токенов. Можно сгенерировать строку самим с помощью команды bin/rails secret локально и скопировать</li>
45
<li>SECRET_KEY_BASE: строка для шифрования важных данных, например токенов. Можно сгенерировать строку самим с помощью команды bin/rails secret локально и скопировать</li>
46
<li>RAILS_ENV: устанавливаем значение production, чтобы приложение использовало окружение готовое для эксплуатации.</li>
46
<li>RAILS_ENV: устанавливаем значение production, чтобы приложение использовало окружение готовое для эксплуатации.</li>
47
</ul><p>После этого надо будет нажать на кнопку<em>Deploy web service</em>. Наше приложение будет клонировано из репозитория, собрано и запущено. После завершения процесса оно станет доступно по определенному адресу, который автоматически сформируется.</p>
47
</ul><p>После этого надо будет нажать на кнопку<em>Deploy web service</em>. Наше приложение будет клонировано из репозитория, собрано и запущено. После завершения процесса оно станет доступно по определенному адресу, который автоматически сформируется.</p>
48
<p>Во время сборки и деплоя мы можем следить за процессом. Если что-то пойдет не так, Render сообщит об этом. Если что-то пошло не так, всегда можно посмотреть логи на вкладке Logs. Они помогут разобраться с ошибкой.</p>
48
<p>Во время сборки и деплоя мы можем следить за процессом. Если что-то пойдет не так, Render сообщит об этом. Если что-то пошло не так, всегда можно посмотреть логи на вкладке Logs. Они помогут разобраться с ошибкой.</p>
49
<p>Деплой на Render может производиться в автоматическом режиме по пушу и в ручном. Проблема автоматического деплоя в том, что непроверенные изменения могут попасть к пользователям. Чтобы это решить, можно воспользоваться ручным деплоем по хуку. Например после выполнения тестов в Github Actions.</p>
49
<p>Деплой на Render может производиться в автоматическом режиме по пушу и в ручном. Проблема автоматического деплоя в том, что непроверенные изменения могут попасть к пользователям. Чтобы это решить, можно воспользоваться ручным деплоем по хуку. Например после выполнения тестов в Github Actions.</p>
50
<p>Рассмотрим ниже воркфлоу Github Actions с деплоем после проверки кода тестами</p>
50
<p>Рассмотрим ниже воркфлоу Github Actions с деплоем после проверки кода тестами</p>
51
<h2>Github Actions</h2>
51
<h2>Github Actions</h2>
52
<p>Для настройки автоматического деплоя на Render с использованием GitHub Actions и ручного деплоя по хуку после успешного выполнения тестов, нужно нужно создать файл воркфлоу. В нем определим шаги, которые будут выполняться при каждом пуше в репозиторий.</p>
52
<p>Для настройки автоматического деплоя на Render с использованием GitHub Actions и ручного деплоя по хуку после успешного выполнения тестов, нужно нужно создать файл воркфлоу. В нем определим шаги, которые будут выполняться при каждом пуше в репозиторий.</p>
53
<p>Воркфлоу описывает автоматическое выполнение двух основных задач: сборки и деплоя. Сборка запускается при создании pull request в ветку main или при пуше в ветку. В процессе сборки выполняется установка необходимых зависимостей, запуск тестов, что позволяет убедиться в корректности кода перед его развертыванием.</p>
53
<p>Воркфлоу описывает автоматическое выполнение двух основных задач: сборки и деплоя. Сборка запускается при создании pull request в ветку main или при пуше в ветку. В процессе сборки выполняется установка необходимых зависимостей, запуск тестов, что позволяет убедиться в корректности кода перед его развертыванием.</p>
54
<p>После успешного завершения сборки, если событие является пушем, запускается задача деплоя. Эта задача выполняет команду, которая инициирует процесс развертывания на платформе Render, используя секретный URL, хранящийся в переменных окружения.</p>
54
<p>После успешного завершения сборки, если событие является пушем, запускается задача деплоя. Эта задача выполняет команду, которая инициирует процесс развертывания на платформе Render, используя секретный URL, хранящийся в переменных окружения.</p>
55
<h2>Выводы</h2>
55
<h2>Выводы</h2>
56
<ul><li>Процесс публикации сайта включает три ключевых этапа: покупка домена, выбор и настройка хостинга, а также деплой приложения на сервер.</li>
56
<ul><li>Процесс публикации сайта включает три ключевых этапа: покупка домена, выбор и настройка хостинга, а также деплой приложения на сервер.</li>
57
<li>Выбор хостинга зависит от потребностей проекта: можно использовать готовые решения (PaaS) или управлять собственными серверами (IaaS).</li>
57
<li>Выбор хостинга зависит от потребностей проекта: можно использовать готовые решения (PaaS) или управлять собственными серверами (IaaS).</li>
58
<li>Деплой на PaaS упрощает процесс развертывания, предоставляя бесплатные планы и автоматизацию, что особенно полезно для учебных проектов.</li>
58
<li>Деплой на PaaS упрощает процесс развертывания, предоставляя бесплатные планы и автоматизацию, что особенно полезно для учебных проектов.</li>
59
<li>Автоматизация с помощью GitHub Actions позволяет интегрировать тестирование и деплой, обеспечивая надежность и контроль над изменениями перед их публикацией.</li>
59
<li>Автоматизация с помощью GitHub Actions позволяет интегрировать тестирование и деплой, обеспечивая надежность и контроль над изменениями перед их публикацией.</li>
60
</ul>
60
</ul>