Linux 安裝 swift3.0
- 我的環(huán)境是 阿里云服務(wù)器 系統(tǒng) Ubuntu14.04 64位 選擇的按量計(jì)費(fèi) 100M帶寬 當(dāng)然你也可以選擇 包月的 或者弄臺(tái)pc安裝Ubuntu
- 下載swift3.0 和簽名文件 下載地址:swift.org 下載對(duì)應(yīng)的版本 我的服務(wù)器是Ubuntu14.04
- 如何在服務(wù)器下載
-
首先使用 ssh 登錄服務(wù)器
- 由于是純終端操作 我選擇了 wget 工具下載 如果你沒有安裝 則需要安裝 wget
-
// 首先更新下源
sudo apt-get update
// 安裝wget
sudo apt-get install wget
// 安裝完了如何使用 wget 下載 很簡(jiǎn)單 wget 下載鏈接
// 首先 新建一個(gè)文件
mkdir Swift3.0
// 進(jìn)入文件夾
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
進(jìn)入安裝步驟 跟著 swift.org 的教程走
- 首先需要 安裝一些 clang
sudo apt-get install clang libicu-dev
- 導(dǎo)入PGP密匙到你的密匙環(huán) 提供了兩種方式
// 第一種
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 -
- 驗(yàn)證PGP密匙 同樣提供兩種方式
gpg --keyserver hkp://pool.sks-keyservers.net --refresh-keys Swift
OR
// 這種是用下載的文件驗(yàn)證
gpg --verify swift-<VERSION>-<PLATFORM>.tar.gz.sig
// 會(huì)輸出如下信息等等
...
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 是一個(gè)隱藏文件
vi .bashrc
// 在最底部配置swift3.0 的路徑
# Swift
export PATH=~/Swift3.0/swift-3.0-RELEASE-ubuntu14.04/usr/bin:"${PATH}"
// 保存退出
- Swift已經(jīng)算是安裝好了 這個(gè)時(shí)候在終端 輸入 swift --version 會(huì)輸出 swift2.3 ,這時(shí)候你是不是會(huì)納悶,我明明下載的swift3.0 為啥輸出2.3呢 我一開始也是懵逼的 這個(gè)時(shí)候你只需關(guān)掉鏈接 在登錄一次就可以了
方便管理代碼還需要安裝下 git
- 安裝git 很簡(jiǎn)單
sudo apt-get install git
安裝toolbox vapor官方提供的一個(gè)終端工具
curl -sL toolbox.qutheory.io | bash
// 可能會(huì)報(bào)錯(cuò) 找不到 curl 命令 安裝一下就好了
sudo apt-get install curl
// 安裝curl再執(zhí)行上面的命令 有點(diǎn)慢
// 安裝完toolbox 輸入 vapor 回車會(huì)有相應(yīng)的提示
vapor new hello 在當(dāng)前目錄創(chuàng)建一個(gè)工程
vapor build 編譯工程
vapor xcode 生成xcode項(xiàng)目
- 生成的項(xiàng)目結(jié)構(gòu)
所有的代碼應(yīng)該放在Sources/App目錄下 main.swift 為整個(gè)程序的入口
進(jìn)入目錄 執(zhí)行 vapor build 如果是第一次執(zhí)行 首先會(huì)創(chuàng)建一個(gè)Packages目錄,然后根據(jù) Package.swift 安裝相關(guān)依賴 第一次有點(diǎn)慢,這個(gè)時(shí)候你可以看看我的第一篇文章 Vapor簡(jiǎn)單使用
我現(xiàn)在主要是還是用xcode編寫代碼 代碼放在github SJWeatherServer 在服務(wù)使用git更新代碼
SJWeatherServer 是一個(gè)對(duì)MobAPI天氣數(shù)據(jù)的轉(zhuǎn)發(fā) 以及在 vapor中使用MySQL
- Linux 安裝 MySQL
// 在官網(wǎng)獲取MySQL的APT倉(cāng)庫(kù) 如果報(bào)錯(cuò) 請(qǐng)執(zhí)行 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
// 回車后出現(xiàn)如下界面:選擇最新版本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安裝成功矫付!
// 在安裝下面的 不然可能會(huì)出現(xiàn) MySQL頭文件找不到
apt-get install libmysqlclient-dev
/**常用命令:
啟動(dòng)
1落追、使用 service 啟動(dòng):service mysql start
2搔扁、使用 mysqld 腳本啟動(dòng):/etc/inint.d/mysql start
3诽俯、使用 safe_mysqld 啟動(dòng):safe_mysql&
停止
1敲才、使用 service 啟動(dòng):service mysql stop
2晦墙、使用 mysqld 腳本啟動(dòng):/etc/inint.d/mysql stop
3、mysqladmin shutdown
重啟
1歧斟、使用 service 啟動(dòng):service mysql restart
2纯丸、使用 mysqld 腳本啟動(dòng):/etc/inint.d/mysql restart
// 添加賬戶
grant all privileges on *.* to "username"@"hostname" identified by "passwd";
// 上面命令在5.7執(zhí)行可能會(huì)報(bào)錯(cuò)
// 解決: 先退出 MySQL 執(zhí)行下面命令
mysql_upgrade -u root -p
// 重啟MySQL
service mysql restart
*/
- 如何在代碼中連接MySQL
// 首先需要為項(xiàng)目添加MySQL 依賴 在Package.swift 中加入下面代碼 然后執(zhí)行 vapor build 會(huì)自動(dòng)安裝好依賴
.Package(url: "https://github.com/qutheory/mysql.git", majorVersion: 1, minor: 0)
class DBConfig {
static let HOST = "118.178.90.225" // 數(shù)據(jù)地址 本地環(huán)境 則是 127.0.0.1
static let USER = "king" // 數(shù)據(jù)庫(kù)用戶名
static let PWD = "King" // 用戶名密碼
static let DATABASE = "SJWeather" // 數(shù)據(jù)庫(kù) 請(qǐng)先在你的數(shù)據(jù)庫(kù)中創(chuàng)建 要使用的數(shù)據(jù)庫(kù)
}
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 為數(shù)據(jù)端口
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()
// 創(chuàng)建一個(gè)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
// 直接返回一個(gè)html 頁(yè)面
return try app.view.make("README.html")
}
app.run()
- 這個(gè)demo 主要集中在
RequestHandler.swift
和DBManager.swift
-
RequestHandler.swift
主要處理接收到的請(qǐng)求 提取參數(shù)返回對(duì)應(yīng)的數(shù)據(jù) -
DBManager.swift
主要是對(duì) MySQL 的操作
-
在Ubuntu服務(wù)器部署運(yùn)行
- 首先使用git clone 我的代碼
- 執(zhí)行 vapor build 會(huì)先安裝依賴 因?yàn)間it 上傳 忽略了 Xcode的工程文件 .build 目錄(隱藏目錄) Packages 目錄
- build 成功后 執(zhí)行 vapor run 這命令在 Linux 啟動(dòng)不了 則使用 .build/debug/App 啟動(dòng) 顯示如下信息則啟動(dòng)成功
- 代碼里使用 print函數(shù)的打印結(jié)果 以及每一次請(qǐng)求都會(huì)在終端顯示出來(lái)
- 歡迎加入Vapor交流,群號(hào)碼:566732724
- 更多詳情請(qǐng)看代碼吧!相信您能看懂的github SJWeatherServer