-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathrun.sh
167 lines (146 loc) · 5.63 KB
/
run.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
#!/bin/bash
initElasticsearchService() {
docker compose stop elasticsearch
docker compose rm -f elasticsearch
rm -rf /docker/elasticsearch/data
rm -rf /docker/elasticsearch/plugins
mkdir -p /docker/elasticsearch/data
mkdir -p /docker/elasticsearch/plugins
mkdir -p /docker/elasticsearch/plugins/elasticsearch-analysis-ik-7.17.7
chmod 777 /docker/elasticsearch/data
chmod 777 /docker/elasticsearch/plugins
echo -e "\033[32m elasticsearch install plugin analysis \033[0m"
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.17.7/elasticsearch-analysis-ik-7.17.7.zip
unzip -x elasticsearch-analysis-ik-7.17.7.zip -d /docker/elasticsearch/plugins/elasticsearch-analysis-ik-7.17.7
docker compose up -d elasticsearch
echo -e "\033[32m start Elasticsearch \033[0m"
}
initEsIndexAndMapping() {
source dht-elasticsearch.env
echo -e "\033[32m drop index if exits \033[0m"
curl -H "Content-Type: application/json" -X DELETE -d '' -u ${ELASTICSEARCH_USERNAME}:${ELASTICSEARCH_PASSWORD} ${ELASTICSEARCH_HOST}:${ELASTICSEARCH_PORT}/metadata
echo -e "\r\n\033[32m create index \033[0m"
curl -H "Content-Type: application/json" -X PUT -d '{}' -u ${ELASTICSEARCH_USERNAME}:${ELASTICSEARCH_PASSWORD} ${ELASTICSEARCH_HOST}:${ELASTICSEARCH_PORT}/metadata
echo -e "\r\n\033[32m update mapping \033[0m"
curl -H "Content-Type: application/json" -X POST -d @mapping.json -u ${ELASTICSEARCH_USERNAME}:${ELASTICSEARCH_PASSWORD} ${ELASTICSEARCH_HOST}:${ELASTICSEARCH_PORT}/metadata/_mapping
echo -e "\r\n\033[32m update setting \033[0m"
curl -H "Content-Type: application/json" -X PUT -d @setting.json -u ${ELASTICSEARCH_USERNAME}:${ELASTICSEARCH_PASSWORD} ${ELASTICSEARCH_HOST}:${ELASTICSEARCH_PORT}/metadata/_settings
}
checkSystem() {
if [ $(which expect | grep -c "expect") -ne 1 ]; then
yum install expect -y
fi
# check docker
if [ $(which docker | grep -c "docker") -ne 1 ]; then
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl enable docker
systemctl start docker
fi
echo -e "\033[32m Docker ok \033[0m"
if [ $(ls | grep -c "docker-compose.yml") -ne 1 ]; then
wget https://raw.githubusercontent.com/zpqsunny/dht/main/docker-compose.yml
fi
echo -e "\033[32m docker-compose.yml ok \033[0m"
if [ $(ls | grep -c "^es.env$") -ne 1 ]; then
wget https://raw.githubusercontent.com/zpqsunny/dht/main/es.env
fi
echo -e "\033[32m es.env ok \033[0m"
if [ $(ls | grep -c "^mongo.env$") -ne 1 ]; then
wget https://raw.githubusercontent.com/zpqsunny/dht/main/mongo.env
fi
echo -e "\033[32m mongo.env ok \033[0m"
if [ $(ls | grep -c "^dht-es.env$") -ne 1 ]; then
wget https://raw.githubusercontent.com/zpqsunny/dht/main/dht-es.env
fi
echo -e "\033[32m dht-es.env ok \033[0m"
if [ $(ls | grep -c "^dht-mongo.env$") -ne 1 ]; then
wget https://raw.githubusercontent.com/zpqsunny/dht/main/dht-mongo.env
fi
echo -e "\033[32m dht-mongo.env ok \033[0m"
if [ $(ls | grep -c "^dht-redis.env$") -ne 1 ]; then
wget https://raw.githubusercontent.com/zpqsunny/dht/main/dht-redis.env
fi
echo -e "\033[32m dht-redis.env ok \033[0m"
if [ $(ls | grep -c "^mapping.json$") -ne 1 ]; then
wget https://raw.githubusercontent.com/zpqsunny/dht/main/mapping.json
fi
echo -e "\033[32m mapping.json ok \033[0m"
if [ $(ls | grep -c "^setting.json$") -ne 1 ]; then
wget https://raw.githubusercontent.com/zpqsunny/dht/main/setting.json
fi
echo -e "\033[32m setting.json ok \033[0m"
}
initMongoDB() {
if [ $(docker ps -a | grep -c "mongo") -eq 1 ]; then
docker rm -f mongo
rm -rf /docker/mongo/db
fi
docker compose up -d mongo
sleep 5
# init mongo
/usr/bin/expect <<EOF
spawn docker exec -it mongo bash
exec sleep 1
send "mongo --host 127.0.0.1:27018 -u \\\$MONGO_INITDB_ROOT_USERNAME -p \\\$MONGO_INITDB_ROOT_PASSWORD \n"
exec sleep 1
send "rs.initiate()\n"
exec sleep 1
send "exit\n"
exec sleep 1
send "exit\n"
EOF
echo -e "\033[32m mongodb ok \033[0m"
}
openFirewalld() {
firewall-cmd --add-port 6881/udp --permanent
echo -e "\033[32m 6881/udp [OK] \033[0m"
firewall-cmd --add-port 6882/udp --permanent
echo -e "\033[32m 6883/udp [OK] \033[0m"
firewall-cmd --add-port 6883/udp --permanent
echo -e "\033[32m 6883/udp [OK] \033[0m"
firewall-cmd --add-port 9200/tcp --permanent
echo -e "\033[32m 9200/tcp [OK] \033[0m"
firewall-cmd --add-port 9300/tcp --permanent
echo -e "\033[32m 9300/tcp [OK] \033[0m"
firewall-cmd --reload
echo -e "\033[32m reload [OK] \033[0m"
}
while [ 1 -eq 1 ]; do
echo -e "\r\n----------------------------------------------------------"
echo -e " \033[32m 0: 检查环境 Docker docker-compose \033[0m"
echo -e " \033[32m 1: 初始化 Elasticsearch Service \033[0m"
echo -e " \033[32m 2: 初始化 Elasticsearch index mapping \033[0m"
echo -e " \033[32m 3: 初始化 mongodb \033[0m"
echo -e " \033[32m 4: 防火墙开放端口 firewalld \033[0m"
echo -e " \033[32m x: 退出 \033[0m"
read -r c
case $c in
0)
checkSystem
;;
1)
initElasticsearchService
;;
2)
initEsIndexAndMapping
;;
3)
initMongoDB
;;
4)
openFirewalld
;;
x)
break
;;
*)
continue
echo "请正确输入"
;;
esac
done
exit
# if have mongo backup
mongorestore --authenticationDatabase=admin -u $MONGO_INITDB_ROOT_USERNAME -p $MONGO_INITDB_ROOT_PASSWORD --port 27018 -d dht -c metadata /backup/dht/metadata.bson