Vapor的部署

  1. Vapor Cloud
  2. Heroku

最近计划搭个后端,开始实践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):

然后在应用的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" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏

宝贝回家