一、安装node.js(head插件需要他)(node.6.11.4)
1、准备环境
参考连接
//查看系统版本
>cat /etc/redhat-release
//查看python版本
>python -v
//查看gcc rpm gcc-c++是否安装
>rpm -q gcc rpm -q gcc-c++
//安装gcc-c++
>yum -v install gcc-c++ kernel-devel
//大招荡平一切环境问题
>yum -y update && yum -y groupinstall "Development Tools"
最后一步yum -y update失败,好像因为重装的mysql问题 ,直接安装nodejs
2、编译安装Nodejs
//复制官网链接(Source Code版本)进入/usr/src目录下载nodejs
>wget https://nodejs.org/dist/v6.11.4/node-v6.11.4.tar.gz
//解压
>tar -xf node-v6.11.4.tar.gz
//删除压缩包
>rm node-v6.11.4.tar.gz
//进入node-v6.11.4目录,进行配置
>./configure
//编译
>make
//安装
>sodu make install
3、遇到的问题和解决办法
(1)、编译node.js失败的问题(gcc版本低)
解决:升级gcc4.8.2(参考升级的是4.8.5)
参考连接
https://www.cnblogs.com/edda/p/13061554.html
(2)、安装gcc4.8.2时使用了这个链接
gcc-4.8.3安装包
在这里,我们将gcc-4.8.5.tar.bz2解压到/usr/local/src目录中(当然你也可以指定其他目录),完整的tar命令为:(教程中是4.8.5bz2的,我是4.8.2gz的自己解压命令和版本号自己改一下)
#解压gcc安装文件
tar jxvf gcc-4.8.5.tar.bz2 -C /usr/local/src
解压后gcc源程序的根目录就是/usr/local/src/gcc-4.8.5。接着,我们依次执行如下命令:
#转到gcc源程序根目录
cd /usr/local/src/gcc-4.8.5
#下载一些必备的依赖程序
./contrib/download_prerequisites
接着,就可以对gcc进行编译安装了。在此之前,我们先创建一个目录 mkdir /usr/local/build/gcc-4.8.5
(你也可以自行指定其他目录)用于存放编译后的程序文件。然后我们依次执行如下命令:
#跳转到编译后的程序文件存放目录
cd /usr/local/build/gcc-4.8.5
#调用gcc源程序的configure(后面的参数选项可根据需要自行修改),用于配置gcc
/usr/local/src/gcc-4.8.5/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
#编译gcc源程序
make
#安装gcc
make install
make命令这一过程耗费的时间可能非常多(第一次花了几个小时)
GCC 和G++均安装在/usr/local/bin/ 和 /usr/local/lib 目录下,如果需要自己指定安装目录,在configure后面指定参数 --prefix=/your/path 即可。
解决GLIBC版本未更新问题
编译或者运行时,会出现GLIBC版本找不到的问题,如下提示:
/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found
/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found
主要是因为升级时,生成的动态库没有替换老版本gcc的动态库导致的,将gcc最新版本的动态库替换系统中老版本的动态库即可解决。
运行以下命令检查动态库:
strings /usr/lib64/libstdc++.so.6 | grep GLIBC
生成的动态库没有替换老版本gcc的动态库。按道理说安装的时候会自动更新动态库,我们可以在根目录手动搜索一下:
find / -name libstdc++.so.6*
输出结果如下:
/usr/lib/libstdc++.so.6.0.13
/usr/lib/libstdc++.so.6/usr/local/lib64/libstdc++.so.6.0.19-gdb.py
/usr/local/lib64/libstdc++.so.6
/usr/local/lib64/libstdc++.so.6.0.19
/usr/local/build/gcc-4.8.5/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
/usr/local/build/gcc-4.8.5/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.19
/usr/local/build/gcc-4.8.5/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
/usr/local/build/gcc-4.8.5/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.19
/usr/local/build/gcc-4.8.5/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
/usr/local/build/gcc-4.8.5/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.19
/usr/lib64/libstdc++.so.6.0.13
/usr/lib64/libstdc++.so.6
我们发现,gcc安装时把libstdc++.so.6.0.19(我升级的gcc为4.8.2的为libstdc++.so.6.0.18,查到弄最大数字呗) 安装到了/usr/local/lib64下,但并没有改变/usr/lib64/libstdc++.so.6的链接指向。那么我们将/usr/local/lib64/libstdc++.so.6.0.19手动拷贝到/usr/lib64/,并更新libstdc++.so.6软连接(就是不同文件夹用到同一个文件,不需要把文件复制过去,直接告诉他文件在哪就行了。例如java的环境变量配好了,才能全局使用。不然只能在java安装目录的bin使用)(也可以直接指向/usr/local/lib64/libstdc++.so.6.0.19,不用拷贝, 看各自的文件管理习惯),其中/usr/local/build/gcc-4.8.5/目录下的库文件为都是编译输出文件,stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.19为gcc新版本编译最终生成的lib库文件,和/usr/local/lib64/libstdc++.so.6.0.19是一模一样的。更新lib库的操作命令如下:删除要备份,因为删除/usr/lib64/libstdc++.so.6,很容易出错。
cp /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6.back
cp /usr/local/lib64/libstdc++.so.6.0.19 /usr/lib64
rm -rf /usr/lib64/libstdc++.so.6
ln -s /usr/lib64/libstdc++.so.6.0.19 /usr/lib64/libstdc++.so.6
现在再次检查动态库,看看'GLIBCXX_3.4.14'出现没:
strings /usr/lib64/libstdc++.so.6 | grep GLIBC
二.换npm源华为源,(淘宝源卡死,卡了从晚上到早上)
参考
http://t.zoukankan.com/lishidefengchen-p-14086733.html
1. 设置镜像源
npm config set registry https://mirrors.huaweicloud.com/repository/npm/
2.清空缓存
npm cache clean -f
3. 检查
npm config list
三.安装grunt-cli
npm install -g grunt-cli
使用grunt --version 命令,
问题1.Build is failing for Syntax Error - Micromatch
..main/resources/static/node_modules/liftup/node_modules/micromatch/index.js:44
let isMatch = picomatch(String(patterns[i]), { ...options, onResult }, true);
^^^
SyntaxError: Unexpected token ...
Syntax Error - Micromatch问题参考链接https://stackoverflow.com/questions/67211988/build-is-failing-for-syntax-error-micromatch
解决1.1.stackoverflow上说节点版本要更新到8,(里面有人说不管用)
我还是安装了n模块(专门又来管理node.js版本的)
n -V
查看版本,我的是v8.0.0,但是node -v还是原来的v6.11.4,可能是版本冲突的原因,
重新安装grunt-cli,grunt server还是报错
解决1.2.使用的是nodev6.14.4使用指定版本的grunt-cli
npm install -g grunt-cli@1.3.1
问题2:后来又出现path.js1149 cwd = process.cwd(); Error: ENOENT: no such file or directory, uv_cwd
解决:重启虚拟机,使用reboot命令
链接https://blog.csdn.net/pansanday/article/details/79615319
四、安装head5.5插件
到head5.5插件(和elasticsearch版本一致5.5)根目录执行
grunt server
问题1:unable to file local grunt()
解决:到head插件根目录局部安装grunt
npm install grunt
1.grunt(服务器)和grunt-cli(客户端)不一样
2.grunt可以安装多个版本,局部安装,grunt-cli全局安装(-g代表全局)
grunt CLI的任务很简单:调用与Gruntfile在同一目录中的grunt。这样带来的好处是,允许你在同一个系统上同时安装多个版本的grunt。而grunt使用模块结构,除了安装命令行界面以外,还要根据需要安装相应的模块。这些模块应该采用局部安装,因为不同项目可能需要同一个模块的不同版本。
上述命令执行完后,grunt 命令就被加入到当前项目中
参考的链接失效了也就几天。
问题2:npm WARN elasticsearch-head@0.0.0 license should be a valid SPDX license expression
解决:打开elasticsearch-head目录下的package.json文件,找到license位置,修改为Apache-2.0
五、启动elasticsearch
到es根目录启动es
1.修改es当根目录文件elasticsearch.yml
添加
http.cors.enabled:[空格]true
http.cors.allow-origin:[空格]"*"
2.启动es
bin/elasticsearch
到head插件根目录
1.修改head配置文件Gruntfile.js
设置hostname,为es节点ip
2.启动
grunt server
用浏览器访问“hostname设置的es所在”ip:9100