Vapor之初体验
比较出名的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
需要额外多几个步骤
远程登录服务器
//填入你搬瓦工端口号和IP ssh -p 2222 root@11.11.11.11
安装依赖工具
sudo apt-get update sudo apt-get install clang libicu-dev binutils git libpython2.7-dev libcurl3
下载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
解压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
安装
# 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
设置路径
vi ~/.bashrc export PATH=/swift-3.0/usr/bin:"${PATH}"
验证
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的环境支持。
安装
输入以下指令curl -sL toolbox.vapor.sh | bash
验证
vapor --help
更新
vapor self update
创建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操作指令很易上手。
创建Heroku账户
在Heroku官网创建自己的开发者账号。
注意要记住自己的邮箱和密码,因为一会儿需要在终端进行登录。安装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.
创建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
关联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" 转载请保留原文链接及作者。