centos6.5中配合elasticsearch使用的head插件踩坑

邓嘉致
2023-12-01

一、安装node.js(head插件需要他)(node.6.11.4)
1、准备环境

参考连接

https://blog.csdn.net/miniminixu/article/details/78177987?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~default-1.no_search_link&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~default-1.no_search_link

//查看系统版本
>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

接着,就可以对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
 

 类似资料: