Skip to content

INSTALL

oldmanpushcart@gmail.com edited this page Jan 26, 2023 · 4 revisions

BANNER

安装沙箱

环境要求

  1. JDK[6,11]
  2. Linux/UNIX/MacOS;暂不支持Windows,主要是一些脚本需要改造

本地安装

  1. 首先需要下载最新稳定版本

  2. 下载完成并解压之后,在sandbox目录下执行安装脚本./install-local.sh -p /Users/luanjia/pe,-p指定沙箱的安装目录。如若不指定,默认的安装目录是${HOME}/.opt

    cd sandbox
    ./install-local.sh
  3. 成功安装会有以下输出。安装指定安装目录之后,沙箱脚本的工作目录将为你所指定的安装目录。

    VERSION=1.2.0
    PATH=/Users/luanjia/pe/sandbox
    install sandbox successful.

启动沙箱

沙箱有两种启动方式:ATTACHAGENT

ATTACH方式启动

即插即用的启动模式,可以在不重启目标JVM的情况下完成沙箱的植入。原理和GREYS、BTrace类似,利用了JVM的Attach机制实现。

# 假设目标JVM进程号为'2343'
./sandbox.sh -p 2343

如果输出

                    NAMESPACE : default
                      VERSION : 1.2.0
                         MODE : ATTACH
                  SERVER_ADDR : 0.0.0.0
                  SERVER_PORT : 55756
               UNSAFE_SUPPORT : ENABLE
                 SANDBOX_HOME : /Users/luanjia/pe/sandbox
            SYSTEM_MODULE_LIB : /Users/luanjia/pe/sandbox/module
              USER_MODULE_LIB : ~/.sandbox-module;
          SYSTEM_PROVIDER_LIB : /Users/luanjia/pe/sandbox/provider
           EVENT_POOL_SUPPORT : DISABLE

则说明启动成功,沙箱已经顺利植入了目标JVM中,并完打开了HTTP端口55756,完成系统模块sandbox-mgr-module.jar 的加载。

AGENT方式启动

有些时候我们需要沙箱工作在应用代码加载之前,或者一次性渲染大量的类、加载大量的模块,此时如果用ATTACH方式加载,可能会引起目标JVM的卡顿或停顿(GC),这就需要启用到AGENT的启动方式。

假设SANDBOX被安装在了/Users/luanjia/pe/sandbox,需要在JVM启动参数中增加上

-javaagent:/Users/luanjia/pe/sandbox/lib/sandbox-agent.jar

这样沙箱将会伴随着JVM启动而主动启动并加载对应的沙箱模块。

LOGO

JVM沙箱偏向于底层产品,受众面比较窄,问题反馈沟通很可能会因为各种原因造成不及时。所以我们建立了一个钉钉小群,方便大家在这里进行沟通。

Clone this wiki locally