Project Perfect让Swift在服务器端跑起来-在Linux上创建你的Perfect项目(三)
2016-02-24 22:41
579 查看
编者语: 对于一个新事物,如果你花点心机还是有很多收获的。
前两篇,分别讲述了入门和在Linux下部署,现在得说说如何在Linux下开发了。在Linux下开发,相对比在Mac下开发更灵活。
我们先来看看构建基于Perfect的网站服务的编译方式
如图通过引用基础库PerfectLib和数据链接,中间件模块创建你的网页文件,并用makefile打包生成你的网站动态库。所以如果你只是在Linux下构建项目,你只需要先创建好你的Handlers.swift即可。对比起在Xcode通过模版或者Framework的方式简洁不少。这里大家会想能否用Swift Package Manager引用PerfectLib的方式对Handlers.swift进行编译?现阶段是不可以的,由于Perfect是用动态库的方式打包PerfectLib而Package
Manager不支持动态库的引用,所以如果你想整合Package Manager直接编译你的Handlers.swift是不可以的。(你只能寄望苹果尽快支持)。现在你只能用makefile动态编译。
根据上面的方式我们开始在Linux下创建我们的Perfect项目。
1. 关于创建的路径,个人建议放在Github下载的Perfect目录下,因为你需要引用对应的基础库,比较容易管理和调用。这里我在Perfect文件夹创建了一个Demo文件夹,作为新项目的目录。
2. 在Demo文件夹下创建一个PerfectHandlers.swift 和 makefile。建议大家使用IDE进行编辑,这里我建议使用Visual Studio Code,虽然是微软的产品,但是胜在对swift支持较好,对比起atom更稳定。
看看我们的PerfectHandlers.swift,和前面说的一样,代码如下:
import PerfectLib
public func PerfectServerModuleInit() {
Routing.Handler.registerGlobally();
Routing.Routes["GET", ["/", "index.html"] ] = { (_:WebResponse) in return IndexHandler() }
}
class IndexHandler: RequestHandler {
func handleRequest(request: WebRequest, response: WebResponse) {
response.appendBodyString("hello swift")
response.requestCompletedCallback()
}
} 而makefile就是我们把Demo编译成动态库的关键文件了,先看看代码:
a. TARGET是编译目标和你的项目名保持一致, 这里就是TARGET = Demo
b. DEMO_SRC 这个是需要把你的所有swift文件包含进去,因为要一起打包到静态库内,你可以参考Examples/Authenticator内的makefile
3. 在终端,编译即可,执行sudo make编译成功如下图
4. 把生成的Demo.so迁移到Perfect/var/www/PerfectLibraries中(改目录的创建和使用请参考 http://blog.csdn.net/kinfey/article/details/50664353)
5. 执行sudo ./perfectServerHttp.sh start 即可
在Linux下创建Perfect项目,让Perfect项目的维护和升级更有保障了,而且比在Xcode下创建项目更加简单直接,建议大家上手使用。
前两篇,分别讲述了入门和在Linux下部署,现在得说说如何在Linux下开发了。在Linux下开发,相对比在Mac下开发更灵活。
我们先来看看构建基于Perfect的网站服务的编译方式
如图通过引用基础库PerfectLib和数据链接,中间件模块创建你的网页文件,并用makefile打包生成你的网站动态库。所以如果你只是在Linux下构建项目,你只需要先创建好你的Handlers.swift即可。对比起在Xcode通过模版或者Framework的方式简洁不少。这里大家会想能否用Swift Package Manager引用PerfectLib的方式对Handlers.swift进行编译?现阶段是不可以的,由于Perfect是用动态库的方式打包PerfectLib而Package
Manager不支持动态库的引用,所以如果你想整合Package Manager直接编译你的Handlers.swift是不可以的。(你只能寄望苹果尽快支持)。现在你只能用makefile动态编译。
根据上面的方式我们开始在Linux下创建我们的Perfect项目。
1. 关于创建的路径,个人建议放在Github下载的Perfect目录下,因为你需要引用对应的基础库,比较容易管理和调用。这里我在Perfect文件夹创建了一个Demo文件夹,作为新项目的目录。
2. 在Demo文件夹下创建一个PerfectHandlers.swift 和 makefile。建议大家使用IDE进行编辑,这里我建议使用Visual Studio Code,虽然是微软的产品,但是胜在对swift支持较好,对比起atom更稳定。
看看我们的PerfectHandlers.swift,和前面说的一样,代码如下:
import PerfectLib
public func PerfectServerModuleInit() {
Routing.Handler.registerGlobally();
Routing.Routes["GET", ["/", "index.html"] ] = { (_:WebResponse) in return IndexHandler() }
}
class IndexHandler: RequestHandler {
func handleRequest(request: WebRequest, response: WebResponse) {
response.appendBodyString("hello swift")
response.requestCompletedCallback()
}
} 而makefile就是我们把Demo编译成动态库的关键文件了,先看看代码:
# Makefile for Perfect Server TARGET = Demo OS = $(shell uname) DEMO_SRC = "PerfectHandlers.swift" PERFECT_ROOT = ../PerfectLib SWIFTC = swift SWIFTC_FLAGS = -frontend -c -module-cache-path $(MODULE_CACHE_PATH) -emit-module -I /usr/local/lib -I $(PERFECT_ROOT)/linked/LibEvent \ -I $(PERFECT_ROOT)/linked/OpenSSL_Linux -I $(PERFECT_ROOT)/linked/ICU -I $(PERFECT_ROOT)/linked/SQLite3 -I $(PERFECT_ROOT)/linked/LinuxBridge MODULE_CACHE_PATH = /tmp/modulecache Linux_SHLIB_PATH = $(shell dirname $(shell dirname $(shell which swiftc)))/lib/swift/linux SHLIB_PATH = -L$($(OS)_SHLIB_PATH) LFLAGS = $(SHLIB_PATH) -lFoundation -lswiftCore -lswiftGlibc /usr/local/lib/PerfectLib.so -Xlinker -rpath -Xlinker $($(OS)_SHLIB_PATH) -shared all: $(TARGET) modulecache: @mkdir -p $(MODULE_CACHE_PATH) $(TARGET): modulecache $(SWIFTC) $(SWIFTC_FLAGS) $(DEMO_SRC) -o $@.o -module-name $@ -emit-module-path $@.swiftmodule clang++ $(LFLAGS) $@.o -o $@.so clean: @rm *.omakefile 这里有几个关键的地方需要注意,
a. TARGET是编译目标和你的项目名保持一致, 这里就是TARGET = Demo
b. DEMO_SRC 这个是需要把你的所有swift文件包含进去,因为要一起打包到静态库内,你可以参考Examples/Authenticator内的makefile
3. 在终端,编译即可,执行sudo make编译成功如下图
4. 把生成的Demo.so迁移到Perfect/var/www/PerfectLibraries中(改目录的创建和使用请参考 http://blog.csdn.net/kinfey/article/details/50664353)
5. 执行sudo ./perfectServerHttp.sh start 即可
在Linux下创建Perfect项目,让Perfect项目的维护和升级更有保障了,而且比在Xcode下创建项目更加简单直接,建议大家上手使用。
相关文章推荐
- centos 6 编译安装php-5.4/5.5(lamp模式)
- Linux内核分析 实验一 ——by王玥
- “Linux内核分析”实验报告一
- 《linux内核分析》第一周(2.22~2.28)
- Java开发必会的Linux命令
- linux h264相关
- CentOS6.5下RabbitMQ安装
- Linux中的Buffer 与 Cache
- Linux下忘记密码的前提下进入MySQL数据库
- 制作initrd(6):重做Ubuntu安装盘
- Linux系统硬件信息的查看
- LINUX 系统优化
- Linux 用户与组的概念
- 学习linux计划书
- 学习linux计划书
- Linux.BackDoor.Linux.Gafgyt.A Attack And Defense Analysis
- Linux 下IOport编程訪问
- 笔记: linux常用命令(二) ln命令
- linux驱动开发—基于Device tree机制的驱动编写
- SELinux开启与关闭各参数说明!!!!