Linux 安裝 swift3.0
- 我的環(huán)境是 阿里云服務器 系統(tǒng) 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密匙到你的密匙環(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 -
- 驗證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已經(jīng)算是安裝好了 這個時候在終端 輸入 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再執(zhí)行上面的命令 有點慢
// 安裝完toolbox 輸入 vapor 回車會有相應的提示
vapor new hello 在當前目錄創(chuàng)建一個工程
vapor build 編譯工程
vapor xcode 生成xcode項目

QQ20161018-4.png
- 生成的項目結(jié)構

QQ20161018-5.png
所有的代碼應該放在Sources/App目錄下 main.swift 為整個程序的入口
進入目錄 執(zhí)行 vapor build 如果是第一次執(zhí)行 首先會創(chuàng)建一個Packages目錄,然后根據(jù) Package.swift 安裝相關依賴 第一次有點慢,這個時候你可以看看我的第一篇文章 Vapor簡單使用
我現(xiàn)在主要是還是用xcode編寫代碼 代碼放在github SJWeatherServer 在服務使用git更新代碼
SJWeatherServer 是一個對MobAPI天氣數(shù)據(jù)的轉(zhuǎn)發(fā) 以及在 vapor中使用MySQL
- Linux 安裝 MySQL
// 在官網(wǎng)獲取MySQL的APT倉庫 如果報錯 請執(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安裝成功!
// 在安裝下面的 不然可能會出現(xiàn) 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執(zhí)行可能會報錯
// 解決: 先退出 MySQL 執(zhí)行下面命令
mysql_upgrade -u root -p
// 重啟MySQL
service mysql restart
*/
- 如何在代碼中連接MySQL
// 首先需要為項目添加MySQL 依賴 在Package.swift 中加入下面代碼 然后執(zhí)行 vapor build 會自動安裝好依賴
.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ù)庫用戶名
static let PWD = "King" // 用戶名密碼
static let DATABASE = "SJWeather" // 數(shù)據(jù)庫 請先在你的數(shù)據(jù)庫中創(chuàng)建 要使用的數(shù)據(jù)庫
}
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)建一個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主要處理接收到的請求 提取參數(shù)返回對應的數(shù)據(jù) -
DBManager.swift主要是對 MySQL 的操作
-
在Ubuntu服務器部署運行
- 首先使用git clone 我的代碼
- 執(zhí)行 vapor build 會先安裝依賴 因為git 上傳 忽略了 Xcode的工程文件 .build 目錄(隱藏目錄) Packages 目錄
- build 成功后 執(zhí)行 vapor run 這命令在 Linux 啟動不了 則使用 .build/debug/App 啟動 顯示如下信息則啟動成功

QQ20161018-6.png
- 代碼里使用 print函數(shù)的打印結(jié)果 以及每一次請求都會在終端顯示出來

QQ20161018-8.png

QQ20161018-9.png
- 歡迎加入Vapor交流,群號碼:566732724
- 更多詳情請看代碼吧!相信您能看懂的github SJWeatherServer

