安装

通过 ./setup-framework 脚本安装 Vanilla

./setup-framework 脚本是对 make install 后面安装方式一个自动化封装,仅需要指定 OpenResty 的安装路径,即可简单安装 Vanilla

  1. ./setup-framework -h
  2. Usage: ./setup-framework
  3. -h show this help info
  4. -v VANILLA_PROJ_ROOT, vanilla project root, will contain vanilla framework and apps
  5. -o OPENRESTY_ROOT, openresty install path(openresty root)

./setup-framework 脚本参数选项说明:

  • -v : 指定 Vanilla 项目的根目录,此选项默认为 /data/vanilla,默认则将 Vanilla 安装到 /data/vanilla/framework/0_1_0_rc5/vanilla/ 目录下。

  • -o : 指定 OpenResty 的安装目录, 此选项默认为 /usr/local/openresty, 如果你的 OpenResty 安装路径与此不同,则需要指定为正真的 OpenResty 安装目录。

安装目录结构如下:

  1. tree /data/vanilla -L 2
  2. /data/vanilla
  3. ├── framework
  4. ├── 0_1_0_rc5
  5. └── 0_1_0_rc5.old_2016_04_12_11_04_18 # 重复安装则会将之前的老版本按照时间自动备份

通过 make install 安装 Vanilla

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

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

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

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

  1. ./configure --prefix=/usr/local/vanilla --openresty-path=/usr/local/openresty
  2. make install (不需要make,直接make install

Vanilla 使用

Vanilla-V0.1.0-rc4.1 及其之前版本的配置和使用,请查阅README-zh-V0.1.0-rc4.1.md

Vanilla命令

Vanilla-V0.1.0-rc5 目前依旧提供两个命令, 但是 rc5 以后提供的命令与安装的框架代码一样,都自动携带版本号,vanilla-0.1.0.rc5,和 v-console-0.1.0.rc5 这样做的好处在于方便多版本共存以及 Vanilla 的无痛升级

  • vanilla-0.1.0.rc5用来初始化应用骨架,而 vanilla-0.1.0.rc5 之后,服务的停启不再通过 vanilla-0.1.0.rc5 命令管理,而是通过项目路径下面的 va-appname-service 脚本进行管理,使用细节见后面说明。
  • v-console-0.1.0.rc5 是一个交互式命令行,主要提供一种方便学习Lua入门的工具,可以使用一些 vanilla 开发环境下的包,比如table输出的 lprint_r 方法等。

创建应用

  1. vanilla-0.1.0.rc5 new app_full_path #使用 vanilla-0.1.0.rc5 命令 自动生成应用骨架,注意这里需要传递应用的全路径,而不只是一个APP_NAME
  2. chmod +x app_full_path/va-appname-service #给生成的项目骨架根目录下面的 va-appname-service 脚本添加执行权限
  3. app_full_path/va-appname-service initconf [dev] #初始化应用的nginx配置文件,此文件基于 app_full_path/nginx_conf 下面的配置文件生成,如果有特殊选项需要配置,可以先修改 app_full_path/nginx_conf 下面的配置文件,再进行 initconf 操作,[dev] 参数为可选项, 加上则表示执行开发环境相关操作,不加则默认为生产环境
  4. app_full_path/va-appname-service start [dev] #启动生成的服务,即可通过http://localhost访问服务,[dev] 参数如上。

上面创建应用的过程也可以通过脚本 ./setup-vanilal-demoapp 简单自动完成:

  1. ./setup-vanilal-demoapp -h
  2. Usage: ./setup-vanilal-demoapp -h show this help info
  3. -a VANILLA_APP_ROOT, app absolute path(which path to init app)
  4. -u VANILLA_APP_USER, user to run app
  5. -g VANILLA_APP_GROUP, user group to run app
  6. -e VANILLA_RUNNING_ENV, app running environment

./setup-vanilal-demoapp 脚本参数选项说明:

  • -a : 指定初始化应用的全路径(绝对路径),默认为 /data/vanilla/vademo
  • -u : 指定运行服务的用户名,默认为 idevz
  • -g : 指定运行服务的用户组,默认为 sina
  • -e : 指定运行服务的环境,默认为’’ 指生产环境

安装目录结构如下:

  1. tree /data/vanilla/ -L 1
  2. /data/vanilla/
  3. ├── framework # vanilla 框架安装目录
  4. ├── vademo # 应用初始化目录
  5. └── vademo.old_2016_04_12_11_04_26 # 重复安装后会将之前版本按照时间进行备份

应用配置初始化与服务管理

通过脚本 /data/vanilla/vademo/va-vademo-service 管理 vademo 服务

  1. /data/vanilla/vademo/va-vademo-service -h
  2. Usage: ./va-ok-service {start|stop|restart|reload|force-reload|confinit[-f]|configtest} [dev] #dev 指定了运行的环境,不加 dev 则默认为生产环境。

注意: 如果没有使用 ./setup-vanilal-demoapp 脚本,而是手动 new 的 app, 则在启动服务之前需要先运行 /data/vanilla/vademo/va-vademo-service initconf [dev] 对相应环境的 nginx 配置文件进行初始化。

工程化的vanilla-0.1.0.rc5

vanilla-0.1.0.rc5是vanilla-0.1.0.rc4在新浪移动全线推广过程中针对一些工程化部署问题改进版本,可以肯定的一点vanilla-0.1.0.rc4在功能、扩展性、使用方面表现良好,非常适合移动业务的场景,更不止于API,但是在集群部署、多App部署、Vanilla框架升级等方面vanilla-0.1.0.rc4存在短板,而vanilla-0.1.0.rc5极大程度的弥补了这些短板。

推荐始终使用最新版的Vanilla

当前Vanilla最新版本0.1.0.rc5,支持命令:

  • vanilla-0.1.0.rc5(你没看错,自0.1.0.rc5起,vanilla的命令行和框架代码都带着版本号,方便多版本共存,也方便框架升级
  • v-console-0.1.0.rc5

如何从vanilla-0.1.0.rc4到vanilla-0.1.0.rc5

升级步骤

1.安装最新的 vanilla-0.1.0.rc5

  1. $ wget https://github.com/idevz/vanilla/archive/v0.1.0-rc5.0.tar.gz
  2. $ tar zxf v0.1.0-rc5.0.tar.gz
  3. $ cd vanilla-0.1.0.rc5
  4. $ ./setup-framework -v $VANILLA_PROJ_ROOT -o $OPENRESTY_ROOT #$VANILLA_PROJ_ROOT 为给 Vanilla 指定的安装目录, $OPENRESTY_ROOT 是当前 OpenResty 的安装目录

2.基于新的 Vanilla(vanilla-0.1.0.rc5) 初始化新版的 vatest 项目:

  1. $ sudo vanilla-0.1.0.rc5 new $VANILLA_APP_ROOT #$VANILLA_APP_ROOT 为新版 vatest 项目全路径

3.将新项目中的以下目录及文件直接覆盖至老版 vatest 的相关位置:

  • pub/index.lua 文件($VANILLA_APP_ROOT/pub/index.lua)直接覆盖
  • va-vasina-service 脚本($VANILLA_APP_ROOT/va-vasina-service)直接复制,因为老版没有这个文件
    • 注意确认脚本中 $OPENRESTY_NGINX_ROOT 的路径
    • 注意确认脚本中 $VA_APP_PATH 的路径是否为项目的根路径
  • nginx_conf 目录($VANILLA_APP_ROOT/nginx_conf)直接复制,因为老版没有这个目录
  • application/bootstrap.lua 文件($VANILLA_APP_ROOT/application/bootstrap.lua)将老项目 bootstrap 中的相关 init* 方法拷贝到新的 bootstrap.lua 中,并用新的 bootstrap.lua 覆盖老版的 bootstrap.lua 文件
  • 修改 $VANILLA_APP_ROOT/nginx_conf 中的 nginx 配置文件, 确保其中各种目录正确
    • 确保 $VANILLAAPP_ROOT/nginx_conf/va-nginx{-development}.conf 文件中 lua_package{c}path 中, 全路径的 Vanilla 框架目录正确
    • 确保 $VANILLAAPP_ROOT/nginx_conf/{dev}vhost/vasina.conf 文件中 Server 段的 root 配置为项目根目录, require 方法中 local VANILLA_ROOT 为框架根路径

4.使用 $VANILLA_APP_ROOT/va-vasina-service 脚本管理服务:

  1. 给 $VANILLA_APP_ROOT/va-vasina-service 脚本添加可执行权限 chmod +x $VANILLA_APP_ROOT/va-vasina-service
  2. 初始化 nginx 配置 $VANILLA_APP_ROOT/va-vasina-service initconf [dev]
  3. 启动服务 $VANILLA_APP_ROOT/va-vasina-service start [dev]

注: 添加 dev 参数,则管理 development 环境的服务, 默认为 production 生产环境服务

社区组织

QQ群&&微信公众号

  • Openresty/Vanilla 开发 1 群:205773855
  • Openresty/Vanilla 开发 2 群:419191655
  • Openresty 技术交流 1 群:34782325
  • Openresty 技术交流 2 群:481213820
  • Openresty 技术交流 3 群:124613000
  • Vanilla开发微信公众号:Vanilla-OpenResty(Vanilla相关资讯、文档推送)

vanilla

QQ