跳转至

Heroku 是什么

Heroku 是一个一站式程序托管平台,你可以通过heroku.com获取更多信息

注册

你需要一个 heroku 帐户,如果你还没有,请通过此链接注册:https://signup.heroku.com/

安装命令行应用

请确保你已安装 heroku 命令行工具

HomeBrew

brew tap heroku/brew && brew install heroku

其他安装方式

在此处查看其他安装选项: https://devcenter.heroku.com/articles/heroku-cli#download-and-install.

登录

安装命令行工具后,使用以下命令登录:

heroku login

查看当前登录的 heroku 电子邮件账户:

heroku auth:whoami

创建一个应用

通过访问 heroku.com 来访问你的帐户,然后从右上角的下拉菜单中创建一个新应用程序。Heroku 会问一些问题,例如区域和应用程序名称,只需按照提示操作即可。

Git

Heroku 使用 Git 来部署你的应用程序,因此你需要将你的项目放入 Git 存储库(如果还没有的话)。

初始化 Git

如果你需要将 Git 添加到你的项目中,在终端中输入以下命令:

git init

Master

你应该选择一个分支,并坚持将其用于部署到 Heroku,比如 mainmaster 分支。确保在推送之前将所有更改都加入此分支。

通过以下命令检查你当前的分支:

git branch

星号表示当前分支。

* main
  commander
  other-branches

提示:如果你没有看到任何输出并且你刚刚执行了 git init。 你需要先提交(commit)你的代码,然后你会看到 git branch 命令的输出。

如果你当前 不在 正确的分支上,请输入以下命令来切换(针对 main 分支来说):

git checkout main

提交更改

如果此命令有输出,那么你有未提交的改动。

git status --porcelain

通过以下命令来提交

git add .
git commit -m "a description of the changes I made"

与 Heroku 进行连接

将你的应用与 heroku 连接(替换为你的应用名称)。

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

设置运行包(Buildpack)

设置运行包来告知 heroku 如何处理 Vapor。

heroku buildpacks:set vapor/vapor

Swift 版本文件

我们添加的运行包会查找 .swift-version 文件以了解要使用的 swift 版本。 (将 5.8.1 替换为你的项目需要的任何版本。)

echo "5.8.1" > .swift-version

这将创建 .swift-version ,内容为 5.8.1

Procfile

Heroku 使用 Procfile 来知道如何运行你的应用程序,在我们的示例中它需要这样配置:

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

我们可以使用以下终端命令来创建它

echo "web: App serve --env production" \
  "--hostname 0.0.0.0 --port \$PORT" > Procfile

提交更改

我们刚刚只是更改了这些文件,但它们没有被提交。 如果我们推送(push),heroku 将无法看到这些更改。

使用以下命令提交它们。

git add .
git commit -m "adding heroku build files"

部署到 Heroku

你已准备好开始部署,从终端运行以下命令。 构建过程可能会需要一些时间,不必担心。

git push heroku main

扩展

成功构建后,你需要添加至少一台服务器,Eco 计划的价格从每月$5起(参见定价),请确保在 Heroku 上配置了付款方式。然后,针对单个 web worker 执行下面命令:

heroku ps:scale web=1

继续部署

当你想更新时只需将最新的更改推入 main 分支并推送到 heroku,它就会重新部署。

Postgres

添加 PostgreSQL 数据库

在 dashboard.heroku.com 上访问你的应用程序,然后转到 Add-ons 部分。

从这里输入postgres,你会看到Heroku Postgres的选项。 选择它。

选择每月$5的 Eco 计划(参见定价),并进行预配。剩下的交给 Heroku 处理。

完成后,你会看到数据库出现在 Resources 选项卡下。

配置数据库

我们现在必须告诉我们的应用程序如何访问数据库。 在 app 目录中运行。

heroku config

这会输出类似以下内容的内容:

=== today-i-learned-vapor Config Vars
DATABASE_URL: postgres://cybntsgadydqzm:2d9dc7f6d964f4750da1518ad71hag2ba729cd4527d4a18c70e024b11cfa8f4b@ec2-54-221-192-231.compute-1.amazonaws.com:5432/dfr89mvoo550b4

DATABASE_URL 这里将代表 postgres 数据库。 请从不 硬编码静态 url,heroku 会变更这个 url,并破坏你的应用程序。

以下是一个示例数据库配置

if let databaseURL = Environment.get("DATABASE_URL") {
    var tlsConfig: TLSConfiguration = .makeClientConfiguration()
    tlsConfig.certificateVerification = .none
    let nioSSLContext = try NIOSSLContext(configuration: tlsConfig)

    var postgresConfig = try SQLPostgresConfiguration(url: databaseURL)
    postgresConfig.coreConfiguration.tls = .require(nioSSLContext)

    app.databases.use(.postgres(configuration: postgresConfig), as: .psql)
} else {
    // ...
}

如果你使用 Heroku Postgres 的标准计划,则需要开始未验证的 TLS。

不要忘记提交这些更改

git add .
git commit -m "configured heroku database"

重置你的数据库

你可以使用 run 命令在 heroku 上恢复或运行其他命令。 要重置你的数据库请运行:

heroku run App -- revert --all --yes --env production

如要迁移请运行以下命令:

heroku run App -- migrate --env production