image.png
引言
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
image.png
- 导入 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
wget https://swift.org/builds/swift-3.0.2-release/ubuntu1604/swift-3.0.2-RELEASE/swift-3.0.2-RELEASE-ubuntu16.04.tar.gz
- 解压
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-dev
- warning: 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
- 使用MongoDB数据库 error: header '/usr/local/include/libmongoc-1.0/mongoc.h' not found header "/usr/local/include/libmongoc-1.0/mongoc.h
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版本)
image.png
image.png
快速安装 Swift 与 Perfect
https://github.com/PerfectlySoft/Perfect-Ubuntu
使用 Perfect StORM 的嵌套对象的示例(SQL数据库之间关系)
https://github.com/iamjono/NestedObjectsExample
尾巴
在 Ubuntu 部署遇到坑多,几乎快要 “从入门到放弃”,最后无意在Slack 看到 Perfect-Ubuntu,心想再试一试,再不行就准备“从Vapor入门到。。”(Vapor部署成功,坑少),最后这Perfect-Ubuntu解决了数据库的问题部署成功!
学习资料 : Perfect 官网 Swift/Perfect部署到Ubuntu上 Perfect 网络框架的应用 —— 基本方法、MySQL连接和Cpp代码接入 基于Perfect的swift服务器开发 全栈Swifter:一、Perfect框架初识