Vanilla 高性能 Web 应用开发框架

开源网站开源项目 24-04-04 17:30:52

香草/Vanilla

香草/Vanilla是一个基于Openresty实现的高性能Web应用开发框架.

Vanilla

邮件列表

vanilla-en vanilla-en@googlegroups.com

vanilla-devel vanilla-devel@googlegroups.com

vanilla中文邮件列表 vanilla@googlegroups.com

安装

目前Vanilla支持两种安装方式

Make(推荐使用此种)

Luarocks

make install安装须知

Vanilla 支持的选项都提供了默认值,如果你的环境与默认值不一样,请configure时指定成你自己的。

特别注意选项--openresty-path,默认为/usr/local/openresty,请确保设置正确。

可以在源码目录下执行configure --help来查看安装选项的使用方法。

下面是一个简单的安装示例:

./configure--prefix=/usr/local/vanilla--openresty-path=/usr/local/openrestymakeinstall(如果没有C模块【目前支持lua-filesystem】,则不需要make,直接makeinstall)

luarocks install安装须知

可以使用luarocks安装vanilla,但是下面三点请注意 1. Luarocks应该基于lua5.1.x的版本安装,因为其他版本Lua和Luajit的ABI存在兼容性问题。 2. Luarocks安装的Vanilla在nginx.conf文件的NGX_PATH变量不可用。 3. 请确保nginx命令可以直接运行(nginx命令在你的环境变量中)

Vanilla 使用Vanilla命令

Vanilla 目前提供了两个命令vanilla,和vanilla-console

vanilla用来初始化应用骨架,停启服务(添加--trace参数可以看到执行的命令)

vanilla-console是一个交互式命令行,主要提供一种方便学习Lua入门的工具,可以使用一些vanilla开发环境下的包,比如table输出的lprint_r方法。

命令行执行vanilla就能清晰看到vanilla命令提供的选项。

vanillaVanillav0.1.0-rc3,AMVCwebframeworkforLuapoweredbyOpenResty.Usage:vanillaCOMMAND[ARGS][OPTIONS]Theavailablevanillacommandsare:new[name]CreateanewVanillaapplicationstartStartstheVanillaserverstopStopstheVanillaserverOptions:--traceShowsadditionallogs

创建应用

vanillanewapp_namecdapp_namevanillastart[--trace]--默认运行在development环境##在linux的bash环境下:VA_ENV=productionvanillastart[--trace]--运行在生产环境##在BSD等tcsh环境下:setenvVA_ENVproduction;vanillastart[--trace]--运行在生产环境

代码目录结构

/Users/zj-git/app_name/tree././├──application(应用代码主体目录)│├──bootstrap.lua(应用初始化/可选<以下未标可选为必选>)│├──controllers(应用业务代码主体目录)││├──error.lua(应用业务错误处理,处理本路径下相应业务报错)││└──index.lua(helloworld示例)│├──library(应用本地类包)│├──models(应用数据处理类)││├──dao(数据层业务处理)│││└──table.lua││└──service(服务化业务处理,对DAO的再次封装)││└──user.lua│├──nginx(*Openresty所封装Nginx请求处理各Phase)││└──init.lua(*init_by_lua示例)│├──plugins(插件目录)│└──views(视图层,与controllers一一对应)│├──error(错误模板)││└──error.html│└──index(indexcontroller模板)│└──index.html├──config(应用配置目录)│├──application.lua(应用基础配置/路由器、初始化等设置)│├──errors.lua(应用错误信息配置)│├──nginx.conf(nginx配置文件模板)│├──nginx.lua(服务各种运行环境配置/是否开启lua_code_cache等)│├──waf-regs(应用防火墙规则配置目录)││├──args││├──cookie││├──post││├──url││├──user-agent││└──whiteurl│└──waf.lua(服务防火墙配置)├──logs(日志目录)│└──hack(攻击日志目录/保持可写权限)├──pub(应用Nginx配置根路径)└──index.lua(应用请求入口)

业务代码示例 IndexController

localIndexController={}functionIndexController:index()localview=self:getView()localp={}p['vanilla']='WelcomeToVanilla...'p['zhoujing']='PowerbyOpenresty'view:assign(p)returnview:display()endreturnIndexController

模板示例 views/index/index.html

<!DOCTYPEhtml><html><body><imgsrc="http://m1.sinaimg.cn/maxwidth.300/m1.sinaimg.cn/120d7329960e19cf073f264751e8d959_2043_2241.png"><h1><ahref='https://github.com/idevz/vanilla'>{{vanilla}}</a></h1><h5>{{zhoujing}}</h5></body></html>

为什么需要Vanilla

回答这个问题,我们只需要看清楚Openresty和Vanilla各自做了什么即可。

Openresty

提供了处理HTTP请求的全套整体解决方案

给Nginx模块开发开辟了一条全新的道路,我们可以使用Lua来处理Web请求

形成了一个日趋完善的生态,这个生态涵盖了高性能Web服务方方面面

Vanilla

使复杂的Nginx配置对Web业务开发者更透明化

开发者不再需要了解Openresty的实现细节,而更关注业务本身

实现了Web开发常规的调试,错误处理,异常捕获

实现了请求的完整处理流程和插件机制,支持路由协议、模板引擎的配置化

整合、封装了一系列Web开发常用的工具集、类库(cookie、应用防火墙等)

实现了自动化、配置化的Nginx指令集管理

更合理的利用Openresty封装的8个处理请求Phase

支持不同运行环境(开发、测试、上线)服务的自动化配置和运行管理

功能使用方便易于扩展

基于Openresty开发,具备Openresty一切优良特性

[Vanilla 高性能 Web 应用开发框架]相关推荐
深度翻译

深度翻译

简介深度翻译(英文名:Deepin Translator)是deepin 团队为开发的一款强大的翻译软件。深度翻译提供数十种……...

SHOGUN 机器学习工具箱

SHOGUN 机器学习工具箱

SHOGUN是一个机器学习工具箱,其重点是在大尺度上的内核的方法,特别是支持向量机(SVM)的学习工具箱。……...

Syslinux 启动装载器

Syslinux 启动装载器

syslinux是一个轻量级的启动装载器,只用Windows的人可能不明白是什么东西,如果玩过Linux,一定知道lilo……...

Dinner 订餐系统

Dinner 订餐系统

Dinner 是一款挺适合公司内部使用的订餐系统,之前开发这个订餐系统。主要是商家,菜单,订餐,会员等等……...

今日开源
  1. Giraffe 编码动画 GIF 文件

    Giraffe 是 iPhone 的编码动画 GIF 文件,使用的 GIF 编码库是 ANGif(UIImagePixelSource.m 和 ExportViewController.m 文件 ) ANGif 示例 ANGifEncoder*encoder=[[ANGifEncoderalloc]initWithOutputFile:@"myFi……

    开源软件 2024-05-10

  2. stomp 消息传输框架

    Stomp 提供了客户端和代理之间进行广泛消息传输的框架。Stomp 是一个非常简单而且易用的通讯协议实现,尽管代理端的编写可能非常复杂,但是编写一个 Stomp 客户端却是很简单的事情,另外你可以使用 Telnet 来与你……

    开源软件 2024-05-10

  3. Rubicon Python 与其他语言交互

    Rubicon 是连接 Python 和其他编程语言的工具集合。 Rubicon 库现在支持: Objective C Java Objective C Rubicon-ObjC 是 Python 和 Objective-C 的桥梁,支持 iOS 和 OS X,允许你: 使用 Python 来实例化 Ob……

    开源软件 2024-05-10

返回顶部小火箭