中间件一键部署脚本:elasticsearch单机部署脚本(密码认证)

###安装包和脚本放在同级目录下

cat deployment_elasticsearch.sh

#!/bin/bash

#二进制安装包和脚本放在一个磁盘较大的目录下。

tar_name=$(ls elasticsearch*)

if [[ -z "${tar_name}" ]]; then
    echo "未找到 Elasticsearch 二进制安装包"
    exit 1
fi

echo "检查当前服务器的系统参数************"
selinux_status=$(getenforce)
max_count=$(sysctl -n vm.max_map_count)
max_files=$(ulimit -n)
is_sudo=$(sudo -v 2>/dev/null && echo "0" || echo "1")

if command -v java >/dev/null 2>&1; then
    echo "JDK 已安装"
else
    echo "JDK 未安装"
    exit 1
fi


if [ $selinux_status != "disabled" ]; then
    if [ $is_sudo -eq 0 ]; then
        echo "SELinux未禁用!当前用户拥有sudo权限,可以直接调整!"
        sudo setenforce 0
        sudo sed -i.bak  's@^SELINUX=\(.*\)@SELINUX=disabled@p' /etc/selinux/config
    else
        echo "SELinux未禁用!当前用户无sudo权限!,退出安装!"
        exit 1
    fi
fi

if [ $max_count -lt 262144 ]; then
   if [ $is_sudo -eq 0 ]; then
        echo "vm.max_map_count值低于262144!当前用户拥有sudo权限,可以直接调整!"
        sudo sysctl -w vm.max_map_count=262144
        # 修改或追加配置
        sudo sed -i 's/^vm\.max_map_count\s*=\s*.*/vm.max_map_count = 655360/' /etc/sysctl.conf || echo "vm.max_map_count = 655360" | sudo tee -a /etc/sysctl.conf
        sudo sysctl -p
    else
        echo "vm.max_map_count值低于262144!当前用户无sudo权限!,退出安装!"
        exit 1
    fi
fi

if [ $max_files -lt 65536 ]; then
   if [ $is_sudo -eq 0 ]; then
        echo "ulimit -n值低于65536!当前用户拥有sudo权限,可以直接调整!"
        echo "ulimit -n 65536" >> ~/.bash_profile
        source ~/.bash_profile
 
   else
        echo "ulimit -n值低于65536!当前用户无sudo权限!,退出安装!"
        exit 1
    fi
fi

#开始部署
tar -xvzf ${tar_name} -C $(pwd)
cd elasticsearch* && mkdir data logs
currentdir=$(pwd)

cat >config/elasticsearch.yaml <<EOF
#集群名称
cluster.name: elasticsearch
#节点名称
node.name: node-1
discovery.type: single-node
#数据目录
path.data: $currentdir/data
#日志目录
path.logs: $currentdir/logs
#ip 地址,填入每个节点的ip,填写三台机器的ip
network.host: 0.0.0.0
xpack.security.enabled: true
http.port: 9200
transport.tcp.port: 9300
ingest.geoip.downloader.enabled: false
EOF


if [ $(whoami) -eq 'root' ]; then
    echo "elasticsearch 不能使用root启动,需要创建elasticsearch用户"
     useradd elasticsearch
     echo "elasticsearch:Wiseco#2024" | chpasswd
     chown -R elasticsearch:elasticsearch $currentdir
     su - elasticsearch -c "$currentdir/bin/elasticsearch -d"
else
    "$currentdir/bin/elasticsearch -d"
fi


while ! netstat -tnlp | grep -q ":9200"; do
    echo "等待 9200 端口启动..."
    sleep 2
done
echo "9200 端口已启动,修改elastic用户密码"
PASSWORD=$($currentdir/bin/elasticsearch-setup-passwords auto | grep 'PASSWORD elastic =' | awk '{print $4}')
echo "Elastic 初始用户密码: $PASSWORD"

response=$(curl -s -o /dev/null -w "%{http_code}" -X POST -u elastic:$PASSWORD "http://localhost:9200/_security/user/elastic/_password" \
  -H 'Content-Type: application/json' \
  -d '{"password":"Wiseco#2024"}')

if [ "$response" -eq 200 ]; then
    echo "密码修改成功,新密码: Wiseco#2024"
else
    echo "密码修改失败,HTTP 状态码: $response"
fi
posted @   瘦阿瘦  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示