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,比如 main 或 master 分支。确保在推送之前将所有更改都加入此分支。
通过以下命令检查你当前的分支:
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