总体思路:对ambari-web、ambari-admin进行单独编译,利用brunch watch功能,对文件源码进行实时监控编译。ambari-web/public 里存放编译完成的文件,(这里的文件目录与部署ambari后 /usr/lib/ambari-server/web 里的相同),对/usr/lib/ambari-server/web 建立软链接到public,就能实现 开发-编译-web可视化 的功能。
1. 本地访问samba共享目录里的源码进行二次开发
2. 访问虚拟机地址:8080 查看效果
3. 刷新页面
配置虚拟机
- 开启以太网连接
- 点击配置,IPv4设置,方法:手动;Add:填写信息:点击编辑–>虚拟网络编辑器–>点击第二栏–>NAT设置–>子网IP,前三位保持一致,最后一位自己取,子网掩码和网关都有了。DNS搜索器和网关一致。
- 禁用KDUMP
点击安装,并点击左上角设置一下用户密码。
说明:这里需要复制ambari源码文件、ambari部署文件以及一些配置环境中用到的软件包
1. 利用xshell连接虚拟机
文件——新建——输入主机地址——确定——用户名——密码——成功连接
2. 打开 新建文件传输
3. 访问/opt目录,将相关文件复制到虚拟机
ambari源码文件:apache-ambari-2.4.1-src
ambari部署文件:deployer-inspur
maven软件包:apache-maven-3.0.5-bin.tar.gz
4. 解压文件
tar zxvf deployer-inspur.tar //解压部署文件
tar zxvf apache-ambari-2.4.1-src.tar //解压源码文件
注意:czvf 是压缩命令,zxvf是解压命令。
知识点:linux对文件的解压缩操作
tar命令
解包:tar zxvf FileName.tar
打包:tar czvf FileName.tar DirName
gz命令
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
.tar.gz 和 .tgz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName
压缩多个文件:tar zcvf FileName.tar.gz DirName1 DirName2 DirName3 ...
bz2命令
解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName
.tar.bz2
解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName
bz命令
解压1:bzip2 -d FileName.bz
解压2:bunzip2 FileName.bz
压缩:未知
.tar.bz
解压:tar jxvf FileName.tar.bz
Z命令
解压:uncompress FileName.Z
压缩:compress FileName
.tar.Z
解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName
zip命令
解压:unzip FileName.zip
压缩:zip FileName.zip DirName
#rpm -qa | grep samba
yum install samba
service smb restart
useradd samba
smbpasswd -a root
注意:smbpasswd -a 是添加用户的意思 后面跟的是用户名,此用户名一定要跟linux登录用户名一样。smbpasswd -x 用户名 :是删除用户的意思
a. 查看防火墙状态
systemctl status firewalld
b. 查看开机是否启动防火墙服务
systemctl is-enabled firewalld
c. 关闭防火墙
systemctl stop firewalld
systemctl status firewalld
d. 警用防火墙(系统启动时不启动防火墙)
systemctl disable firewalld
systemctl is-enabled firewalld
e. 确保setlinux关闭
setenforce 0
[samba home]
path = /home/samba
writeable = yes
guest ok = yes
read only = no
[MyShare]
path=/opt/apache-ambari-2.4.1-src
ls
chown -R root. /opt/apache-ambari-2.4.1-src //设置共享目录归属为root
chmod -R 777 /opt/apache-ambari-2.4.1-src //属性为所有用户都可以读写删
在/opt下创建software文件夹用来存放安装包
切换到software执行下列命令
a. 查看jdk版本
yum search java|grep jdk
b. 选择版本进行安装
yum install java-1.7.0-openjdk
a. 安装wget用来下载工具
yum install wget
b. 下载maven
wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
c. 安装maven
yum -y install apache-maven
1.下载安装包
wget http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11-py2.6.egg#md5=bfa92100bd772d5a213eedd356d64086
2.安装
sh setuptools-0.6c11-py2.6.egg
这里好像就出现了问题,不过咱新建的虚拟机有自带的Python,在命令行里输入:Python,检查一下是否有,检查是有,然后怎么退出呢,用Ctrl+d强制退出。
补充:Ctrl+c,Ctrl+d,Ctrl+z在Linux中意义
- Ctrl+c和ctrl+z都是中断命令,但是他们的作用却不一样
- Ctrl+c是强制中断程序的执行。
- Ctrl+z的是将任务中断,但是此任务并没有结束,他仍然在进程中他只是维持挂起的状态。
- Ctrl+d 不是发送信号,而是表示一个特殊的二进制值,表示 EOF。
yum install rpm-build
yum install gcc-c++
wget http://nodejs.org/dist/v0.10.33/node-v0.10.33-linux-x64.tar.gz
3.解压
tar –zxvf node-v0.10.33-linux-x64.tar.gz
注意:此时经常会因为本国的特殊网络环境,有些时候npm下载时特别慢,所以建议访问以上网址,知道相应版本,下载到本地,然后传到虚拟机里。
4. 配置环境变量/etc/profile
export NODE_HOME="/opt/software/node-v0.10.33-linux-x64"
export PATH=$PATH:$NODE_HOME/bin
source /etc/profile
node -v
npm -v
npm i -g brunch@1
由于npm下载依赖包特别慢,而且容易出问题。所以我把之前下载好的包,打包本地,如果需要的话,可以传到ambari-web目录下,然后解压。
注意打包好的源码里已经下载好了npm依赖包
a. 切换到ambari-web目录下
cd /opt/apache-ambari-2.4.1-src/ambari-web
b. 删除public文件目录
rm -rf public
c. 执行编译
brunch build
d. 查看ambai-web/public目录,如果生成新的文件,则说明编译成功(编译效果会在后面提到)
ambari-admin 使用的是angularjs + bower + gulp。
bower与npm的使用方式基本一样,angularjs也与emberjs风格类似。
a. 切换到admin-web目录下
cd 到 /源码目录/ambari-admin/src/main/resources/ui/admin-web
b. 编辑 .bowerrc
{
"directory": "app/bower_components",
"allow_root": true //允许以root用户执行bower命令。也可以在执行命令的时候通过参数设定 如:bower install --allow-root 不要复制这段注释
}
c. 安装npm依赖包,全局安装gulp、bower
检查一下是否有npm npm -v
如果没有 npm install
继续安装bower和gulp
npm install -g bower
npm install -g gulp
d. 安装bower的依赖包
bower install
e. 安装 gulp-webserver
npm install gulp-webserver --save-dev
f. 开始构建
gulp
cd /opt
cd /opt/deployer-inspur
bash env.sh
cd /usr/lib/ambari-server
mv web web-orig
ln -s /opt/apache-ambari-2.4.1-src/ambari-web/public web
ambari-server restart
cd /var/lib/ambari-server/resources/views/work
注意下面的version是版本号的意思,根据上面的指令就可以知道版本号是多少。
然后将ADMIN_VIEW{version}文件备份一下。
mv ADMIN_VIEW{version} /tmp
ln -s /sourcepath/ambari/ambari-admin/src/main/resources/ui/admin-web/dist ADMIN_VIEW{version}
ambari-server restart
这时候貌似页面内容不全,实际上是创建的软连接ADMIN_VIEW{version}缺少东西,将之前备份的ADMIN_VIEW{version}文件内容替换进去,然后再执行ambari-server restart,重启完后,刷新页面IP:8080/index.html应该就成功了。
现在,我们更改源码的时候,再执行一下gulp,就可以看到效果了。修改完一次,手动执行一次gulp
brunch w
在浏览器输入 虚拟机ip:8080查看效果
使用编辑器对源码进行修改。
修改源码-刷新页面 -查看效果
(遇到问题再做总结,此时已经能够正常工作)