Linux 安装 swift3.0
- 我的环境是 阿里云服务器 系统 Ubuntu14.04 64位 选择的按量计费 100M带宽 当然你也可以选择 包月的 或者弄台pc安装Ubuntu
- 下载swift3.0 和签名文件 下载地址:swift.org 下载对应的版本 我的服务器是Ubuntu14.04
- 如何在服务器下载
-
首先使用 ssh 登录服务器
- 由于是纯终端操作 我选择了 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
进入安装步骤 跟着 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呢 我一开始也是懵逼的 这个时候你只需关掉链接 在登录一次就可以了
方便管理代码还需要安装下 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项目
- 生成的项目结构
所有的代码应该放在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 启动 显示如下信息则启动成功
- 代码里使用 print函数的打印结果 以及每一次请求都会在终端显示出来
- 欢迎加入Vapor交流,群号码:566732724
- 更多详情请看代码吧!相信您能看懂的github SJWeatherServer