使用Swift4+Vapor写后端-部署heroku服务器
文章图片
前言
上一篇我们初步了解了vapor创建项目,本篇我们学习一下vapor服务的部署。国外网站Heroku 提供免费的代码部署服务,作为初学者我们选择heroku来部署我们的vapor服务。
注册
heroku注册一个账号,注册流程略。注册完成后,我们可以直接创建一个app,或者使用终端操作。本篇介绍后者。
安装与卸载(mac OS)
安装
下载安装包。
【使用Swift4+Vapor写后端-部署heroku服务器】homebrew命令安装heroku
brew install heroku/brew/heroku
国内使用homebrew安装异常缓慢,推荐使用安装包安装。
卸载
rm -rf /usr/local/heroku
rm -rf ~/.local/share/heroku ~/.config/heroku ~/Library/Caches/heroku
如果使用homebrew安装
brew uninstall heroku
rm -rf ~/.local/share/heroku ~/.config/heroku ~/Library/Caches/heroku
部署服务器
cd 进入项目目录下,提交git后开始设置服务器。
登录heroku:
heroku login
Enter your Heroku credentials:
Email: xxxxxxxx.com
Password: ***********
Logged in as xxxxxxxx.com
使用vapor部署heroku:
vapor heroku init
// 自定义app名字
Would you like to provide a custom Heroku app name?
y/n> y
Custom app name:
> youAppName
// Choose a region: US OR Europe
Would you like to deploy to a region other than the US?
y/n> nWould you like to provide a custom Heroku buildpack?
y/n> nAre you using a custom Executable name?
y/n> nWould you like to push to Heroku now?
y/n> y
(重要)自定义custom Heroku buildpack 其实在上一步Would you like to provide a custom Heroku buildpack?就可以完成这个操作,为了条例清晰,所以单独做这个操作。这步是告诉Heroku我们的包是使用Swift编写的,“build”的时候要采用Swift语言。
heroku buildpacks:set https://github.com/kylef/heroku-buildpack-swift.git
(重要)增加Procfile和.swift-version文件 因为我们要部署在heroku上,所以要在项目根目录下增加Procfile文件。使用Procfile可以为web服务器设置运行进程。 任何使用swift包管理器从Swift源生成的二进制文件都将放置在$PATH中。文件内容如下:
for Vapor 2 apps:web: Run --env=production --port=$PORTfor Vapor 3 apps (Swift 4.1 required):web: Run serve --env production --hostname 0.0.0.0 --port $PORT
使用.swift-version文件自定义swift版本。这里我们使用的是swift4,所以在.swift-version文件中输入4.0.
配置数据库
heroku addons:create heroku-postgresql:hobby-dev
更新部署
git add .
$ git commit -am "make it better"
$ git push heroku master
除了更新部署之外,以上任何操作都能在heroku的网页后台完成,填写错误都可以去后台更改。最后
差不多都踩完坑了,完成这些操作部署成功之后,应该就可以访问app的请求了。
后面我们就正式开始敲代码吧~
相关参考
Heroku
Heroku文档
推荐阅读
- 一生,只写一千字
- 使用自定义隐式转换快速创建失败Result
- 投稿|国产剧女精英,演得不行还是写得不好?
- 黑科技|关于如何使用python下载各大网站的视频
- python|手把手教你使用Python获取B站视频并在本地实现弹幕播放功能
- python|【Python基础教程】类的定义和使用
- python|python写一个简单的爬虫程序(爬取快手)(附源码)
- 使用Operator的方式部署Prometheus
- Day|Day 89/100 在Vue中使用axios,后端body的raw使用json能返回,我本地get请求死活拿不到数据
- 散文