qt sqlite mac 编译配置_Vapor4 的安装与配置

dd67cd787549cf335762a8e7d7a40a7a.png
本文介绍了如何在mac 10.5.4和ubuntu 18.04下安装Vapor命令行工具,创建Vapor项目,简单的调试项目以及如何部署到生产环境的过程。文中的运行环境为: Vapor4,Swift5.2,Catalina 10.5.4,Ubuntu18.04
原文发表在我的博客Swift记事簿

最近新开通了一个云服务器(Linux系统),使用Hexo创建了新的博客网页。考虑增加点简单的交互功能,所以需要在服务器端添加逻辑处理能力。由于近半年来基本上都是在使用Swift,所以打算尝试一下Server Side Swift。没有太仔细选择各种框架,看过几个介绍Vapor使用的视频后,感觉不错,便开始尝试安装配置。

Vapor的官方文档实在是有很大的问题,网上的不少心得、教程又有点陈旧(目前版本调整较大)。通过两天的折腾,终于基本上理出了脉络,初步搭建了开发和生产环境。

什么是Vapor

Vapor是一个使用swift语言编写的Web网络框架,它是跨平台的(mac、Linux),用户可以使用swift语言以及其丰富的第三方库来高效的完成多种网络服务。

import 

上面的代码变可以完成一个最基本的网络服务。访问 http://localhost:8080/hello 网页返回 hello, world.

你可以在mac或Linux平台上开发,同时也可以将通过Vapor框架开发的项目部署到mac或Linux平台上。

什么是Vaper 命令行工具

Vaper命令行工具的作用有:

  • 基于模板创建Vaper项目
  • 配置、编译、运行项目
  • 其他配合操作系统的一些功能

但它不是必须的,如果用户已经很熟悉Vapor的开发和配置,无论是在开发环境还是运行环境都可以不使用这个命令行工具。不过对于像我这样的新手来说,无疑它是一个好的帮手。

开发Vaper项目需要的资源

  • mac 或 Linux ,我目前在Catalina 10.5.4 和 Ubuntu 18.04下都成功完成了配置
  • swift语言环境,目前Vapor4可以在swift5.2下运行
  • web服务器,我目前使用Nginx (如果只是用于开发测试,也可以不配置)

安装swift

Mac:

在mac平台下,安装Xcode及Xcode ommand Line Tools,Vapor4对xcode提供了非常友好的支持,可以像其他的swift项目一样使用全部的Xcode的各种能力(比如断点调试)。

Ubuntu 18.04:

#从swift.org找到需要的文件

wget https://swift.org/builds/swift-5.2.3-release/ubuntu1804/swift-5.2.3-RELEASE/swift-5.2.3-RELEASE-ubuntu18.04.tar.gz

tar xzvf swift-5.2.3-RELEASE-ubuntu18.04.tar.gz
sudo mv swift-5.2.3-RELEASE-ubuntu18.04 /usr/share/swift

我也使用过Docker安装Swift5.2,不过Image有点太大,需要1.2Gb左右的空间。

#Docker安装Swift的方法。
docker pull swift

安装Vapor命令行工具

Mac:

brew tap vapor/tap
brew install vapor
#我目前安装的是 vapor-beta
#brew install vapor-beta
#执行vapor测试一下
vapor

Ubuntu 18.04:

Ubuntu下安装Vapor toolbox略微麻烦,主要是目前的Vapor Toolbox源文件有点问题需要做一些修改才能正常编译。

首先保证已成功安装 swift

cd ~
git clone https://github.com/vapor/toolbox.git

在 Test 目录下 创建一个 LinuxMain.swift 文件

import 

这个是Swift SPM需要的文件,上面我只写了个最简单的能够完成编译即可,不清楚为什么官方的git源不包含这个文件。

修改 Source/VaporToolbox/exec.swift 文件

在36行左右(当前版本)找到

let 

修改成

guard 

同样不清楚为什么代码会有这么一个错误。

完成上述修改后

cd ~/toolbox
swift build -c release --disable-sandbox
sudo mv .build/release/vapor /usr/local/bin

至此Vapor Toolbox 安装完毕。

Toolbox的目录中包含了Dockerfile,使用它可以直接将toolbox生成一个Docker Image,并且系统会自动下载swift的Docker Image。不过我在Ubuntu上使用这种方法安装后(已配置entrypoint),vapor的Image没有名字,只有container id,但是可以通过id来运行。个人目前不推荐这种方式。

使用 Vapor命令行工具

创建项目

#vapor new <projectname> [--template]
vapor new hello

使用缺省模板创建一个名为 hello 的Vapor项目。

创建的过程其实就是从github上clone一个模板,并可帮你进行简单配置。如果已经比较熟悉的话也可以不适用工具,直接从github上克隆模板开始项目。

在Mac系统下,模板可以直接编译运行,不过Linux下,git源仍然缺少 LinuxMain.swift 文件,按照上面的方法,在项目中加入该文件后方可编译。

clone完成后,系统会有如下提示:

#我选择了 sqllite

系统会根据你的选择直接在模板中创建好相应的代码。(Fluent 是一个swift写的ORM)

编译项目

cd ~/hello
vapor build

我在ubuntu下执行vapor new可以正常执行,不过vapor build执行报错。因此就直接使用 swift build 来编译项目。其实buildrun 都是直接调用的 swift 命令。

运行项目

#系统显示,说明项目已正常启动。可以通过 http://127.0.0.1:8080 访问
Environment

可以在运行命令后面添加运行状态,对于部署尤为重要。

# test prod dev 对应不同的状态,主要关系到是否显示操作日志等

如果是Mac系统,使用

vapor xcode

直接打开Xcode,然后就可以直接在Xcode下编辑、编译、调试、运行。

即使没有安装Vapor Toolbox也可以使用如下命令创建Xcode项目

swift package generate-xcodeproj

按照上述的步骤安装后,无论在Mac上还是Ubuntu上我们都可以开始编写并运行自己的Vapor项目了。

模板项目简单分析

本节我们通过对模板代码的简单分析来快速感受一下Vapor的便捷。

我使用的是项目缺省模板,启用Fluent,数据库选择的是sqlite。

项目源文件存在Sources目录下。

46b1bbf07e9a38fa4875da63fc77da6c.png

main.swift作为程序的入口,创建了Vapor服务

configure.swift中由于我们选择了使用sqlite,因此系统为我们自动生成了使用数据库所需的代码。下列代码完成数据库的创建工作。

app

为了能够完整的运行这个模板项目,我们需要在命令行执行

vapor run migrate

系统将在项目根目录下完成db.sqlite里的表创建工作。如果没有执行这个步骤,访问http://localhost:8080/todos将在得到如下的错误提示。

[ ERROR 

Xcode的用户也可以直接在Scheme中的Arguments添加 --auto-migrate 完成上述功能。

另外,最好在Xcode中将Scheme -- Run -- Working Directory设置成当前项目的根目录,这样无论使用命令行,还是直接使用Xcode都可以使用同一个Sqlite文件。

//app.middleware.use(FileMiddleware(publicDirectory: app.directory.publicDirectory))

如果取消这一句的注释,Vapor将提供对静态文件的支持。我们可以把静态文件放入项目根目录的 Public目录中,即可访问。 127.0.0.1:8080/index.html 。如果和其他WebServer配合使用的话,我感觉还是用如Nginx来提供静态文件的支持比较好。

routes.swift**作为项目的核心,在其中完成网络的路由逻辑设定。

import 

更具体的应用就不展开了。不过仅从模板例程上我们便可以感觉到Vapor的便利和高效。

和Nginx 配合使用

通过编辑nginx的配置文件,我们的Vapor项目便可以对外发布了。

server 

现在你就可以通过 http://你的域名或地址/todos 来访问你的项目。

我使用Vapor的目的是为了配合自己的博客,所以仍需配合我自己原有的页面使用,所以采用了如下的配置。

即使打开了Vapor的静态页面支持,如果我把Vapor项目配置在/的话(已取消Vapor对根的响应),仍然需要明确的输入 http://我的域名/index.html才能访问到索引页面。没有办法才把他转到 /api/下。

server 

如此配置后,需要对代码 routes.swift 进行改动后即可正常访问。

app

如果谁知道如何设置能够直接将/转发到Vapor而又可以 直接使用 http://我的域名 来访问原有的页面烦请告知一下。

部署

修改运行端口

Vapor4对于指定运行端口和之前有了较大的区别。

在main.swift中做如下修改

app

目前我没有找到如何在命令行下设置运行端口(Vapor3之前的方法好像已经不支持了)。如果有人了解烦请告知一下。

手动部署

由于我目前也还刚刚开始接触Vapor,为了调试方便,我在本机的Xcode下进行开发。通过github作为中转,将本地的修改commit到repository上。手动在服务器端fetch并执行。在终端中执行的话当前终端将被任务锁定。

Docker部署

另外,Vapor的模板本身已经生成了Dockerfile。也可以直接将完成后的项目生成Docker Image。这种方式可以将项目发布到任何支持Docker的平台(mac、Linux、windows等)。不过通常只适用于已经开发完善后的部署。更多细节可查阅官方文档

Supervisior

Vapor Toolbox 已提供了对 Supervisior 的支持,可以很方便的通过supervisor来管理服务。

ubuntu下安装Supervisor

sudo apt-get update
sudo apt-get install supervisor

我们需要为每一个项目创建一个supervisor配置文件。创建/etc/supervisor/conf.d/hello.conf

[program:hello

文件名是你的项目名.conf,目录指向你项目的根目录并设置好用户名

command

需确定已将项目编译成release版本,如果vapor build不好用,可以使用如下命令

cd ~/hello
swift build -c release

通过supervisor管理项目

supervisorctl reread
supervisorctl add hello
supervisorctl start hello

也可以通过supervisor的配置来指定运行端口

在/etc/supervisor/conf.d/hello.conf中加入

environment

修改 main.swift

let 

结语

希望本文能够对你开始使用Vapor4带来一点帮助。同时也希望swift能在更多的平台上有所表现。

swift已有更多的官方对window支持的迹象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值