ubuntu swift mysql_在Ubuntu安装swift3.0并部署Vapor

Linux 安装 swift3.0

我的环境是 阿里云服务器 系统 Ubuntu14.04 64位 选择的按量计费 100M带宽 当然你也可以选择 包月的 或者弄台pc安装Ubuntu

下载swift3.0 和签名文件 下载地址:swift.org 下载对应的版本 我的服务器是Ubuntu14.04

dab36098d17e

QQ20161018-0.png

如何在服务器下载

首先使用 ssh 登录服务器

dab36098d17e

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

dab36098d17e

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--.tar.gz.sig

// 会输出如下信息等等

...

gpg: Good signature from "Swift Automatic Signing Key #1 "

解压Swift3.0 文件

tar xzf swift--.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呢 我一开始也是懵逼的 这个时候你只需关掉链接 在登录一次就可以了

dab36098d17e

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项目

dab36098d17e

QQ20161018-4.png

生成的项目结构

dab36098d17e

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.swift 和DBManager.swift

RequestHandler.swift 主要处理接收到的请求 提取参数返回对应的数据

DBManager.swift 主要是对 MySQL 的操作

在Ubuntu服务器部署运行

首先使用git clone 我的代码

执行 vapor build 会先安装依赖 因为git 上传 忽略了 Xcode的工程文件 .build 目录(隐藏目录) Packages 目录

build 成功后 执行 vapor run 这命令在 Linux 启动不了 则使用 .build/debug/App 启动 显示如下信息则启动成功

dab36098d17e

QQ20161018-6.png

代码里使用 print函数的打印结果 以及每一次请求都会在终端显示出来

dab36098d17e

QQ20161018-8.png

dab36098d17e

QQ20161018-9.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值