搜索

ElasticSearch,简称为es。es的运行需要jdk环境,我们首先需要安装java。

java环境篇

安装java

# 安装jdk1.8.0的所有文件
yum install -y java-1.8.0-openjdk*

检查jdk

安装完成后,检查jdk是否安装成功

java -version

image-20210820031117509

接下来,配置环境变量。其实我一直有个疑问,yum安装的java,到底需要配置环境变量吗?其实我没有配置环境变量,也一样可以运行es。这里,我们为了保险起见,还是配置一下吧。

配置环境变量

  • yum安装jdk默认安装的路径在 /usr/lib/jvm

image-20210820031430050

  • /etc/profile文件中添加如下命令

    # set java environment  
    JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64
    PATH=$PATH:$JAVA_HOME/bin  
    CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar  
    export JAVA_HOME  CLASSPATH  PATH
  • 保存关闭profile文件,执行如下命令生效

    source /etc/profile
  • 使用如下命令,查看jdk变量

     echo $JAVA_HOME
     echo $PATH
     echo $CLASSPATH

输出变量值,则成功。

以上是最简单粗暴的安装java-jdk方式。

ES篇

安装es

你可以去官网下载

https://www.elastic.co/cn/downloads/elasticsearch

如果你觉得下载速度比较慢,可以用一些国内的镜像站。比如华为开源镜像站

https://repo.huaweicloud.com/elasticsearch/

针对自己的情况选择即可。

  • 下载完成后,解压
tar -xvf elasticsearch-xxxxxx.tar.gz
  • 修改配置文件config/elasticsearch.yml
//添加 下面几行
xpack.ml.enabled: false
network.host: 0.0.0.0
# 开放端口
http.port: 8833

#memory
bootstrap.memory_lock: false
bootstrap.system_call_filter: false

#node
node.name: node-1 
cluster.initial_master_nodes: ["node-1"]
  • 修改配置文件config/jvm.options
//修改为,128m  不然本机1G的运行内存 用不了
-Xms128m
-Xmx128m

这里最大、小运行内存,具体看你服务器的配置和你的数据量。我配置比较高,我设置的4G。4*1024=4096m

  • 添加linux子用户,启用es

因为root用户下,无法启用es的。所以只能创建一个es的子用户。

# 根目录下创建用户,密码
useradd es
# 设置密码
passwd es
  • 给与文件访问权限

你必须给与es权限,不然他没有es文件夹下的启用权限,就会报错。

chown -R es:es /www/software/elasticsearch
  • 打开 /etc/security/limits.conf ,在里面添加如下内容

    * soft nofile 65536
    * hard nofile 65536
  • 修改 /etc/sysctl.conf,末尾添加下面配置

    vm.max_map_count=655360
  • 查看并更新生效

    sysctl -p 

启用es

使用es账号登录,启动es

su es
cd /www/software/elasticsearch
# 启动es
./bin/elasticsearch&

访问es

打开浏览器,或者curl访问

http://localhost:8833/

或者http://外网ip:8833

image-20210820033604066

这样就启动OK了

插件篇

安装ElasticSearch Head插件

cd /www/software/elasticsearch
# 拉取文件
git clone git://github.com/mobz/elasticsearch-head.git
# 安装依赖
cd elasticsearch-head
npm install
npm run start
  • 修改默认端口号

    • 访问es-head端口号

    打开文件 elasticsearch-head/Gruntfile.js

    connect: {
                server: {
                    options: {
                        port: 9100, //默认端口9100 修改自己的
                        base: '.',
                        keepalive: true
                    }
                }
            }
    • 修改es-head插件访问es的端口号

    打开elasticsearch-head/_site/app.js

    this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://localhost:9200"; 
    
    • 修改es配置文件 config/elasticsearch.yml

      //末尾添加 处理跨域和运行
      http.cors.enabled: true  
      http.cors.allow-origin: "*"
保存后,需要重新启动es。才可生效
./bin/elasticsearch

修改完后,重启es-head即可生效

npm run restart

访问Head插件地址

打开浏览器访问

http://localhost:8834

或者 http://外网ip:8834

image-20210820034456125

如果集群健康值,不为:红色或者灰色就OK了

如果你没有npm环境,就需要安装喽~

npm篇

安装npm

我直接使用yum安装,很方便很粗暴

  • 安装

    curl --silent --location https://rpm.nodesource.com/setup_10.x | bash -
    
    yum install -y nodejs
    
    ## 设置淘宝镜像,速度快
    npm install -g cnpm --registry=https://registry.npm.taobao.org
    
    npm install
    # 安装完成,查看版本号
    npm -v
  • npm 升级

    # 安装npm升级工具
    npm install -g n
     
    # 安装最近的稳定版本
    n stable

这样就OK了

如果你需要把es-head插件一直在后台运行,那可以借助nohupscreen这样工具,防止断开ssh后,进程被杀死。

也可以使用pm2进程管理器,保持进程一直活着。

进程管理篇

安装pm2

  • 安装

    npm install -g pm2
  • 运行

    # 启动一个进程并把它命名为 es-head
    pm2 start npm --name es-head -- start

其他运行方式:

pm2 start app.js -i max  # 根据有效CPU数目启动最大进程数目
pm2 start app.js -i 3      # 启动3个进程
pm2 start app.js -x        #用fork模式启动 app.js 而不是使用 cluster
pm2 start app.js -x -- -a 23   # 用fork模式启动 app.js 并且传递参数 (-a 23)
pm2 start app.js --name serverone  # 启动一个进程并把它命名为 serverone
pm2 stop serverone       # 停止 serverone 进程
pm2 start app.json        # 启动进程, 在 app.json里设置选项
pm2 start app.js -i max -- -a 23                   #在--之后给 app.js 传递参数
pm2 start app.js -i max -e err.log -o out.log  # 启动 并 生成一个配置文件,你也可以执行用其他语言编写的app  ( fork 模式):
pm2 start my-bash-script.sh    -x --interpreter bash
pm2 start my-python-script.py -x --interpreter python

使用命令

npm install pm2 -g     # 命令行安装 pm2 
pm2 start app.js -i 4 #后台运行pm2,启动4个app.js 
                              # 也可以把'max' 参数传递给 start
                              # 正确的进程数目依赖于Cpu的核心数目
pm2 start app.js --name my-api # 命名进程
pm2 list               # 显示所有进程状态
pm2 monit              # 监视所有进程
pm2 logs               #  显示所有进程日志
pm2 stop all           # 停止所有进程
pm2 restart all        # 重启所有进程
pm2 reload all         # 0秒停机重载进程 (用于 NETWORKED 进程)
pm2 stop 0             # 停止指定的进程
pm2 restart 0          # 重启指定的进程
pm2 startup            # 产生 init 脚本 保持进程活着
pm2 web                # 运行健壮的 computer API endpoint (http://localhost:9615)
pm2 delete 0           # 杀死指定的进程
pm2 delete all         # 杀死全部进程

总结

如果你搭建成功后,无法在外网访问。可以通过放行端口的方式解决。

以下主机商必看(开端口教程,不开不能用):

腾讯云:https://www.bt.cn/bbs/thread-1229-1-1.html

阿里云:https://www.bt.cn/bbs/thread-2897-1-1.html

华为云:https://www.bt.cn/bbs/thread-3923-1-1.html

照猫画虎,照葫芦画瓢,你用什么端口,就放行什么端口,就OK了。

elasticsearch es-head jdk npm pm2

版权属于:guoxiaorui
作品采用:本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
1
查看目录

目录

来自 《Linux下安装部署ElasticSearch》
评论

博主很懒,啥都没有
© 2022 程序猿小睿