Ambari Web 安装和踩坑
安装和启动过程
$ git clone https://git-wip-us.apache.org/repos/asf/ambari.git
$ cd ambari/ambari-web
$ sudo npm install -g brunch@1.7.20
$ rm -rf node_modules public
$ npm install
$ brunch build
启动前端服务:
$ brunch watch --server
安装中碰到的问题
用手机上网问题少,用公司网络上网问题多。手机上网只出现了phantomjs-prebuilt@2.1.15
安装失败。
1.phantomjs 安装失败
如果内网安装报错,可以用手机联网试试。用手机联网报过错:phantomjs-prebuilt@2.1.15
安装失败。直接手工装安装上面的包,再执行npm install
:
$ npm install phantomjs-prebuilt@2.1.15
$ npm install
npm relocation 错误
$ sudo npm install -g brunch@1.7.20
npm: relocation error: npm: symbol SSL_set_cert_cb, version libssl.so.10 not defined in file libssl.so.10 with link time reference
google 到 这个网页 的办法:
$ yum-config-manager --enable cr && yum update
这导致 yum 可以安装未正式发布的测试包。
之后虽然可以安装了,但很慢,创建一个使用淘宝 NPM 镜像的别名:
$ alias cnpm="npm --registry=https://registry.npm.taobao.org \
--cache=$HOME/.npm/.cache/cnpm \
--disturl=https://npm.taobao.org/dist \
--userconfig=$HOME/.cnpmrc"
$ sudo cnpm install -g brunch@1.7.20
3. phantomjs 错误的另一个办法
运行 cnpm install
时提示 phantomjs 没有在路径上,手工下载 phantomjs,并添加到PATH:
$ cd /opt
$ wget https://github.com/Medium/phantomjs/releases/download/v2.1.1/phantomjs-2.1.1-linux-x86_64.tar.bz2
$ tar -xjf phantomjs-2.1.1-linux-x86_64.tar.bz2
$ export PATH=$PATH:/opt/phantomjs-2.1.1-linux-x86_64/bin
4. 缺少 info.json
根据社区文章:https://community.hortonworks.com/questions/26377/how-can-i-build-hdp-for-source.html 从 github 上下载 HDP 的 ambari 源码包: https://github.com/hortonworks/ambari-release/archive/AMBARI-2.5.1.7-tag.zip
按 Ambari Web Frontend Development Environment 的办法进行构建,并启动:
$ brunch watch --server
登录 ambari UI 后报错:You are using test mode
,发现少了 info.json
文件。自己造一个:
$ cd app/assets/data/clusters
$ vi info.json
{
"items" : [
{
"Clusters" : {
"cluster_name" : "cc",
"provisioning_state" : "INSTALLED",
"version" : "HDP-2.4.3"
}
}
]
}
重新启动brunch watch --server
后问题解决!
api-docs
ambari 的 api 文档以 swagger.json 的方式提供。在 ambari-web 目录看到一个 api-docs 目录,这个目录是 swagger 显示引擎的目录。可以将 nginx 的根目录设置到这里。
$ nginx -t
nginx: the configuration file /usr/local/openresty/nginx/conf/nginx.conf syntax is ok
编辑上面的 nginx.conf 文件:
server {
listen 80;
server_name localhost;
location / {
root /opt/ambari/ambari-web/api-docs;
index index.html index.htm;
}
}
然后找到 ambari 的 swagger.json 文件:
$ find /opt/ambari -name swagger.json
/opt/ambari/ambari-server/docs/api/generated/swagger.json
$ cp /opt/ambari/ambari-server/docs/api/generated/swagger.json /opt/ambari/ambari-web/api-docs
$ nginx -t
$ nginx
$ curl localhost
假设这个 linux 虚拟机的 ip 是:192.168.73.102。则在 windows 下用浏览器访问地址 http://192.168.73.102
就可以用 swagger 阅读 ambari API 文档了。
Ember.js
Mustache
Mustache 是一个无逻辑模板语言。称无逻辑,因为它的定义中没有循环、判断等语法,只有标签。
官方只提供了RUBY实现,但大量爱好者提供了各种语言的实现。其 javascript 的实现 在github上有一万多颗星。
Mushtache 的语法在官网的 这个链接。
handlebars.js
handlebars.js是Mustache的超集,和javascript实现。
handlebars.js的增强部分:
- 内部路径,可以访问 json 串内部属性,如
{{author.name}}
- helpers。在 mustache 的体系下,可以在 json 串中嵌入代码(Lambda),把数据和代码放在一起有些怪。handerbars.js 以 helper 代替,helper 对代码的调用显式定义在模板中,格式类似
{fullName author}}
。fullName
就是一个helper。 - 块表达式(mustache称为
Section
)。增强了 mustache 的 section,使块也支持 helper。格式类似{{#fillName author}}
。
Ember Simple Auth Token
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论