部署到 Heroku

Heroku 是一个流行的all-in-one托管解决方案。

对于您的 Heroku 应用程序,您只需要选择一个虚拟操作系统(堆栈)和预装的软件包(构建包)。安装 Heroku 的 CLI 工具后,您可以使用标准的 git 命令将代码推送到 Heroku,代码将在 Heroku 上从源代码构建并部署。

您可以在 heroku.com 了解更多信息。

注册

您需要一个 Heroku 帐户。如果您没有帐户,请点击此处注册。

CLI 设置

请确保您已安装 Heroku CLI 工具。

Homebrew 安装

brew tap heroku/brew && brew install heroku

其他安装选项

请参阅此处的其他安装选项。

登录

安装 CLI 后,使用以下命令登录

heroku login

…并按照提示操作。

应用程序设置

访问 Heroku 控制面板 以访问您的帐户,并从右上角的下拉菜单中创建一个新的应用程序。Heroku 将询问一些问题,例如区域和应用程序名称,只需按照他们的提示操作即可。

示例项目创建

在本指南中,我们将托管 Swift NIO 的示例 HTTP 服务器 – 您可以将这些概念应用于您自己的项目。让我们从克隆 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 年 12 月,Heroku 的默认堆栈是 Heroku 22

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

当前可用的堆栈在此处列出:此处

构建包选择

设置构建包以教导 Heroku 如何处理 Swift。Vapor Community 构建包任何 Swift 项目的良好构建包。它不安装 Vapor,也没有任何特定于 Vapor 的设置。

heroku buildpacks:set vapor/vapor

Swift 版本选择

我们添加的构建包会在项目根目录中查找 .swift-version 文件,以了解要使用的 Swift 版本。

echo "5.9" > .swift-version

这将创建 .swift-version 文件,内容为 5.9

当发布新版本的 Swift 时,构建包需要更新后才能采用最新版本。

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-versionProcfile 文件,请确保这些文件已提交到 main 分支,以便包含在您的部署中

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

部署到 Heroku

当您准备好部署时,从终端运行此命令

git push heroku main

这将比常规 git 操作花费的时间长得多,因为 Heroku 将从头开始构建您的项目,包括所有依赖项,验证并部署它。

更多信息可以在此处找到。