Vapor的部署
最近计划搭个后端,开始实践Swift的后台开发,借此了解后台数据库的操作,为之后学习前端和在客户端搞点事情时做一些接口的准备。
才过去了几个月,Vapor就升级到3.0版本,还提供了他们自家的云端 Vapor Cloud,通过 Vapor tool 就可简单地将工程部署上去。
同时,在Swift4.0上,部署到Heroku的一些操作细节也不一样了,下面就来讲述一下部署到这两个平台的步骤
Vapor Cloud
1.先 build 好工程,然后运行看看是否正常(vapor run server该方法已经被抛弃,使用vapor xcode -y,在Xcode上运行代替)
编译时若提示
–enable-prefetching option is unavailable in swift 4.1
则需检查Package.swift中指定的Vapor版本是否对应当前的Swift版本,即使用最新的Vapor tool创建的工程,默认配置的都可能对应不上,这里将3.0.0改为3.0.6就解决了
let package = Package(
name: "SavingThePlanet",
dependencies: [
.package(url: "https://github.com/vapor/vapor.git", from: "3.0.6"),
.package(url: "https://github.com/vapor/fluent-sqlite.git", from: "3.0.0")
],
targets: [
.target(name: "App", dependencies: ["FluentSQLite", "Vapor"]),
.target(name: "Run", dependencies: ["App"]),
.testTarget(name: "AppTests", dependencies: ["App"])
]
)
2.按着文档中的步骤一步步配置
先在他们家的后台(https://dashboard.vapor.cloud/)注册账号,然后创建一个应用,应用要与本地项目目录名一致,
也可以在本地通过指令创建,创建前先登录
vapor cloud login
vapor cloud create proj
部署前先为项目添加Git
然后开始部署
vapor cloud deploy
中途会有各种询问
- 指定创建的应用名
- 指定模块名
- 指定主域名
- 创建项目环境
- 指定部署的分支
- 指定复制容量
- 增加数据库(可选,使用创建指令提前创建 vapor cloud create db)
- 指定构建类型
就这样,轻松部署完毕。
项目其中的文件 cloud.yml
是一个设置可选项的扩展配置文件,需要增加自定义的设置可在上面添加。
Heroku
现在Heroku后台(https://dashboard.heroku.com)注册账号,然后创建一条pipeline,再在此pipline上创建应用。
在应用的Settings做一些环境配置(这里我使用Github做仓库管理,没用Heroku的Git):
- 指定GitHub Repo
- 指定Buildpacks,交代应用的依赖库和配置环境(一般使用 https://github.com/kylef/heroku-buildpack-swift.git
) - 指定域名和SSL(可选)
然后在应用的Deploy做一些发布配置
- 发布方式指定(这里选择GitHub)
- 自动发布指定(根据Git的push动作自动重编译和发布)
- 发布的分支指定
最后,将能在本地通过build和run的项目push到GitHub,Activity里就有当前build的进度和日志显示,访问Heroku提供的默认域名地址后,在More的View logs里能看到访问的情况。
** 特别提示: **
不同Vapor版本,不同的Procfile
在使用 Vapor 2 的时候,项目根目录中的Procfile文件需要填入以下内容web: Run –env=production –port=$PORT
在使用 Vapor 3 的时候,Procfile则需要填入以下内容
web: Run serve --env production --hostname 0.0.0.0 --port $PORT
使用Procfile可以为web服务器设置运行进程。因为一开始不知道Vapor 3下的配置格式而使用了Vapor 2的旧格式配置,导致卡了很久都没能在云端访问成功(发布显示成功了),访问时一直提示Application Error,日志中打印status=503 code=H10/H14 app crash。
自定义swift版本
同时还要指定一个.swift-version文件,里面填入需要依赖的Swift版本号(这里填入4.1.2),同样放在项目的根目录下。迁移项目目录
需要先清掉历史的build,再重新build,否则run会失败(一些文件中的路径没更新)vapor build –clean
搞定后再推到GitHub上,等待Heroku编译和发布,访问成功。需要多谢这篇文章的指引。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 mingfungliu@gmail.com
文章标题:Vapor的部署
文章字数:1k
本文作者:Mingfung
发布时间:2018-08-13, 23:34:00
最后更新:2018-08-14, 00:52:14
原始链接:http://blog.ifungfay.com/后端/Vapor的部署/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。