通过网盘分享的文件:SmartBi-8.5环境.zip 链接: https://pan.baidu.com/s/1bFYYEI9-g84IeLG_HoZlxA提取码: hqb4
用户名和公司名称随意
更改安装目录
此处,不要选择“安装演示库”,否则会报“报表数量超过限制”的错误
不选择“注册为Windows服务”,内存大小默认即可
登录首页的密码
官网地址:https://www.smartbi.com.cn/
license申请地址:https://my.smartbi.com.cn/index/index/customerindex/form_id/3.html
这里第一次进入需要注册\登录:
之后便可以申请了,邮箱要填正确,之后会将 license 发到邮箱里
选择个人版
之后在邮箱里可以看到发的:Smartbi-License.xml
获取 licence 后,将其放置在 E:\Smartbi\Tomcat\bin 文件夹 下
首先连接 Smartbi :
(我搭建的时候,经常连接不上数据库,可以试试重启电脑)
创建 Smartbi 数据库:
第一步连接好之后,是没有 smartbi 数据库的,需要自己创建(特别强调)
下面是 MySQL 的配置: database-name 在选择安装“演示数据库”时是: smartbidemo ;咋们没有选择,所以默认是: smartbi
E:\Smartbi\Tomcat\bin\smartbi-config.xml
这一步可以看下面问题中的1、
E:\Smartbi\Tomcat\bin\startup.cmd
运行 startup.cmd ,启动服务器
系统开始菜单中找到 Smartbi 的安装目录,单击启动Smartbi服务
没有报错的话,就是启动成功了, 若到这一步服务启动有错,重启电脑!!!
访问Smartbi:
首次访问,需输入密码,这里的密码随意,我的是 admin
接下来的配置按照图中所示即可:
重启服务后,再次点击 访问Smartbi ,会进入下方页面:
http://localhost:18080/smartbi/vision/index.jsp
首次访问登录页:
此处的旧密码是 manager ,之后自行修改一个新密码:
这是之后访问登录页:登录系统:
至此,Smartbi v8.5 环境搭建完成。
(按照上述方法安装后应该 不会有下列问题):
参考:https://www.xiaoheiwoo.com/windows-11-internet-explorer/
方法一:
从“管理加载项”窗口打开 Internet Explorer
IE中是可以通过 Internet属性 窗口,对浏览器进行功能设置的。
虽然 Win11默认找不到 IE的入口,但是 Internet属性 程序依然可以正常运行,我们可以点击其中的 管 理加载项 功能,打开 IE 浏览器。
步骤:
1.首先,按 Win + R 打开运行窗口
2.接下来,在运行命令框中输入 inetcpl.cpl
3.单击 确定 进入 Internet 属性窗口
4.选择 程序 选项卡,点击 管理加载项 按钮\
5.然后,点击窗口底部 了解有关工具栏和扩展的详细信息
6.出现ie
方法二:注释掉判断语句
进入 E:\Smartbi\Tomcat\webapps\smartbi\vision
找到文件 config.jsp
将判断部分注释掉
报这个问题是由于安装时选择了安装 演示数据库 ,不安装即可。
问题:
如图,知识库连接成功,license上传成功。重启后访问 http://localhost:18080/smartbi仍然跳转到配 置页面 http://localhost:18080/smartbi/vision/config.jsp。
配置完成后再次登录,显示服务启动不成功:
数据库正常连接:
正常访问跳转的页面:
http://localhost:18080/smartbi/vision/index.jsp
http://localhost:18080/smartbi/vision
http://localhost:18080/smartbi
都会重定向到 http://localhost:18080/smartbi/vision/config.jsp
修改:
//var chromeVer = ua.substr(chrome + 7,2);
->
var match = ua.match(/chrome\/(\d+)/i);
var chromeVer = match ? parseInt(match[1]) : 0;
能正确识别浏览器版本,但没什么用
可访问不跳转的页面:
http://localhost:18080/smartbi/vision/license.jsp
http://localhost:18080/smartbi/vision/login.jsp
但是会报错: 找不到是什么错误 导出日志会失败
SmartBI 是广州思迈特软件有限公司旗下的商业智能 BI 和数据分析品牌,是一款企业级大数据分析软件,能快速挖掘企业数据价值。集合数据可视化,探索性分析,自助式仪表盘以及一站式 ABI 平台,智慧数据运营平台,电子表格软件等等
版本:SmartBi V8.5 JDK 8
传参方式(直接传输,RMIServlet加密)
RMIServlet加密、
先抓包,抓到的get,放行之后会出现post(smartbi程调用入口,是SmartBI 用自己的协议封装 HTTP 请求,把请求体加密后发给 RMIServlet)
POST /smartbi/vision/RMIServlet HTTP/1.1
Host: 192.168.1.8:18080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:136.0) Gecko/20100101 Firefox/136.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
If-Modified-Since: 0
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
Content-Length: 69
Origin: http://192.168.1.8:18080
Connection: keep-alive
Referer: http://192.168.1.8:18080/smartbi/vision/index.jsp
Cookie: JSESSIONID=FA004C807237DA15E8841C4E8D2C02BF
Priority: u=0
encode=zDp4Wp4gRip+iIpiGZp4DRw6+/JV/uuu71'f11fuu/u7uu/NOuu/NO1m/uu/JT
追踪,RMIServlet加密的解密流程在 TraceFilter 的 doFilter ⽅法
(用 F12→ Network → 点击这个 RMIServlet 请求 → 在 Initiator或 调用栈里看哪个 JS 文件生成了encode
)
Smartbi\Tomcat\bin\exts-smartbi\smartbiExtension4478727347500549277.tmp\META-INF\classes\smartbix\smartbi\filter\SmartbiXTraceFilter.class
public class SmartbiXTraceFilter extends TraceFilter {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
boolean hasStartup = false;
if (FreeQueryModule.getInstance() != null && FreeQueryModule.getInstance().getFramework() != null) {
hasStartup = FreeQueryModule.getInstance().getFramework().isServerStartupSucceed();
}
if (request instanceof HttpServletRequest && response instanceof HttpServletResponse && hasStartup) {
if (SessionLogService.getInstance().getMlogs().size() == 0 && SessionLogService.getInstance().getUlogs().size() == 0) {
chain.doFilter(request, response);
} else {
boolean need2Log = true;
HttpServletRequest httpRequest = (HttpServletRequest)request;
httpRequest.setCharacterEncoding("UTF-8");
HttpSession session = httpRequest.getSession(false);
if (session == null) {
need2Log