Spec-Zone.ru › Swift

Развёртывание на Heroku

Heroku — это популярное решение для хостинга «всё в одном».

Для вашего приложения Heroku вам нужно только выбрать виртуальную операционную систему (стек) и предварительно установленные программные пакеты (buildpack). После установки инструментов командной строки Heroku вы можете использовать стандартные команды git для отправки кода на Heroku, где он будет скомпилирован из исходного кода и развернут.

Дополнительную информацию можно найти на сайте heroku.com.

Регистрация

Вам потребуется учётная запись Heroku. Если у вас её нет, пожалуйста, зарегистрируйтесь здесь.

Настройка CLI

Убедитесь, что у вас установлены инструменты командной строки Heroku.

Установка Homebrew

brew tap heroku/brew && brew install heroku

Другие варианты установки здесь.

См. альтернативные варианты установки здесь.

Вход

После установки CLI выполните вход с помощью следующей команды:

heroku login

…и следуйте инструкциям.

Настройка приложения

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

Создание примера проекта

В этом руководстве мы будем размещать пример сервера HTTP Swift NIO — вы можете применить эти концепции к своему проекту. Давайте начнём с клонирования NIO:

git clone https://github.com/apple/swift-nio

Убедитесь, что наш только что клонированный каталог является рабочим каталогом:

cd swift-nio

По умолчанию Heroku развёртывает ветку main. Всегда убедитесь, что все изменения внесены в эту ветку перед отправкой.

Подключение к Heroku

Подключите ваше приложение к Heroku (замените на имя вашего приложения):

heroku git:remote -a your-apps-name-here

Выбор стека

На момент декабря 2023 года, по умолчанию Heroku использует стек Heroku 22:

heroku stack:set heroku-22 -a your-apps-name-here

Список доступных стеков находится здесь.

Выбор buildpack

Установите buildpack, чтобы научить Heroku работать со Swift. Buildpack сообщества Vapor — хороший buildpack для любого проекта на Swift. Он не устанавливает Vapor и не имеет специфичных настроек для Vapor.

heroku buildpacks:set vapor/vapor

Выбор версии Swift

Добавленный нами buildpack ищет файл .swift-version в корневом каталоге проекта, чтобы узнать, какую версию Swift использовать.

echo "5.9" > .swift-version

Это создаёт .swift-version со содержимым 5.9.

При выпуске новых версий Swift buildpack необходимо обновить, прежде чем вы сможете использовать последнюю версию.

Создание Procfile

Heroku использует Procfile, чтобы узнать, как запустить и выполнить ваше приложение. Это включает имя исполняемого файла и любые необходимые аргументы. Вы увидите $PORT ниже, это позволяет Heroku назначить определённый порт при запуске приложения.

web: NIOHTTP1Server 0.0.0.0 $PORT

Вы можете использовать эту команду в терминале, чтобы установить файл

echo "web: NIOHTTP1Server 0.0.0.0 $PORT" > Procfile

Содержимое этого файла может отличаться в зависимости от вашего фреймворка сервера. Для приложений Vapor содержимое Procfile по умолчанию следующее:

web: Run serve --env production --hostname 0.0.0.0 --port $PORT

Заключение

Теперь, когда мы добавили файлы .swift-version и Procfile, убедитесь, что они добавлены в main, чтобы они были включены в развёртывание:

git add .swift-version Procfile
git commit -am "Add Swift version file and Procfile"

Развёртывание на Heroku

Когда вы будете готовы к развёртыванию, выполните эту команду в терминале:

git push heroku main

Это займёт значительно больше времени, чем обычные операции git, так как Heroku будет собирать ваш проект, включая все зависимости, с нуля, проверять и развёртывать его.

Дополнительную информацию можно найти здесь.

The Swift Programming Language, Copyright © 2014-2025 Apple Inc.
Swift and the Swift logo are trademarks of Apple Inc.

Documentation for Swift 6.0.3


https://www.swift.org/documentation/server/guides/deploying/heroku.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API