Vapor之初体验

  1. Swift环境搭建
    1. MacOS
    2. Unbuntu
    3. Swiftenv
  2. Vapor环境搭建
  3. Vapor的使用
  4. 部署
    1. Ubuntu
    2. Heroku
  5. Xcode上调试
  6. 参考

比较出名的Swift Web框架有Vapor、Perfect、Kitura,现在这些框架都还没十分成熟,主要是缺少基础库,还有Swift Package Manager(SPM)不支持iOS。但基于苹果的Swift Server API计划,我们还是可以放心投入到Swift Web学习中去。这里先简单介绍一下Vapor的上手体验,开始Swift Web的入门之旅。

Swift环境搭建

MacOS

直接下载Xcode8(Swift3)或者 Xcode9(Swift4)

下载后输入

curl -sL check.vapor.sh | bash

输出下面的第一项就证明Swift环境OK了

{% asset_img checkVapor.png check %}

Unbuntu

需要额外多几个步骤

  1. 远程登录服务器

    //填入你搬瓦工端口号和IP
    ssh -p 2222 root@11.11.11.11
  2. 安装依赖工具

    sudo apt-get update
    sudo apt-get install clang libicu-dev binutils git libpython2.7-dev libcurl3
  3. 下载Swift

    	#Ubuntu 14.04
    wget https://swift.org/builds/swift-3.0-release/ubuntu1404/swift-3.0-RELEASE/swift-3.0-RELEASE-ubuntu14.04.tar.gz
    
    	#Ubuntu 15.10
    wget https://swift.org/builds/swift-3.0-release/ubuntu1510/swift-3.0-RELEASE/swift-3.0-RELEASE-ubuntu15.10.tar.gz
  4. 解压Swift

    	# Ubuntu 14.04
    tar zxf swift-3.0-RELEASE-ubuntu14.04.tar.gz
    
    	# Ubuntu 15.10
    tar zxf swift-3.0-RELEASE-ubuntu15.10.tar.gz
  5. 安装

    	# Ubuntu 14.04
    mv swift-3.0-RELEASE-ubuntu14.04 /swift-3.0
    
    	# Ubuntu 15.10
    mv swift-3.0-RELEASE-ubuntu15.10 /swift-3.0
  6. 设置路径

    vi ~/.bashrc
    export PATH=/swift-3.0/usr/bin:"${PATH}"
  7. 验证

    sudo apt-get install curl
    curl -sL check.vapor.sh | bash

Swiftenv

在MacOS和Ubuntu除了以上介绍的方法,还可以使用Swiftenv工具安装Swift,它还可以同时兼容多套Swift的存在,方便地进行切换,类似python的pyenv一样。这里就不作具体说明,抛出一下知识点。

Vapor环境搭建

主要是安装Vapor的Toolbox,它是一个Swift脚本的CLI(command line interface),需要Swift的环境支持。

  1. 安装
    输入以下指令

    curl -sL toolbox.vapor.sh | bash
  2. 验证

    vapor --help
  3. 更新

    vapor self update
  4. 创建Vapor模板

    vapor new <name> [--template=<repo-url-or-github-path>]

Vapor的使用

1.创建

cd /Users/xxx/(项目的路径)
vapor new Hello

创建后提示如下

项目结构

2.修改用例

官方给出最最最简单的用例

import Vapor

let drop = try Droplet()

drop.get("hello") { req in
    return "Hello, world."
}

try drop.run()

拉下来的模板默认没有GET请求的响应,我们通过找到main.swift文件添加上官方的这个用例。

3.编译

到项目路径下执行

vapor build
#发布正式版时,提高性能
vapor build --release

编译成功后输出

当你把资源包(Packages文件夹)下载编译完成后,可以把资源包内的所有文件复制一份出来,下次新建项目时,把这些文件拷入Packages文件夹可免去这部分文件的重复下载。

4.运行

vapor run serve
#需要权限时
sudo vapor run serve
#某些linux系统下
sudo -i vapor run serve

此时,我们就可以使用 http://localhost:8080/hello 或者 http://0.0.0.0:8080/hello
访问本地的服务端了。

部署

Ubuntu

在远程ubuntu上面,Vapor的环境搭建和使用和上面介绍的一样。但在编译运行前我们需要先进入远程服务器内,找到项目的Config文件夹内的servers.json,添加自己服务器的ip和端口80进去

{
  "http": {
    "host": "11.11.11.11",
    "port": 80
  }
}

配置好后再执行编译和运行。
运行起来后,我们在找一个浏览器,输入:11.11.11.11:80/hello,即可看到结果。

Heroku

Heroku平台的灵活性极高且支持多种编程语言。若想把程序部署到Heroku上,开发者要使用Git把程序推送到Heroku的Git服务器上。在服务器上,git push命令会自动触发安装、配置和部署程序。Heroku使用名为Dyno的计算单元衡量用量,并以此为依据收取服务费用,但Heroku的免费版已经完全可以满足我们日常练习的需求,并且其简单快捷的Git操作指令很易上手。

  1. 创建Heroku账户
    Heroku官网创建自己的开发者账号。
    注意要记住自己的邮箱和密码,因为一会儿需要在终端进行登录。

  2. 安装Heroku CLI
    Heroku CLI是用来创建、管理Heroku上apps的命令行工具。(heroku 的命令行客户端将被安装到/usr/local/heroku,同时,/usr/local/heroku/bin将被添加到你的PATH环境变量)

    brew install heroku

安装完成之后执行如下指令来登录,输入邮箱和密码(把你的 SSH 公钥上传到 Heroku 这一点很重要,上传后才能使用 git push 命令。正常情况下,login 命令会自动创建并上传 SSH 公钥。)

heroku login
Enter your Heroku credentials.
Email: adam@example.com
Password (typing will be hidden):
Authentication successful.
  1. 创建Git
    在Github或其它Git服务器上创建好远端仓库,然后进入你要部署的App,比如上文的Hello项目,执行

    $cd Hello
    $git init
    $git remote add origin git@github.com:xxx/xxx.git
    $git add .
    $git commit -m "add hello app"
    $git push -u origin master
  2. 关联Git
    有两种操作方式关联项目的Git,一种是命令行,一种是网页。

命令行部署

vapor heroku init

这时Heroku CLI会问几个问题:
Would you like to provide a custom Heroku app name? Answer ‘n’ and hit enter if you don’t have a custom name.
Would you like to provide a custom Heroku buildpack? Answer ‘n’ and hit enter if you would like to use the default buildpack that Heroku provides.
Are you using a custom Executable name? Answer ‘n’ and hit enter here if you aren’t using a custom executable name.
Would you like to push to Heroku now? Answer ‘n’ and hit enter.
若要配置在线数据库,最后一个问题需先选择‘n’。
然后添加Postgres到Heroku

$ heroku addons:create heroku-postgresql:hobby-dev

添加完成后查看数据库的URL

$ heroku config

然后创建Procfile文件

$ vapor heroku init

并修改Procfile文件的内容为

web: App --env=production --workdir="./"
web: App --env=production --workdir=./ --config:servers.default.port=$PORT --config:postgresql.url=$DATABASE_URL

最后通过push到Git完成Heroku的部署

$ git push heroku master

平时更新

$ git commit -am "Adds new code"
$ git push heroku master

PS:创建heroku应用和关联Git的操作还可以用以下一条指令代替,但会关联到heroku的git仓库,而上面执行的是自定义关联的Git仓库

#创建app
➜  someAccount git:(rest) ✗ heroku apps:create some-app
Creating some-app... done, stack is cedar-14
https://some-app.herokuapp.com/ | https://git.heroku.com/some-app.git
Git remote heroku added
#查看app
➜  someAccount git:(rest) ✗ heroku apps
=== My Apps
some-app
#查看远端git的URL
git remote -v

还有,若执行git push heroku master时报错
No default language could be detected for this app.
remote: HINT: This occurs when Heroku cannot detect the buildpack to use for this application automatically.
这说明heroku官方没有swift的buildpack,所以我们要自己添加

heroku create --buildpack https://github.com/kylef/heroku-buildpack-swift.git
heroku buildpacks:set https://github.com/kylef/heroku-buildpack-swift.git

若还是报错
error at=error code=H10 desc=”App crashed” method=GET path=”/plaintext”
这时需要检查Procfile文件是否修改好,Procfile需要放到项目的根目录里

web: Run --env=production --workdir=./ --config:servers.default.port=$PORT

官网部署
这个就花太多篇幅描述了,简单说一下流程
创建新App,打开设置,在“Buildpacks”中输入 https://github.com/kylef/heroku-buildpack-swift (目的是告诉Heroku包是使用Swift编写且要采用Swift编译),然后打开“Deploy”选择Github或设置自定义的Git地址,并连接到项目的远程仓库,最后点击“Manual deploy”的“Deploy Branch”,等Build结束,部署成功后可以在“Domains”中查看自己的域名,类似 http://appname.herokuapp.com ,此时就可以通过这个域名在外网访问了。

Xcode上调试

在项目路径下执行

vapor xcode

执行成功后会生成一个*.xcodeproj文件,打开工程后,对App.scheme的build和run就如同vapor build和vapor run指令一样,但是,像serve、–port、–release等参数,需要在scheme对应操作项的Arguments上设置

参考

Swift服务端-Vapor初次使用
Swift后端Vapor的安装和部署
Vapor项目实战-从创建到部署,一步步踏入深坑


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 mingfungliu@gmail.com

文章标题:Vapor之初体验

文章字数:2k

本文作者:Mingfung

发布时间:2018-01-05, 21:49:00

最后更新:2018-05-07, 10:56:22

原始链接:http://blog.ifungfay.com/后端/Vapor之初体验/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏

宝贝回家