在Ubuntu安装swift3.0并部署Vapor

Linux 安装 swift3.0

  • 我的环境是 阿里云服务器 系统 Ubuntu14.04 64位 选择的按量计费 100M带宽 当然你也可以选择 包月的 或者弄台pc安装Ubuntu
  • 下载swift3.0 和签名文件 下载地址:swift.org 下载对应的版本 我的服务器是Ubuntu14.04
    QQ20161018-0.png
  • 如何在服务器下载
    • 首先使用 ssh 登录服务器


      QQ20161018-1.png
    • 由于是纯终端操作 我选择了 wget 工具下载 如果你没有安装 则需要安装 wget
   // 首先更新下源
 sudo apt-get update
 // 安装wget
sudo apt-get install wget
// 安装完了如何使用 wget 下载 很简单 wget 下载链接
// 首先 新建一个文件
mkdir Swift3.0
// 进入文件夹
cd Swift3.0 
// 下载Swift3.0
wget https://swift.org/builds/development/ubuntu1404/swift-DEVELOPMENT-SNAPSHOT-2016-10-14-a/swift-DEVELOPMENT-SNAPSHOT-2016-10-14-a-ubuntu14.04.tar.gz
// 下载签名
wget https://swift.org/builds/development/ubuntu1404/swift-DEVELOPMENT-SNAPSHOT-2016-10-14-a/swift-DEVELOPMENT-SNAPSHOT-2016-10-14-a-ubuntu14.04.tar.gz.sig
QQ20161018-2.png

进入安装步骤 跟着 swift.org 的教程走

  • 首先需要 安装一些 clang
 sudo apt-get install clang libicu-dev
  • 导入PGP密匙到你的密匙环 提供了两种方式
// 第一种
gpg --keyserver hkp://pool.sks-keyservers.net \\\\
      --recv-keys \\\\
      '7463 A81A 4B2E EA1B 551F  FBCF D441 C977 412B 37AD' \\\\
      '1BE1 E29A 084C B305 F397  D62A 9F59 7F4D 21A5 6D5F' \\\\
      'A3BA FD35 56A5 9079 C068  94BD 63BC 1CFE 91D3 06C6'

// 第二种
wget -q -O - https://swift.org/keys/all-keys.asc | \\\\
  gpg --import -
  • 验证PGP密匙 同样提供两种方式
gpg --keyserver hkp://pool.sks-keyservers.net --refresh-keys Swift

OR

// 这种是用下载的文件验证
gpg --verify swift-<VERSION>-<PLATFORM>.tar.gz.sig

// 会输出如下信息等等
...
gpg: Good signature from "Swift Automatic Signing Key #1 <swift-infrastructure@swift.org>"
  • 解压Swift3.0 文件
tar xzf swift-<VERSION>-<PLATFORM>.tar.gz
  • 配置命令path
cd ~ 
// .bashrc 是一个隐藏文件
vi .bashrc

// 在最底部配置swift3.0 的路径
# Swift
export PATH=~/Swift3.0/swift-3.0-RELEASE-ubuntu14.04/usr/bin:"${PATH}"
// 保存退出
  • Swift已经算是安装好了 这个时候在终端 输入 swift --version 会输出 swift2.3 ,这时候你是不是会纳闷,我明明下载的swift3.0 为啥输出2.3呢 我一开始也是懵逼的 这个时候你只需关掉链接 在登录一次就可以了
QQ20161018-3.png

方便管理代码还需要安装下 git

  • 安装git 很简单
sudo apt-get install git

安装toolbox vapor官方提供的一个终端工具

curl -sL toolbox.qutheory.io | bash

// 可能会报错 找不到 curl 命令 安装一下就好了
sudo apt-get install curl

// 安装curl再执行上面的命令 有点慢

// 安装完toolbox 输入 vapor 回车会有相应的提示
vapor new hello 在当前目录创建一个工程
vapor build 编译工程
vapor xcode 生成xcode项目
QQ20161018-4.png
  • 生成的项目结构
QQ20161018-5.png
  • 所有的代码应该放在Sources/App目录下 main.swift 为整个程序的入口

  • 进入目录 执行 vapor build 如果是第一次执行 首先会创建一个Packages目录,然后根据 Package.swift 安装相关依赖 第一次有点慢,这个时候你可以看看我的第一篇文章 Vapor简单使用

  • 我现在主要是还是用xcode编写代码 代码放在github SJWeatherServer 在服务使用git更新代码

SJWeatherServer 是一个对MobAPI天气数据的转发 以及在 vapor中使用MySQL

  • Linux 安装 MySQL
 // 在官网获取MySQL的APT仓库 如果报错 请执行 sudo apt-get install wget
 wget http://repo.mysql.com//mysql-apt-config_0.6.0-1_all.deb 
// 安装
 dpkg -i mysql-apt-config_0.6.0-1_all.deb 
// 回车后出现如下界面:选择最新版本5.7 // 选择5.7后,选择apply 
// 更新下apt-get update
 // 移除原先安装mysql 
apt-get remove mysql-server 
apt-get remove mysql-client 
apt-get autoremove 
// 安装新的 
sudo apt-get install mysql-server
// OK,5.7版本的mysql安装成功!
// 在安装下面的 不然可能会出现 MySQL头文件找不到
apt-get install libmysqlclient-dev 
/**常用命令:
 启动
 1、使用 service 启动:service mysql start 
 2、使用 mysqld 脚本启动:/etc/inint.d/mysql start 
 3、使用 safe_mysqld 启动:safe_mysql& 
停止 
1、使用 service 启动:service mysql stop 
2、使用 mysqld 脚本启动:/etc/inint.d/mysql stop 
3、mysqladmin shutdown
 重启 
1、使用 service 启动:service mysql restart 
2、使用 mysqld 脚本启动:/etc/inint.d/mysql restart 
// 添加账户 
grant all privileges on *.* to "username"@"hostname" identified by "passwd"; 
// 上面命令在5.7执行可能会报错 
// 解决: 先退出 MySQL 执行下面命令 
mysql_upgrade -u root -p 
// 重启MySQL 
service mysql restart 
*/
  • 如何在代码中连接MySQL
// 首先需要为项目添加MySQL 依赖 在Package.swift 中加入下面代码 然后执行 vapor build 会自动安装好依赖
.Package(url: "https://github.com/qutheory/mysql.git", majorVersion: 1, minor: 0)
class DBConfig {
    static let HOST = "118.178.90.225" // 数据地址 本地环境 则是 127.0.0.1
    static let USER = "king" // 数据库用户名
    static let PWD = "King" // 用户名密码
    static let DATABASE = "SJWeather" // 数据库 请先在你的数据库中创建 要使用的数据库
}
import MySQL

class DBManager {
    
    private static var instance: DBManager!
    private var databaseConnectionStatus = false
    @discardableResult
    static func share() -> DBManager {
        
        if instance == nil {
            instance = DBManager()
        }
        return instance
    }
    
    private var mysql: MySQL.Database!
    
    init() {
        setUp()
    }
    
    private func setUp() {
        
        do {
           // 3306 为数据端口
            mysql = try MySQL.Database(
                host: DBConfig.HOST,
                user: DBConfig.USER,
                password: DBConfig.PWD,
                database: DBConfig.DATABASE,
                port: 3306
            )
            print("MySQL connect success")
            databaseConnectionStatus = true
        } catch {
            print("MySQL connect failed")
            databaseConnectionStatus = false
        }
    }
  • 处理接口
import Vapor
import HTTP

let app = Droplet()

// 创建一个API组
app.group("/v1") { api in
    
    api.get("registered.json") { request in
        
        return try RequestHandler.handlerRegistered(request: request)
    }
    
    api.get("login.json") { request in
        
        return try RequestHandler.handlerLogin(request: request)
    }
    
    api.get("logout.json") { request in
        
        return try RequestHandler.handlerLogout(request: request)
    }
    
    api.get("citylist.json") { request in
        
        return try RequestHandler.handlerGetCityList(request: request)
    }
    
    api.get("query.json") { request in
        
        return try RequestHandler.handlerQuery(request: request)
    }
    
    api.get("type.json") { request in
        
        return try RequestHandler.handlerWeatherType(request: request)
    }
}

app.get("/") { request in
    // 直接返回一个html 页面
    return try app.view.make("README.html")
}

app.run()

  • 这个demo 主要集中在 RequestHandler.swiftDBManager.swift
    • RequestHandler.swift 主要处理接收到的请求 提取参数返回对应的数据
    • DBManager.swift 主要是对 MySQL 的操作

在Ubuntu服务器部署运行

  • 首先使用git clone 我的代码
  • 执行 vapor build 会先安装依赖 因为git 上传 忽略了 Xcode的工程文件 .build 目录(隐藏目录) Packages 目录
  • build 成功后 执行 vapor run 这命令在 Linux 启动不了 则使用 .build/debug/App 启动 显示如下信息则启动成功
QQ20161018-6.png
  • 代码里使用 print函数的打印结果 以及每一次请求都会在终端显示出来
QQ20161018-8.png
QQ20161018-9.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 11,943评论 4 60
  • “作者威尔·鲍温,他发起的“不抱怨”活动受到了全世界106个国家和地区、1800万人的热情参与和呼应。这项挑战成功...
    瑜头阅读 208评论 0 0
  • 1.心情有点小激动 今天接到讯息实在值得兴奋到难以入眠。 堂妹领证了!结婚证! 每天都有无数人领证,至于这么兴奋吗...
    花猫猫阅读 202评论 0 1
  • 昨天跟牟先生说我迷茫了 今天就找我谈话了 啰嗦一个多小时 最后被贬的一文不值 说我不好好学习 不动脑筋 没有自信心...
    缪青霞阅读 169评论 0 0
  • 一直信心满满自己一定会找到工作,结果现实很残酷。 笔者二本程序狗,14年毕业后去了北京的一个外包公司工作,...
    灰心丧气的银子阅读 237评论 2 2