Swift Perfect Mac本地環境配置

zedxpp發表於2017-12-04

Perfect框架中文文件地址:

perfect.org/docs/index_…

開啟本地伺服器

首先, 根據Perfect框架的官網文件, 快速開啟本地伺服器

perfect.org/docs/gettin…

資料庫選擇

後端開發, 必不可少的便是資料庫, Perfect框架支援好幾種資料庫, 我自己選用的是MySql資料庫, 以下所有教程都是基於MySql資料庫進行展開的.

Swift Perfect Mac本地環境配置

教程所有內容主要是以在本地和伺服器部署各種環境為主, 避免浪費不必要的時間在部署環境上.

在Mac上安裝MySql

開啟終端, 安裝mysql(請勿使用dmg的方式安裝mysql, 經我測試, 發現會碰到一些麻煩的問題)

brew install mysql
複製程式碼
  • 在Mac OS 10.12 上面, 直接安裝即可.
  • 在Mac OS 10.13 上面, 可能需要更新Homebrew, 更新Homebrew又需要Ruby, 更新Ruby又需要Rvm等等. 在這個版本的作業系統上面, Homebrew拿不到/usr/local資料夾的讀寫許可權, 按照官方給出的解決方法(https://github.com/Homebrew/brew/issues/3228), 在我自己的mac電腦上並不行, 來回折騰了1個多小時還是不行, 我決定採取暴力方法.直接解除安裝重灌Homebrew, 重新安裝後, 順利的在mac上安裝好了mysql.

如果你也需要採用這種暴力方法, 請繼續看, 如果你已經順利安裝了, 直接跳過解除安裝重灌的部分.

解除安裝Homebrew

$ cd `brew --prefix` 
$ rm -rf Cellar$ brew prune 
$ rm -rf Library .git .gitignore bin/brew README.md share/man/man1/brew 
$ rm -rf ~/Library/Caches/Homebrew
複製程式碼

重新安裝Homebrew

進入Homebrew官網 https://brew.sh/index_zh-cn.html, 複製這裡的命令到終端安裝即可(安裝命令可能會變, 所以請自行前往復制)

Swift Perfect Mac本地環境配置

MySql啟動與配置

安裝完成後, 手動啟動mysql

mysql.server start    # 啟動
mysql.server stop     # 停止
mysql.server restart  # 重啟
複製程式碼

開啟資料庫

mysql -u root -p
複製程式碼

設定mysql密碼

UPDATE user SET authentication_string=PASSWORD('newpassword'where USER='root';
複製程式碼

更新使用者名稱和密碼, 使用者名稱建議用root, 後面的教程都會以此為例子.

設定完密碼後重新整理許可權

FLUSH PRIVILEGES
複製程式碼

輸入 \q 退出資料庫

重新登入資料庫, 嘗試用新密碼進入, 如果成功, 退出資料庫, 進行接下來的步驟.

建議在網上找一個資料庫軟體, 更加直觀的檢視資料和除錯.

程式碼連線資料庫

接下來回到本地伺服器專案程式碼這邊.

開啟Package.swift匯入.Package(url:"https://github.com/PerfectlySoft/Perfect-MySQL.git", majorVersion: 3), 注意最後面有個逗號.

在終端執行swift buildswift package generate-xcodeproj, 用xcode開啟專案.開啟main.swift

import PerfectMySQL // 匯入

// 配置資料庫資訊
let testHost = "127.0.0.1"
let testUser = "root"
let testPassword = "資料庫密碼"
let testDB = "mysql"
複製程式碼

除了密碼需要改成你自己設定的密碼, 其他的照搬

加入以下函式並呼叫, 在這個函式宣告之後, 隨處呼叫即可

func fetchData() {
    let mysql = MySQL() // 建立一個MySQL連線例項
    let connected = mysql.connect(host: testHost, user: testUser, password: testPassword)
    guard connected else {
        // 驗證一下連線是否成功
        print(mysql.errorMessage())
        return
    }
    
    print("\(mysql.listDatabases())")
    
    defer {
        mysql.close() //這個延後操作能夠保證在程式結束時無論什麼結果都會自動關閉資料庫連線
    }
}
複製程式碼

執行專案, 控制檯列印

["information_schema", "mysql", "performance_schema", "sys"]
複製程式碼

表示資料庫已經用程式碼連線成功.

相關文章