中间件一键部署脚本: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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程