引言
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框架初识