Swift后端Vapor的安装和部署

Vapor

亲,我的简书已不再维护和更新了,所有文章都迁移到了我的个人博客:https://mikefighting.github.io/,欢迎交流。

在Swift后端框架中,Vapor是比较常用的,它发展迅速,语法简洁,社区活跃,现将其在Mac上的简单的使用流程做以介绍。

安装

一、安装最新版的Xcode

Xcode是免费的可以直接在App Store中直接下载。下载完之后需要打开Xcode来完成安装,这可能需要等一段时间。


安装Xcode

二、验证Swif时候安装

通过执行

eval "$(curl -sL check.vapor.sh)"

来第二次确定安装是否成功。

三、安装Vapor

确定Swift成功安装之后我们来安装Vapor toolbox,这其中包含了Vapor的所有依赖以及创建项目时好用的CLI。

安装Homebrew

Homebrew在安装OpenSSL,MySQL,Postgres,Redis,SQLite等依赖的时候极其有用,没有的时候执行如下命令安装:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安装Homebrew Tap

Vapor的Homebrew Tap可以让你安装Vapor的所有包。执行如下命令安装

brew tap vapor/homebrew-tap
brew update

安装Vapor

执行如下命令安装

brew install vapor

安装完成之后会出现如下图案:

新建项目

新建

接下来我们用api模板(toolbox提供了web,api等各种模板)来创建一个Hello的项目。执行如下指令

vapor new Hello --template=api

然后我们执行tree指令就可以看到如下的目录结构:

Vapor 目录结构

如果出现Command not found不能执行请安装tree软件

brew install tree

我们打开如下的目录找到Routes.swift文件。在Build方法中我们看到:

get("plaintext") { req in

return "Hello, world!"
}

上述表示执行get方法,闭包返回请求结果。

编译

确保你所在的是项目的根目录执行如下指令来编译:

vapor build

执行完毕之后将会看到

Building Project [Done]

发布状态编译

在发布状态编译会提升其性能,执行如下指令:

vapor build --release

启动本地服务

执行如下指令来启动服务

vapor run serve

然后你会看到如下信息:

Server starting....

然后就可以在浏览器中执行localhost:8080/plaintext来看到刚才的Hello, World了。

生成Xcode项目

我们刚才做的启动等操作都是通过终端来的,我们也可以使用Xcode来完成,要使用Xcode来执行,我们需要首先创建一个*.xcodeproj文件,执行如下指令来创建:

vapor xcode

部署

完成上述操作之后你就可以在本地访问自己的服务了,但怎样才能部署到远程,生成自己的链接来访问呢?我们使用Heroku,来完成,Heroku的免费版完全可以满足我们日常练习的需求,并且其简单快捷的Git操作指令一定会让你爱不释手。

创建Heroku账户

请在Heroku官网创建自己的账号。

注意要记住自己的邮箱和密码,因为一会儿需要在终端进行登录。

安装Heroku CLI

Heroku CLI用来创建、管理Heroku上apps的命令行工具。执行如下指令来完成安装:

brew install heroku

安装完成之后执行如下指令来登录,输入邮箱和密码来登录:

heroku login
Enter your Heroku credentials.
Email: adam@example.com
Password (typing will be hidden):
Authentication successful.

创建程序

进入你要部署的App,比如上文的Hello项目,然后执行:

$cd Hello
$git init
$git add.
$git commit -m "add hello app"

然后在Heroku中创建一个app,以便其接收你的代码,执行heroku apps:creat [NAME]指令其中名字必须以字母开头,字呢个包含小写字母,数字和连字符,并且其在heroku的所有程序中必须是唯一的。如果出现:

Creating app... done, ⬢ young-island-91962
         https://young-island-91962.herokuapp.com/ | https://git.heroku.com/young-island-91962.git

这说明执行成功了。
执行git remote -v,就会出现远程git的URL了

    heroku  https://git.heroku.com/young-island-91962.git (fetch)
    heroku  https://git.heroku.com/young-island-91962.git (push)

然后执行

heroku create
Creating falling-wind-1624... done, stack is cedar-14
http://falling-wind-1624.herokuapp.com/ | https://git.heroku.com/falling-wind-1624.git
Git remote heroku added

注意坑

然后执行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

最后在执行push的时候还会报错:

error at=error code=H10 desc="App crashed" method=GET path="/plaintext",这时需要修改Procfile文件,Procfile需要放到项目的根目录里,内容如下:

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

这样就可以执行Git的push指令进行部署了:

git push heroku master

随后的操作就变得像平时提交项目一样简单。

git commit -m "change something" -a
git push heroku master

这样一个项目就部署成功了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,198评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,663评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,985评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,673评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,994评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,399评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,717评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,407评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,112评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,371评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,891评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,255评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,881评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,010评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,764评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,412评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,299评论 2 260

推荐阅读更多精彩内容