引言
Perfect 是一個完整和強大的工具箱,框架和應用程序服務器為Linux,iOS和MacOS(OS X)。它提供了Swift工程師為開發面向客戶端和服務器端應用程序的Swift編程語言開發輕量級,可維護,可擴展的應用程序和其他REST服務所需的一切。
接下來幾篇我對 Perfect 框架進行記錄。感興趣的可以看:
Swift Perfect - Ubuntu 服務器部署
Swift Perfect - 七牛上傳文件
Swift Perfect - iOS消息推送(APNs)之獲取 APNs 授權碼
Swift Perfect - 使用 systemd 命令服務器項目后臺運行
Ubuntu 環境下 Nginx 的安裝部署
Swift Perfect - Nginx 配置 HTTPS 服務器
個人例子
以下是我使用 Perfect 寫的 (如果有能幫助到大家的地方,希望能點個贊,順便給GitHub上點個贊)
Github:https://github.com/LeeCenY/iRent
開發環境 | 版本 |
---|---|
Swift | 3.0.2 |
Perfect | 2.0 |
Ubuntu | 16.04 |
第一種:使用腳本安裝(推薦)
使用 https://github.com/PerfectlySoft/Perfect-Ubuntu 部署 Swift 與 Perfect
第二種:手動安裝
Swift 安裝最好選擇3.0版本
- 更新 apt-get 包管理工具
apt-get update
- 安裝 Swift 依賴
sudo apt-get install clang libicu-dev
- 根據Ubuntu的版本選擇對應下載Swift
- 導入 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 -
- 下載Swift
- 解壓
tar xzf swift-3.0.2-RELEASE-ubuntu16.04.tar.gz
- 更改文件名
mv swift-3.0.2-RELEASE-ubuntu16.04 swift
- 把Swift目錄加入到環境變量
echo "export PATH=/root/swift/usr/bin:"${PATH}"" >> ~/.bashrc
source ~/.bashrc
- 執行
swift --version
命令查看Swift環境是否設置成功
Swift version 3.0.2 (swift-3.0.2-RELEASE)
Target: x86_64-unknown-linux-gnu
Ubuntu 部署
- 安裝 git
sudo apt-get install git
- 安裝 Perfect 依賴 OpenSSL、libssl-dev和uuid-dev
sudo apt-get install openssl libssl-dev uuid-dev
- 把 Perfect 官方的示例 git 下來
git clone https://github.com/PerfectlySoft/PerfectTemplate.git
- 下載完,打開 PerfectTemplate 文件
cd PerfectTemplate
- 編譯
swift build
- 運行
.build/debug/PerfectTemplate
- 運行成功返回此類似信息
[INFO] Starting HTTP server localhost on 0.0.0.0:8181
swift build 過程可能會出現的問題
error while loading shared libraries: libcurl.so.4: cannot open shared object file: No such file or directory
sudo apt-get install libcurl4-openssl-devwarning: minimum recommended clang is version 3.6, otherwise you may encounter linker errors.
sudo apt-get install clang-3.6-
'EVP_aes_256_cbc_hmac_sha256'、 'EVP_aes_128_cbc_hmac_sha256' 、'EVP_aes_192_wrap'
Ubuntu14.04 openssl 1.0.1 需要升級至少1.0.2 (Ubuntu16.04 直接解決)
https://gist.github.com/mbejda/a1dabc45b32aaf8b25ae5e8d05923518
ln -s /usr/include/libmongoc-1.0/ libmongoc-1.0
或
ln -s /usr/include/libmongoc-1.0 /usr/local/include/libmongoc-1.0
- 有一些報錯可能是有些依賴在
swift build
時 clone 不是最新版本,我以下兩個依賴出現這樣的情況
.Package(url: "https://github.com/SwiftORM/MongoDB-Storm.git", majorVersion: 1),
.Package(url: "https://github.com/PerfectlySoft/Perfect-RequestLogger.git", majorVersion: 1),
更新依賴:
swift package update
swift build
- SPM命令包括:
swift package update 更新依賴關系
swift build 構建一個快速的包裝
swift build -c release 構建一個快速發布的代碼
swift package generate-xcodeproj 從Swift代碼創建或更新Xcode項目
swift package resolve 獲取所有的依賴關系
- 還有一些錯誤可能是有些依賴Swift版本不兼容問題(最好安裝Swift3.0版本)
快速安裝 Swift 與 Perfect
使用 Perfect StORM 的嵌套對象的示例(SQL數據庫之間關系)
尾巴
在 Ubuntu 部署遇到坑多,幾乎快要 “從入門到放棄”,最后無意在Slack 看到 Perfect-Ubuntu,心想再試一試,再不行就準備“從Vapor入門到。。”(Vapor部署成功,坑少),最后這Perfect-Ubuntu解決了數據庫的問題部署成功!
學習資料 :
Perfect 官網
Swift/Perfect部署到Ubuntu上
Perfect 網絡框架的應用 —— 基本方法、MySQL連接和Cpp代碼接入
基于Perfect的swift服務器開發
全棧Swifter:一、Perfect框架初識