install.sh 30.3 KB
Newer Older
H
hzcheng 已提交
1 2
#!/bin/bash
#
L
lihui 已提交
3
# This file is used to install database on linux systems. The operating system
H
hzcheng 已提交
4 5 6 7 8
# is required to use systemd to manage services at boot

set -e
#set -x

L
lihui 已提交
9 10
verMode=edge
pagMode=full
S
slguan 已提交
11

H
Hui Li 已提交
12 13 14
iplist=""
serverFqdn=""

H
hzcheng 已提交
15
# -----------------------Variables definition---------------------
F
Frozen 已提交
16
script_dir=$(dirname $(readlink -f "$0"))
H
hzcheng 已提交
17 18
# Dynamic directory

Z
change  
zyyang 已提交
19 20 21 22 23 24 25
clientName="taos"
serverName="taosd"
configFile="taos.cfg"
productName="TDengine"
emailName="taosdata.com"
uninstallScript="rmtaos"
historyFile="taos_history"
H
hzcheng 已提交
26

Z
change  
zyyang 已提交
27 28
data_dir="/var/lib/taos"
log_dir="/var/log/taos"
H
hzcheng 已提交
29 30 31 32
cfg_install_dir="/etc/taos"

bin_link_dir="/usr/bin"
lib_link_dir="/usr/lib"
H
Hui Li 已提交
33
lib64_link_dir="/usr/lib64"
H
hzcheng 已提交
34 35 36 37 38 39 40 41
inc_link_dir="/usr/include"

#install main path
install_main_dir="/usr/local/taos"
# old bin dir
bin_dir="/usr/local/taos/bin"

service_config_dir="/etc/systemd/system"
S
slguan 已提交
42 43
nginx_port=6060
nginx_dir="/usr/local/nginxd"
H
hzcheng 已提交
44 45 46 47 48 49 50 51

# Color setting
RED='\033[0;31m'
GREEN='\033[1;32m'
GREEN_DARK='\033[0;32m'
GREEN_UNDERLINE='\033[4;32m'
NC='\033[0m'

P
plum-lihui 已提交
52
csudo=""
Z
change  
zyyang 已提交
53 54
if command -v sudo >/dev/null; then
  csudo="sudo "
P
plum-lihui 已提交
55
fi
H
hzcheng 已提交
56

S
slguan 已提交
57
update_flag=0
58
prompt_force=0
S
slguan 已提交
59

L
lihui 已提交
60
initd_mod=0
P
plum-lihui 已提交
61
service_mod=2
Z
change  
zyyang 已提交
62 63 64 65 66 67 68 69 70 71 72 73
if pidof systemd &>/dev/null; then
  service_mod=0
elif $(which service &>/dev/null); then
  service_mod=1
  service_config_dir="/etc/init.d"
  if $(which chkconfig &>/dev/null); then
    initd_mod=1
  elif $(which insserv &>/dev/null); then
    initd_mod=2
  elif $(which update-rc.d &>/dev/null); then
    initd_mod=3
  else
P
plum-lihui 已提交
74
    service_mod=2
Z
change  
zyyang 已提交
75 76 77
  fi
else
  service_mod=2
H
hzcheng 已提交
78 79
fi

L
lihui 已提交
80 81 82
# get the operating system type for using the corresponding init file
# ubuntu/debian(deb), centos/fedora(rpm), others: opensuse, redhat, ..., no verification
#osinfo=$(awk -F= '/^NAME/{print $2}' /etc/os-release)
H
Hui Li 已提交
83
if [[ -e /etc/os-release ]]; then
Z
change  
zyyang 已提交
84
  osinfo=$(cat /etc/os-release | grep "NAME" | cut -d '"' -f2) || :
H
Hui Li 已提交
85 86 87
else
  osinfo=""
fi
L
lihui 已提交
88 89
#echo "osinfo: ${osinfo}"
os_type=0
Z
change  
zyyang 已提交
90 91
if echo $osinfo | grep -qwi "ubuntu"; then
  #  echo "This is ubuntu system"
L
lihui 已提交
92
  os_type=1
Z
change  
zyyang 已提交
93 94
elif echo $osinfo | grep -qwi "debian"; then
  #  echo "This is debian system"
L
lihui 已提交
95
  os_type=1
Z
change  
zyyang 已提交
96 97
elif echo $osinfo | grep -qwi "Kylin"; then
  #  echo "This is Kylin system"
L
lihui 已提交
98
  os_type=1
Z
change  
zyyang 已提交
99 100
elif echo $osinfo | grep -qwi "centos"; then
  #  echo "This is centos system"
L
lihui 已提交
101
  os_type=2
Z
change  
zyyang 已提交
102 103
elif echo $osinfo | grep -qwi "fedora"; then
  #  echo "This is fedora system"
L
lihui 已提交
104
  os_type=2
Z
change  
zyyang 已提交
105 106
elif echo $osinfo | grep -qwi "Linx"; then
  #  echo "This is Linx system"
haoranc's avatar
haoranc 已提交
107 108 109 110
  os_type=1
  service_mod=0
  initd_mod=0
  service_config_dir="/etc/systemd/system"
L
lihui 已提交
111
else
H
Hui Li 已提交
112
  echo " osinfo: ${osinfo}"
113
  echo " This is an officially unverified linux system,"
H
Hui Li 已提交
114
  echo " if there are any problems with the installation and operation, "
Z
change  
zyyang 已提交
115
  echo " please feel free to contact ${emailName} for support."
L
lihui 已提交
116
  os_type=1
L
lihui 已提交
117 118
fi

H
Hui Li 已提交
119 120 121 122 123
# =============================  get input parameters =================================================

# install.sh -v [server | client]  -e [yes | no] -i [systemd | service | ...]

# set parameters by default value
Z
change  
zyyang 已提交
124 125 126
interactiveFqdn=yes # [yes | no]
verType=server      # [server | client]
initType=systemd    # [systemd | service | ...]
H
Hui Li 已提交
127

Z
change  
zyyang 已提交
128
while getopts "hv:e:i:" arg; do
H
Hui Li 已提交
129
  case $arg in
Z
change  
zyyang 已提交
130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
  e)
    #echo "interactiveFqdn=$OPTARG"
    interactiveFqdn=$(echo $OPTARG)
    ;;
  v)
    #echo "verType=$OPTARG"
    verType=$(echo $OPTARG)
    ;;
  i)
    #echo "initType=$OPTARG"
    initType=$(echo $OPTARG)
    ;;
  h)
    echo "Usage: $(basename $0) -v [server | client]  -e [yes | no]"
    exit 0
    ;;
  ?) #unknow option
    echo "unkonw argument"
    exit 1
    ;;
H
Hui Li 已提交
150 151 152
  esac
done

H
Hui Li 已提交
153
#echo "verType=${verType} interactiveFqdn=${interactiveFqdn}"
H
Hui Li 已提交
154

155 156
function kill_process() {
  pid=$(ps -ef | grep "$1" | grep -v "grep" | awk '{print $2}')
L
lihui 已提交
157
  if [ -n "$pid" ]; then
Z
change  
zyyang 已提交
158
    ${csudo}kill -9 $pid || :
L
lihui 已提交
159
  fi
P
plum-lihui 已提交
160 161
}

H
hzcheng 已提交
162
function install_main_path() {
Z
change  
zyyang 已提交
163 164 165 166 167 168 169 170 171 172 173 174 175
  #create install main dir and all sub dir
  ${csudo}rm -rf ${install_main_dir} || :
  ${csudo}mkdir -p ${install_main_dir}
  ${csudo}mkdir -p ${install_main_dir}/cfg
  ${csudo}mkdir -p ${install_main_dir}/bin
  ${csudo}mkdir -p ${install_main_dir}/connector
  ${csudo}mkdir -p ${install_main_dir}/driver
  ${csudo}mkdir -p ${install_main_dir}/examples
  ${csudo}mkdir -p ${install_main_dir}/include
  ${csudo}mkdir -p ${install_main_dir}/init.d
  if [ "$verMode" == "cluster" ]; then
    ${csudo}mkdir -p ${nginx_dir}
  fi
176

Z
change  
zyyang 已提交
177 178 179
  if [[ -e ${script_dir}/email ]]; then
    ${csudo}cp ${script_dir}/email ${install_main_dir}/ || :
  fi
H
hzcheng 已提交
180 181 182
}

function install_bin() {
Z
change  
zyyang 已提交
183
  # Remove links
Z
change  
zyyang 已提交
184 185
  ${csudo}rm -f ${bin_link_dir}/${clientName} || :
  ${csudo}rm -f ${bin_link_dir}/${serverName} || :
Z
change  
zyyang 已提交
186 187 188
  ${csudo}rm -f ${bin_link_dir}/taosadapter || :
  ${csudo}rm -f ${bin_link_dir}/taosdemo || :
  ${csudo}rm -f ${bin_link_dir}/taosdump || :
Z
change  
zyyang 已提交
189
  ${csudo}rm -f ${bin_link_dir}/${uninstallScript} || :
Z
change  
zyyang 已提交
190 191 192 193 194 195 196
  ${csudo}rm -f ${bin_link_dir}/tarbitrator || :
  ${csudo}rm -f ${bin_link_dir}/set_core || :
  ${csudo}rm -f ${bin_link_dir}/run_taosd.sh || :

  ${csudo}cp -r ${script_dir}/bin/* ${install_main_dir}/bin && ${csudo}chmod 0555 ${install_main_dir}/bin/*

  #Make link
Z
change  
zyyang 已提交
197 198
  [ -x ${install_main_dir}/bin/${clientName} ] && ${csudo}ln -s ${install_main_dir}/bin/${clientName} ${bin_link_dir}/${clientName} || :
  [ -x ${install_main_dir}/bin/${serverName} ] && ${csudo}ln -s ${install_main_dir}/bin/${serverName} ${bin_link_dir}/${serverName} || :
Z
change  
zyyang 已提交
199 200 201
  [ -x ${install_main_dir}/bin/taosadapter ] && ${csudo}ln -s ${install_main_dir}/bin/taosadapter ${bin_link_dir}/taosadapter || :
  [ -x ${install_main_dir}/bin/taosdemo ] && ${csudo}ln -s ${install_main_dir}/bin/taosdemo ${bin_link_dir}/taosdemo || :
  [ -x ${install_main_dir}/bin/taosdump ] && ${csudo}ln -s ${install_main_dir}/bin/taosdump ${bin_link_dir}/taosdump || :
Z
change  
zyyang 已提交
202
  [ -x ${install_main_dir}/bin/remove.sh ] && ${csudo}ln -s ${install_main_dir}/bin/remove.sh ${bin_link_dir}/${uninstallScript} || :
Z
change  
zyyang 已提交
203 204 205 206 207 208 209 210 211
  [ -x ${install_main_dir}/bin/set_core.sh ] && ${csudo}ln -s ${install_main_dir}/bin/set_core.sh ${bin_link_dir}/set_core || :
  [ -x ${install_main_dir}/bin/run_taosd.sh ] && ${csudo}ln -s ${install_main_dir}/bin/run_taosd.sh ${bin_link_dir}/run_taosd.sh || :
  [ -x ${install_main_dir}/bin/tarbitrator ] && ${csudo}ln -s ${install_main_dir}/bin/tarbitrator ${bin_link_dir}/tarbitrator || :

  if [ "$verMode" == "cluster" ]; then
    ${csudo}cp -r ${script_dir}/nginxd/* ${nginx_dir} && ${csudo}chmod 0555 ${nginx_dir}/*
    ${csudo}mkdir -p ${nginx_dir}/logs
    ${csudo}chmod 777 ${nginx_dir}/sbin/nginx
  fi
H
hzcheng 已提交
212 213 214
}

function install_lib() {
Z
change  
zyyang 已提交
215 216 217 218 219 220 221 222 223 224 225 226 227
  # Remove links
  ${csudo}rm -f ${lib_link_dir}/libtaos.* || :
  ${csudo}rm -f ${lib64_link_dir}/libtaos.* || :
  #${csudo}rm -rf ${v15_java_app_dir}              || :
  ${csudo}cp -rf ${script_dir}/driver/* ${install_main_dir}/driver && ${csudo}chmod 777 ${install_main_dir}/driver/*

  ${csudo}ln -s ${install_main_dir}/driver/libtaos.* ${lib_link_dir}/libtaos.so.1
  ${csudo}ln -s ${lib_link_dir}/libtaos.so.1 ${lib_link_dir}/libtaos.so

  if [[ -d ${lib64_link_dir} && ! -e ${lib64_link_dir}/libtaos.so ]]; then
    ${csudo}ln -s ${install_main_dir}/driver/libtaos.* ${lib64_link_dir}/libtaos.so.1 || :
    ${csudo}ln -s ${lib64_link_dir}/libtaos.so.1 ${lib64_link_dir}/libtaos.so || :
  fi
228

Z
change  
zyyang 已提交
229
  ${csudo}ldconfig
H
hzcheng 已提交
230 231
}

232
function install_avro() {
Z
change  
zyyang 已提交
233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250
  if [ "$osType" != "Darwin" ]; then
    avro_dir=${script_dir}/avro
    if [ -f "${avro_dir}/lib/libavro.so.23.0.0" ] && [ -d /usr/local/$1 ]; then
      ${csudo}/usr/bin/install -c -d /usr/local/$1
      ${csudo}/usr/bin/install -c -m 755 ${avro_dir}/lib/libavro.so.23.0.0 /usr/local/$1
      ${csudo}ln -sf /usr/local/$1/libavro.so.23.0.0 /usr/local/$1/libavro.so.23
      ${csudo}ln -sf /usr/local/$1/libavro.so.23 /usr/local/$1/libavro.so

      ${csudo}/usr/bin/install -c -d /usr/local/$1
      [ -f ${avro_dir}/lib/libavro.a ] &&
        ${csudo}/usr/bin/install -c -m 755 ${avro_dir}/lib/libavro.a /usr/local/$1

      if [ -d /etc/ld.so.conf.d ]; then
        echo "/usr/local/$1" | ${csudo}tee /etc/ld.so.conf.d/libavro.conf >/dev/null || echo -e "failed to write /etc/ld.so.conf.d/libavro.conf"
        ${csudo}ldconfig
      else
        echo "/etc/ld.so.conf.d not found!"
      fi
251
    fi
Z
change  
zyyang 已提交
252
  fi
253 254
}

255
function install_jemalloc() {
Z
change  
zyyang 已提交
256
  jemalloc_dir=${script_dir}/jemalloc
257

Z
change  
zyyang 已提交
258 259
  if [ -d ${jemalloc_dir} ]; then
    ${csudo}/usr/bin/install -c -d /usr/local/bin
260

Z
change  
zyyang 已提交
261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297
    if [ -f ${jemalloc_dir}/bin/jemalloc-config ]; then
      ${csudo}/usr/bin/install -c -m 755 ${jemalloc_dir}/bin/jemalloc-config /usr/local/bin
    fi
    if [ -f ${jemalloc_dir}/bin/jemalloc.sh ]; then
      ${csudo}/usr/bin/install -c -m 755 ${jemalloc_dir}/bin/jemalloc.sh /usr/local/bin
    fi
    if [ -f ${jemalloc_dir}/bin/jeprof ]; then
      ${csudo}/usr/bin/install -c -m 755 ${jemalloc_dir}/bin/jeprof /usr/local/bin
    fi
    if [ -f ${jemalloc_dir}/include/jemalloc/jemalloc.h ]; then
      ${csudo}/usr/bin/install -c -d /usr/local/include/jemalloc
      ${csudo}/usr/bin/install -c -m 644 ${jemalloc_dir}/include/jemalloc/jemalloc.h /usr/local/include/jemalloc
    fi
    if [ -f ${jemalloc_dir}/lib/libjemalloc.so.2 ]; then
      ${csudo}/usr/bin/install -c -d /usr/local/lib
      ${csudo}/usr/bin/install -c -m 755 ${jemalloc_dir}/lib/libjemalloc.so.2 /usr/local/lib
      ${csudo}ln -sf libjemalloc.so.2 /usr/local/lib/libjemalloc.so
      ${csudo}/usr/bin/install -c -d /usr/local/lib
      if [ -f ${jemalloc_dir}/lib/libjemalloc.a ]; then
        ${csudo}/usr/bin/install -c -m 755 ${jemalloc_dir}/lib/libjemalloc.a /usr/local/lib
      fi
      if [ -f ${jemalloc_dir}/lib/libjemalloc_pic.a ]; then
        ${csudo}/usr/bin/install -c -m 755 ${jemalloc_dir}/lib/libjemalloc_pic.a /usr/local/lib
      fi
      if [ -f ${jemalloc_dir}/lib/libjemalloc_pic.a ]; then
        ${csudo}/usr/bin/install -c -d /usr/local/lib/pkgconfig
        ${csudo}/usr/bin/install -c -m 644 ${jemalloc_dir}/lib/pkgconfig/jemalloc.pc /usr/local/lib/pkgconfig
      fi
    fi
    if [ -f ${jemalloc_dir}/share/doc/jemalloc/jemalloc.html ]; then
      ${csudo}/usr/bin/install -c -d /usr/local/share/doc/jemalloc
      ${csudo}/usr/bin/install -c -m 644 ${jemalloc_dir}/share/doc/jemalloc/jemalloc.html /usr/local/share/doc/jemalloc
    fi
    if [ -f ${jemalloc_dir}/share/man/man3/jemalloc.3 ]; then
      ${csudo}/usr/bin/install -c -d /usr/local/share/man/man3
      ${csudo}/usr/bin/install -c -m 644 ${jemalloc_dir}/share/man/man3/jemalloc.3 /usr/local/share/man/man3
    fi
298

Z
change  
zyyang 已提交
299 300 301 302 303
    if [ -d /etc/ld.so.conf.d ]; then
      echo "/usr/local/lib" | ${csudo}tee /etc/ld.so.conf.d/jemalloc.conf >/dev/null || echo -e "failed to write /etc/ld.so.conf.d/jemalloc.conf"
      ${csudo}ldconfig
    else
      echo "/etc/ld.so.conf.d not found!"
304
    fi
Z
change  
zyyang 已提交
305
  fi
306 307
}

H
hzcheng 已提交
308
function install_header() {
Z
change  
zyyang 已提交
309 310 311 312 313
  ${csudo}rm -f ${inc_link_dir}/taos.h ${inc_link_dir}/taosdef.h ${inc_link_dir}/taoserror.h || :
  ${csudo}cp -f ${script_dir}/inc/* ${install_main_dir}/include && ${csudo}chmod 644 ${install_main_dir}/include/*
  ${csudo}ln -s ${install_main_dir}/include/taos.h ${inc_link_dir}/taos.h
  ${csudo}ln -s ${install_main_dir}/include/taosdef.h ${inc_link_dir}/taosdef.h
  ${csudo}ln -s ${install_main_dir}/include/taoserror.h ${inc_link_dir}/taoserror.h
H
hzcheng 已提交
314 315
}

H
Hui Li 已提交
316 317 318 319 320 321 322
function add_newHostname_to_hosts() {
  localIp="127.0.0.1"
  OLD_IFS="$IFS"
  IFS=" "
  iphost=$(cat /etc/hosts | grep $1 | awk '{print $1}')
  arr=($iphost)
  IFS="$OLD_IFS"
Z
change  
zyyang 已提交
323
  for s in "${arr[@]}"; do
H
Hui Li 已提交
324 325 326
    if [[ "$s" == "$localIp" ]]; then
      return
    fi
327
  done
Z
change  
zyyang 已提交
328
  ${csudo}echo "127.0.0.1  $1" >>/etc/hosts || :
H
Hui Li 已提交
329 330 331 332
}

function set_hostname() {
  echo -e -n "${GREEN}Please enter one hostname(must not be 'localhost')${NC}:"
Z
change  
zyyang 已提交
333
  read newHostname
H
Hui Li 已提交
334 335 336 337 338 339 340 341
  while true; do
    if [[ ! -z "$newHostname" && "$newHostname" != "localhost" ]]; then
      break
    else
      read -p "Please enter one hostname(must not be 'localhost'):" newHostname
    fi
  done

Z
change  
zyyang 已提交
342 343
  ${csudo}hostname $newHostname || :
  retval=$(echo $?)
H
Hui Li 已提交
344
  if [[ $retval != 0 ]]; then
Z
change  
zyyang 已提交
345 346 347
    echo
    echo "set hostname fail!"
    return
H
Hui Li 已提交
348
  fi
349

H
Hui Li 已提交
350 351
  #ubuntu/centos /etc/hostname
  if [[ -e /etc/hostname ]]; then
Z
change  
zyyang 已提交
352
    ${csudo}echo $newHostname >/etc/hostname || :
H
Hui Li 已提交
353
  fi
354

H
Hui Li 已提交
355 356
  #debian: #HOSTNAME=yourname
  if [[ -e /etc/sysconfig/network ]]; then
Z
change  
zyyang 已提交
357
    ${csudo}sed -i -r "s/#*\s*(HOSTNAME=\s*).*/\1$newHostname/" /etc/sysconfig/network || :
H
Hui Li 已提交
358 359
  fi

Z
change  
zyyang 已提交
360
  ${csudo}sed -i -r "s/#*\s*(fqdn\s*).*/\1$newHostname/" ${cfg_install_dir}/${configFile}
361 362
  serverFqdn=$newHostname

H
Hui Li 已提交
363 364 365 366 367 368 369 370 371 372 373
  if [[ -e /etc/hosts ]]; then
    add_newHostname_to_hosts $newHostname
  fi
}

function is_correct_ipaddr() {
  newIp=$1
  OLD_IFS="$IFS"
  IFS=" "
  arr=($iplist)
  IFS="$OLD_IFS"
Z
change  
zyyang 已提交
374 375 376 377
  for s in "${arr[@]}"; do
    if [[ "$s" == "$newIp" ]]; then
      return 0
    fi
H
Hui Li 已提交
378
  done
379

H
Hui Li 已提交
380 381 382 383
  return 1
}

function set_ipAsFqdn() {
Z
change  
zyyang 已提交
384
  iplist=$(ip address | grep inet | grep -v inet6 | grep -v 127.0.0.1 | awk '{print $2}' | awk -F "/" '{print $1}') || :
H
Hui Li 已提交
385
  if [ -z "$iplist" ]; then
Z
change  
zyyang 已提交
386
    iplist=$(ifconfig | grep inet | grep -v inet6 | grep -v 127.0.0.1 | awk '{print $2}' | awk -F ":" '{print $2}') || :
H
Hui Li 已提交
387 388 389 390 391 392
  fi

  if [ -z "$iplist" ]; then
    echo
    echo -e -n "${GREEN}Unable to get local ip, use 127.0.0.1${NC}"
    localFqdn="127.0.0.1"
393
    # Write the local FQDN to configuration file
Z
change  
zyyang 已提交
394
    ${csudo}sed -i -r "s/#*\s*(fqdn\s*).*/\1$localFqdn/" ${cfg_install_dir}/${configFile}
H
Hui Li 已提交
395 396 397
    serverFqdn=$localFqdn
    echo
    return
398 399
  fi

H
Hui Li 已提交
400 401 402 403 404 405 406
  echo -e -n "${GREEN}Please choose an IP from local IP list${NC}:"
  echo
  echo -e -n "${GREEN}$iplist${NC}"
  echo
  echo
  echo -e -n "${GREEN}Notes: if IP is used as the node name, data can NOT be migrated to other machine directly${NC}:"
  read localFqdn
Z
change  
zyyang 已提交
407 408 409 410 411 412
  while true; do
    if [ ! -z "$localFqdn" ]; then
      # Check if correct ip address
      is_correct_ipaddr $localFqdn
      retval=$(echo $?)
      if [[ $retval != 0 ]]; then
H
Hui Li 已提交
413
        read -p "Please choose an IP from local IP list:" localFqdn
Z
change  
zyyang 已提交
414 415
      else
        # Write the local FQDN to configuration file
Z
change  
zyyang 已提交
416
        ${csudo}sed -i -r "s/#*\s*(fqdn\s*).*/\1$localFqdn/" ${cfg_install_dir}/${configFile}
Z
change  
zyyang 已提交
417 418
        serverFqdn=$localFqdn
        break
H
Hui Li 已提交
419
      fi
Z
change  
zyyang 已提交
420 421 422 423
    else
      read -p "Please choose an IP from local IP list:" localFqdn
    fi
  done
H
Hui Li 已提交
424 425 426
}

function local_fqdn_check() {
H
[NONE]  
Hui Li 已提交
427
  #serverFqdn=$(hostname)
H
Hui Li 已提交
428 429 430
  echo
  echo -e -n "System hostname is: ${GREEN}$serverFqdn${NC}"
  echo
Z
change  
zyyang 已提交
431
  if [[ "$serverFqdn" == "" ]] || [[ "$serverFqdn" == "localhost" ]]; then
H
Hui Li 已提交
432 433
    echo -e -n "${GREEN}It is strongly recommended to configure a hostname for this machine ${NC}"
    echo
434

Z
change  
zyyang 已提交
435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456
    while true; do
      read -r -p "Set hostname now? [Y/n] " input
      if [ ! -n "$input" ]; then
        set_hostname
        break
      else
        case $input in
        [yY][eE][sS] | [yY])
          set_hostname
          break
          ;;

        [nN][oO] | [nN])
          set_ipAsFqdn
          break
          ;;

        *)
          echo "Invalid input..."
          ;;
        esac
      fi
H
Hui Li 已提交
457 458 459 460
    done
  fi
}

461
function install_taosadapter_config() {
Z
change  
zyyang 已提交
462 463 464 465 466
  if [ ! -f "${cfg_install_dir}/taosadapter.toml" ]; then
    ${csudo}mkdir -p ${cfg_install_dir}
    [ -f ${script_dir}/cfg/taosadapter.toml ] && ${csudo}cp ${script_dir}/cfg/taosadapter.toml ${cfg_install_dir}
    [ -f ${cfg_install_dir}/taosadapter.toml ] && ${csudo}chmod 644 ${cfg_install_dir}/taosadapter.toml
  fi
467

Z
change  
zyyang 已提交
468 469
  [ -f ${script_dir}/cfg/taosadapter.toml ] &&
    ${csudo}cp -f ${script_dir}/cfg/taosadapter.toml ${cfg_install_dir}/taosadapter.toml.new
470

Z
change  
zyyang 已提交
471 472
  [ -f ${cfg_install_dir}/taosadapter.toml ] &&
    ${csudo}ln -s ${cfg_install_dir}/taosadapter.toml ${install_main_dir}/cfg/taosadapter.toml
473

Z
change  
zyyang 已提交
474
  [ ! -z $1 ] && return 0 || : # only install client
475 476 477

}

H
hzcheng 已提交
478
function install_config() {
479

Z
change  
zyyang 已提交
480
  if [ ! -f "${cfg_install_dir}/${configFile}" ]; then
Z
change  
zyyang 已提交
481
    ${csudo}mkdir -p ${cfg_install_dir}
Z
change  
zyyang 已提交
482
    [ -f ${script_dir}/cfg/${configFile} ] && ${csudo}cp ${script_dir}/cfg/${configFile} ${cfg_install_dir}
Z
change  
zyyang 已提交
483 484
    ${csudo}chmod 644 ${cfg_install_dir}/*
  fi
S
slguan 已提交
485

Z
change  
zyyang 已提交
486 487
  ${csudo}cp -f ${script_dir}/cfg/${configFile} ${cfg_install_dir}/${configFile}.new
  ${csudo}ln -s ${cfg_install_dir}/${configFile} ${install_main_dir}/cfg
488

Z
change  
zyyang 已提交
489
  [ ! -z $1 ] && return 0 || : # only install client
490

Z
change  
zyyang 已提交
491 492 493
  if ((${update_flag} == 1)); then
    return 0
  fi
494

Z
change  
zyyang 已提交
495 496 497
  if [ "$interactiveFqdn" == "no" ]; then
    return 0
  fi
S
slguan 已提交
498

Z
change  
zyyang 已提交
499
  local_fqdn_check
H
Hui Li 已提交
500

Z
change  
zyyang 已提交
501 502
  # first full-qualified domain name (FQDN) for TDengine cluster system
  echo
Z
change  
zyyang 已提交
503
  echo -e -n "${GREEN}Enter FQDN:port (like h1.${emailName}:6030) of an existing ${productName} cluster node to join${NC}"
Z
change  
zyyang 已提交
504 505 506 507 508
  echo
  echo -e -n "${GREEN}OR leave it blank to build one${NC}:"
  read firstEp
  while true; do
    if [ ! -z "$firstEp" ]; then
Z
change  
zyyang 已提交
509
      ${csudo}sed -i -r "s/#*\s*(firstEp\s*).*/\1$firstEp/" ${cfg_install_dir}/${configFile}
Z
change  
zyyang 已提交
510 511 512 513 514
      break
    else
      break
    fi
  done
H
Hui Li 已提交
515

Z
change  
zyyang 已提交
516 517 518 519 520 521 522 523 524 525 526 527
  echo
  echo -e -n "${GREEN}Enter your email address for priority support or enter empty to skip${NC}: "
  read emailAddr
  while true; do
    if [ ! -z "$emailAddr" ]; then
      email_file="${install_main_dir}/email"
      ${csudo}bash -c "echo $emailAddr > ${email_file}"
      break
    else
      break
    fi
  done
H
hzcheng 已提交
528 529 530
}

function install_log() {
Z
change  
zyyang 已提交
531 532
  ${csudo}rm -rf ${log_dir} || :
  ${csudo}mkdir -p ${log_dir} && ${csudo}chmod 777 ${log_dir}
533

Z
change  
zyyang 已提交
534
  ${csudo}ln -s ${log_dir} ${install_main_dir}/log
H
hzcheng 已提交
535 536 537
}

function install_data() {
Z
change  
zyyang 已提交
538
  ${csudo}mkdir -p ${data_dir}
539

Z
change  
zyyang 已提交
540
  ${csudo}ln -s ${data_dir} ${install_main_dir}/data
H
hzcheng 已提交
541 542 543
}

function install_connector() {
Z
change  
zyyang 已提交
544
  ${csudo}cp -rf ${script_dir}/connector/ ${install_main_dir}/
H
hzcheng 已提交
545 546 547
}

function install_examples() {
Z
change  
zyyang 已提交
548 549 550
  if [ -d ${script_dir}/examples ]; then
    ${csudo}cp -rf ${script_dir}/examples/* ${install_main_dir}/examples
  fi
H
hzcheng 已提交
551 552 553
}

function clean_service_on_sysvinit() {
Z
change  
zyyang 已提交
554 555
  if pidof ${serverName} &>/dev/null; then
    ${csudo}service ${serverName} stop || :
Z
change  
zyyang 已提交
556
  fi
557

Z
change  
zyyang 已提交
558 559 560
  if pidof tarbitrator &>/dev/null; then
    ${csudo}service tarbitratord stop || :
  fi
561

Z
change  
zyyang 已提交
562
  if ((${initd_mod} == 1)); then
Z
change  
zyyang 已提交
563 564
    if [ -e ${service_config_dir}/${serverName} ]; then
      ${csudo}chkconfig --del ${serverName} || :
H
Hui Li 已提交
565
    fi
L
lihui 已提交
566

Z
change  
zyyang 已提交
567 568 569 570
    if [ -e ${service_config_dir}/tarbitratord ]; then
      ${csudo}chkconfig --del tarbitratord || :
    fi
  elif ((${initd_mod} == 2)); then
Z
change  
zyyang 已提交
571 572
    if [ -e ${service_config_dir}/${serverName} ]; then
      ${csudo}insserv -r ${serverName} || :
Z
change  
zyyang 已提交
573 574 575
    fi
    if [ -e ${service_config_dir}/tarbitratord ]; then
      ${csudo}insserv -r tarbitratord || :
L
lihui 已提交
576
    fi
Z
change  
zyyang 已提交
577
  elif ((${initd_mod} == 3)); then
Z
change  
zyyang 已提交
578 579
    if [ -e ${service_config_dir}/${serverName} ]; then
      ${csudo}update-rc.d -f ${serverName} remove || :
Z
change  
zyyang 已提交
580 581 582 583 584
    fi
    if [ -e ${service_config_dir}/tarbitratord ]; then
      ${csudo}update-rc.d -f tarbitratord remove || :
    fi
  fi
585

Z
change  
zyyang 已提交
586
  ${csudo}rm -f ${service_config_dir}/${serverName} || :
Z
change  
zyyang 已提交
587
  ${csudo}rm -f ${service_config_dir}/tarbitratord || :
588

Z
change  
zyyang 已提交
589 590 591
  if $(which init &>/dev/null); then
    ${csudo}init q || :
  fi
H
hzcheng 已提交
592 593 594
}

function install_service_on_sysvinit() {
Z
change  
zyyang 已提交
595 596 597 598
  clean_service_on_sysvinit
  sleep 1

  if ((${os_type} == 1)); then
Z
change  
zyyang 已提交
599 600
    ${csudo}cp -f ${script_dir}/init.d/${serverName}.deb ${install_main_dir}/init.d/${serverName}
    ${csudo}cp ${script_dir}/init.d/${serverName}.deb ${service_config_dir}/${serverName} && ${csudo}chmod a+x ${service_config_dir}/${serverName}
Z
change  
zyyang 已提交
601 602 603
    ${csudo}cp -f ${script_dir}/init.d/tarbitratord.deb ${install_main_dir}/init.d/tarbitratord
    ${csudo}cp ${script_dir}/init.d/tarbitratord.deb ${service_config_dir}/tarbitratord && ${csudo}chmod a+x ${service_config_dir}/tarbitratord
  elif ((${os_type} == 2)); then
Z
change  
zyyang 已提交
604 605
    ${csudo}cp -f ${script_dir}/init.d/${serverName}.rpm ${install_main_dir}/init.d/${serverName}
    ${csudo}cp ${script_dir}/init.d/${serverName}.rpm ${service_config_dir}/${serverName} && ${csudo}chmod a+x ${service_config_dir}/${serverName}
Z
change  
zyyang 已提交
606 607 608
    ${csudo}cp -f ${script_dir}/init.d/tarbitratord.rpm ${install_main_dir}/init.d/tarbitratord
    ${csudo}cp ${script_dir}/init.d/tarbitratord.rpm ${service_config_dir}/tarbitratord && ${csudo}chmod a+x ${service_config_dir}/tarbitratord
  fi
609

Z
change  
zyyang 已提交
610
  if ((${initd_mod} == 1)); then
Z
change  
zyyang 已提交
611 612
    ${csudo}chkconfig --add ${serverName} || :
    ${csudo}chkconfig --level 2345 ${serverName} on || :
Z
change  
zyyang 已提交
613 614 615
    ${csudo}chkconfig --add tarbitratord || :
    ${csudo}chkconfig --level 2345 tarbitratord on || :
  elif ((${initd_mod} == 2)); then
Z
change  
zyyang 已提交
616 617
    ${csudo}insserv ${serverName} || :
    ${csudo}insserv -d ${serverName} || :
Z
change  
zyyang 已提交
618 619 620
    ${csudo}insserv tarbitratord || :
    ${csudo}insserv -d tarbitratord || :
  elif ((${initd_mod} == 3)); then
Z
change  
zyyang 已提交
621
    ${csudo}update-rc.d ${serverName} defaults || :
Z
change  
zyyang 已提交
622 623
    ${csudo}update-rc.d tarbitratord defaults || :
  fi
H
hzcheng 已提交
624 625 626
}

function clean_service_on_systemd() {
Z
change  
zyyang 已提交
627 628 629 630
  taosd_service_config="${service_config_dir}/${serverName}.service"
  if systemctl is-active --quiet ${serverName}; then
    echo "${productName} is running, stopping it..."
    ${csudo}systemctl stop ${serverName} &>/dev/null || echo &>/dev/null
Z
change  
zyyang 已提交
631
  fi
Z
change  
zyyang 已提交
632
  ${csudo}systemctl disable ${serverName} &>/dev/null || echo &>/dev/null
Z
change  
zyyang 已提交
633
  ${csudo}rm -f ${taosd_service_config}
634

Z
change  
zyyang 已提交
635 636 637 638 639 640 641
  tarbitratord_service_config="${service_config_dir}/tarbitratord.service"
  if systemctl is-active --quiet tarbitratord; then
    echo "tarbitrator is running, stopping it..."
    ${csudo}systemctl stop tarbitratord &>/dev/null || echo &>/dev/null
  fi
  ${csudo}systemctl disable tarbitratord &>/dev/null || echo &>/dev/null
  ${csudo}rm -f ${tarbitratord_service_config}
642

Z
change  
zyyang 已提交
643 644 645
  if [ "$verMode" == "cluster" ]; then
    nginx_service_config="${service_config_dir}/nginxd.service"
    if systemctl is-active --quiet nginxd; then
Z
change  
zyyang 已提交
646
      echo "Nginx for ${productName} is running, stopping it..."
Z
change  
zyyang 已提交
647
      ${csudo}systemctl stop nginxd &>/dev/null || echo &>/dev/null
648
    fi
Z
change  
zyyang 已提交
649 650 651
    ${csudo}systemctl disable nginxd &>/dev/null || echo &>/dev/null
    ${csudo}rm -f ${nginx_service_config}
  fi
S
slguan 已提交
652
}
H
hzcheng 已提交
653 654

function install_service_on_systemd() {
Z
change  
zyyang 已提交
655
  clean_service_on_systemd
H
hzcheng 已提交
656

Z
change  
zyyang 已提交
657 658
  [ -f ${script_dir}/cfg/${serverName}.service ] &&
    ${csudo}cp ${script_dir}/cfg/${serverName}.service \
Z
change  
zyyang 已提交
659 660 661
      ${service_config_dir}/ || :
  ${csudo}systemctl daemon-reload

Z
change  
zyyang 已提交
662
  ${csudo}systemctl enable ${serverName}
Z
change  
zyyang 已提交
663 664 665 666 667 668 669 670 671

  [ -f ${script_dir}/cfg/tarbitratord.service ] &&
    ${csudo}cp ${script_dir}/cfg/tarbitratord.service \
      ${service_config_dir}/ || :
  ${csudo}systemctl daemon-reload

  if [ "$verMode" == "cluster" ]; then
    [ -f ${script_dir}/cfg/nginxd.service ] &&
      ${csudo}cp ${script_dir}/cfg/nginxd.service \
672
        ${service_config_dir}/ || :
673
    ${csudo}systemctl daemon-reload
674

Z
change  
zyyang 已提交
675 676 677
    if ! ${csudo}systemctl enable nginxd &>/dev/null; then
      ${csudo}systemctl daemon-reexec
      ${csudo}systemctl enable nginxd
678
    fi
Z
change  
zyyang 已提交
679 680
    ${csudo}systemctl start nginxd
  fi
H
hzcheng 已提交
681 682
}

683
function install_taosadapter_service() {
Z
change  
zyyang 已提交
684 685 686 687 688 689
  if ((${service_mod} == 0)); then
    [ -f ${script_dir}/cfg/taosadapter.service ] &&
      ${csudo}cp ${script_dir}/cfg/taosadapter.service \
        ${service_config_dir}/ || :
    ${csudo}systemctl daemon-reload
  fi
690 691
}

H
hzcheng 已提交
692
function install_service() {
Z
change  
zyyang 已提交
693 694 695 696 697
  if ((${service_mod} == 0)); then
    install_service_on_systemd
  elif ((${service_mod} == 1)); then
    install_service_on_sysvinit
  else
Z
change  
zyyang 已提交
698
    kill_process ${serverName}
Z
change  
zyyang 已提交
699
  fi
H
hzcheng 已提交
700 701
}

Z
change  
zyyang 已提交
702 703
vercomp() {
  if [[ $1 == $2 ]]; then
H
hzcheng 已提交
704
    return 0
Z
change  
zyyang 已提交
705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725
  fi
  local IFS=.
  local i ver1=($1) ver2=($2)
  # fill empty fields in ver1 with zeros
  for ((i = ${#ver1[@]}; i < ${#ver2[@]}; i++)); do
    ver1[i]=0
  done

  for ((i = 0; i < ${#ver1[@]}; i++)); do
    if [[ -z ${ver2[i]} ]]; then
      # fill empty fields in ver2 with zeros
      ver2[i]=0
    fi
    if ((10#${ver1[i]} > 10#${ver2[i]})); then
      return 1
    fi
    if ((10#${ver1[i]} < 10#${ver2[i]})); then
      return 2
    fi
  done
  return 0
H
hzcheng 已提交
726 727 728 729
}

function is_version_compatible() {

Z
change  
zyyang 已提交
730
  curr_version=$(ls ${script_dir}/driver/libtaos.so* | awk -F 'libtaos.so.' '{print $2}')
H
hzcheng 已提交
731

Z
change  
zyyang 已提交
732 733 734
  if [ -f ${script_dir}/driver/vercomp.txt ]; then
    min_compatible_version=$(cat ${script_dir}/driver/vercomp.txt)
  else
Z
change  
zyyang 已提交
735
    min_compatible_version=$(${script_dir}/bin/${serverName} -V | head -1 | cut -d ' ' -f 5)
Z
change  
zyyang 已提交
736
  fi
H
hzcheng 已提交
737

Z
change  
zyyang 已提交
738 739
  #exist_version=$(/usr/local/taos/bin/taosd -V | head -1 | cut -d ' ' -f 3)
  exist_version=${install_main_dir}/bin/${serverName} "-V | head -1 | cut -d ' ' -f 3"
Z
change  
zyyang 已提交
740 741 742 743 744 745
  vercomp $exist_version "2.0.16.0"
  case $? in
  2)
    prompt_force=1
    ;;
  esac
746

Z
change  
zyyang 已提交
747 748
  vercomp $curr_version $min_compatible_version
  echo "" # avoid $? value not update
749

Z
change  
zyyang 已提交
750 751 752 753 754
  case $? in
  0) return 0 ;;
  1) return 0 ;;
  2) return 1 ;;
  esac
H
hzcheng 已提交
755 756 757
}

function update_TDengine() {
Z
change  
zyyang 已提交
758 759 760 761 762
  # Check if version compatible
  if ! is_version_compatible; then
    echo -e "${RED}Version incompatible${NC}"
    return 1
  fi
763

Z
change  
zyyang 已提交
764
  # Start to update
Z
change  
zyyang 已提交
765 766
  if [ ! -e ${tarName} ]; then
    echo "File ${tarName} does not exist"
Z
change  
zyyang 已提交
767 768
    exit 1
  fi
Z
change  
zyyang 已提交
769
  tar -zxf ${tarName}
Z
change  
zyyang 已提交
770 771 772 773
  install_jemalloc

  echo -e "${GREEN}Start to update TDengine...${NC}"
  # Stop the service if running
Z
change  
zyyang 已提交
774
  if pidof ${serverName} &>/dev/null; then
Z
change  
zyyang 已提交
775
    if ((${service_mod} == 0)); then
Z
change  
zyyang 已提交
776
      ${csudo}systemctl stop ${serverName} || :
Z
change  
zyyang 已提交
777
    elif ((${service_mod} == 1)); then
Z
change  
zyyang 已提交
778
      ${csudo}service ${serverName} stop || :
Z
change  
zyyang 已提交
779
    else
Z
change  
zyyang 已提交
780
      kill_process ${serverName}
H
hzcheng 已提交
781
    fi
Z
change  
zyyang 已提交
782 783 784 785 786 787 788 789 790 791 792 793 794
    sleep 1
  fi

  if [ "$verMode" == "cluster" ]; then
    if pidof nginx &>/dev/null; then
      if ((${service_mod} == 0)); then
        ${csudo}systemctl stop nginxd || :
      elif ((${service_mod} == 1)); then
        ${csudo}service nginxd stop || :
      else
        kill_process nginx
      fi
      sleep 1
795
    fi
Z
change  
zyyang 已提交
796
  fi
797

Z
change  
zyyang 已提交
798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814
  install_main_path

  install_log
  install_header
  install_lib
  if [ "$pagMode" != "lite" ]; then
    install_connector
  fi
  install_examples
  if [ -z $1 ]; then
    install_bin
    install_service
    install_taosadapter_service
    install_config
    install_taosadapter_config

    openresty_work=false
815
    if [ "$verMode" == "cluster" ]; then
Z
change  
zyyang 已提交
816 817 818 819
      # Check if openresty is installed
      # Check if nginx is installed successfully
      if type curl &>/dev/null; then
        if curl -sSf http://127.0.0.1:${nginx_port} &>/dev/null; then
Z
change  
zyyang 已提交
820
          echo -e "\033[44;32;1mNginx for ${productName} is updated successfully!${NC}"
Z
change  
zyyang 已提交
821
          openresty_work=true
822
        else
Z
change  
zyyang 已提交
823
          echo -e "\033[44;31;5mNginx for ${productName} does not work! Please try again!\033[0m"
H
hzcheng 已提交
824
        fi
825
      fi
H
hzcheng 已提交
826
    fi
827

Z
change  
zyyang 已提交
828
    echo
Z
change  
zyyang 已提交
829 830
    echo -e "${GREEN_DARK}To configure ${productName} ${NC}: edit ${cfg_install_dir}/${configFile}"
    echo -e "${GREEN_DARK}To configure Taos Adapter (if has) ${NC}: edit ${cfg_install_dir}/taosadapter.toml"
Z
change  
zyyang 已提交
831
    if ((${service_mod} == 0)); then
Z
change  
zyyang 已提交
832
      echo -e "${GREEN_DARK}To start ${productName}     ${NC}: ${csudo}systemctl start ${serverName}${NC}"
Z
change  
zyyang 已提交
833
    elif ((${service_mod} == 1)); then
Z
change  
zyyang 已提交
834
      echo -e "${GREEN_DARK}To start ${productName}     ${NC}: ${csudo}service ${serverName} start${NC}"
Z
change  
zyyang 已提交
835 836
    else
      echo -e "${GREEN_DARK}To start Taos Adapter (if has)${NC}: taosadapter &${NC}"
Z
change  
zyyang 已提交
837
      echo -e "${GREEN_DARK}To start ${productName}     ${NC}: ./${serverName}${NC}"
L
lihui 已提交
838
    fi
H
hzcheng 已提交
839

Z
change  
zyyang 已提交
840
    if [ ${openresty_work} = 'true' ]; then
Z
change  
zyyang 已提交
841
      echo -e "${GREEN_DARK}To access ${productName}    ${NC}: use ${GREEN_UNDERLINE}${clientName} -h $serverFqdn${NC} in shell OR from ${GREEN_UNDERLINE}http://127.0.0.1:${nginx_port}${NC}"
H
hzcheng 已提交
842
    else
Z
change  
zyyang 已提交
843
      echo -e "${GREEN_DARK}To access ${productName}    ${NC}: use ${GREEN_UNDERLINE}${clientName} -h $serverFqdn${NC} in shell${NC}"
Z
change  
zyyang 已提交
844
    fi
H
hzcheng 已提交
845

Z
change  
zyyang 已提交
846 847
    if ((${prompt_force} == 1)); then
      echo ""
Z
change  
zyyang 已提交
848
      echo -e "${RED}Please run '${serverName} --force-keep-file' at first time for the exist ${productName} $exist_version!${NC}"
H
hzcheng 已提交
849
    fi
Z
change  
zyyang 已提交
850
    echo
Z
change  
zyyang 已提交
851
    echo -e "\033[44;32;1m${productName} is updated successfully!${NC}"
Z
change  
zyyang 已提交
852 853 854
  else
    install_bin
    install_config
H
hzcheng 已提交
855

Z
change  
zyyang 已提交
856
    echo
Z
change  
zyyang 已提交
857
    echo -e "\033[44;32;1m${productName} client is updated successfully!${NC}"
Z
change  
zyyang 已提交
858 859
  fi

Z
change  
zyyang 已提交
860
  rm -rf $(tar -tf ${tarName})
H
hzcheng 已提交
861 862 863
}

function install_TDengine() {
Z
change  
zyyang 已提交
864
  # Start to install
Z
change  
zyyang 已提交
865 866
  if [ ! -e ${tarName} ]; then
    echo "File ${tarName} does not exist"
Z
change  
zyyang 已提交
867 868
    exit 1
  fi
Z
change  
zyyang 已提交
869
  tar -zxf ${tarName}
H
hzcheng 已提交
870

Z
change  
zyyang 已提交
871
  echo -e "${GREEN}Start to install ${productName}...${NC}"
872

Z
change  
zyyang 已提交
873
  install_main_path
874

Z
change  
zyyang 已提交
875 876 877
  if [ -z $1 ]; then
    install_data
  fi
878

Z
change  
zyyang 已提交
879 880 881 882 883 884
  install_log
  install_header
  install_lib
  install_jemalloc
  #install_avro lib
  #install_avro lib64
885

Z
change  
zyyang 已提交
886 887 888 889 890 891 892 893 894 895
  if [ "$pagMode" != "lite" ]; then
    install_connector
  fi
  install_examples

  if [ -z $1 ]; then # install service and client
    # For installing new
    install_bin
    install_service
    install_taosadapter_service
896

Z
change  
zyyang 已提交
897 898 899 900 901
    openresty_work=false
    if [ "$verMode" == "cluster" ]; then
      # Check if nginx is installed successfully
      if type curl &>/dev/null; then
        if curl -sSf http://127.0.0.1:${nginx_port} &>/dev/null; then
Z
change  
zyyang 已提交
902
          echo -e "\033[44;32;1mNginx for ${productName} is installed successfully!${NC}"
Z
change  
zyyang 已提交
903
          openresty_work=true
H
hzcheng 已提交
904
        else
Z
change  
zyyang 已提交
905
          echo -e "\033[44;31;5mNginx for ${productName} does not work! Please try again!\033[0m"
906
        fi
Z
change  
zyyang 已提交
907 908
      fi
    fi
H
Hui Li 已提交
909

Z
change  
zyyang 已提交
910
    install_config
911

Z
change  
zyyang 已提交
912 913
    # Ask if to start the service
    echo
Z
change  
zyyang 已提交
914 915
    echo -e "${GREEN_DARK}To configure ${productName} ${NC}: edit ${cfg_install_dir}/${configFile}"
    echo -e "${GREEN_DARK}To configure taosadapter (if has) ${NC}: edit ${cfg_install_dir}/taosadapter.toml"
Z
change  
zyyang 已提交
916
    if ((${service_mod} == 0)); then
Z
change  
zyyang 已提交
917
      echo -e "${GREEN_DARK}To start ${productName}     ${NC}: ${csudo}systemctl start ${serverName}${NC}"
Z
change  
zyyang 已提交
918
    elif ((${service_mod} == 1)); then
Z
change  
zyyang 已提交
919
      echo -e "${GREEN_DARK}To start ${productName}     ${NC}: ${csudo}service ${serverName} start${NC}"
Z
change  
zyyang 已提交
920 921
    else
      echo -e "${GREEN_DARK}To start Taos Adapter (if has)${NC}: taosadapter &${NC}"
Z
change  
zyyang 已提交
922
      echo -e "${GREEN_DARK}To start ${productName}     ${NC}: ${serverName}${NC}"
H
hzcheng 已提交
923
    fi
924

Z
change  
zyyang 已提交
925 926 927 928 929 930 931 932 933
    if [ ! -z "$firstEp" ]; then
      tmpFqdn=${firstEp%%:*}
      substr=":"
      if [[ $firstEp =~ $substr ]]; then
        tmpPort=${firstEp#*:}
      else
        tmpPort=""
      fi
      if [[ "$tmpPort" != "" ]]; then
Z
change  
zyyang 已提交
934
        echo -e "${GREEN_DARK}To access ${productName}    ${NC}: ${clientName} -h $tmpFqdn -P $tmpPort${GREEN_DARK} to login into cluster, then${NC}"
Z
change  
zyyang 已提交
935
      else
Z
change  
zyyang 已提交
936
        echo -e "${GREEN_DARK}To access ${productName}    ${NC}: ${clientName} -h $tmpFqdn${GREEN_DARK} to login into cluster, then${NC}"
Z
change  
zyyang 已提交
937 938 939 940
      fi
      echo -e "${GREEN_DARK}execute ${NC}: create dnode 'newDnodeFQDN:port'; ${GREEN_DARK}to add this new node${NC}"
      echo
    elif [ ! -z "$serverFqdn" ]; then
Z
change  
zyyang 已提交
941
      echo -e "${GREEN_DARK}To access ${productName}    ${NC}: ${clientName} -h $serverFqdn${GREEN_DARK} to login into ${productName} server${NC}"
Z
change  
zyyang 已提交
942 943 944
      echo
    fi

Z
change  
zyyang 已提交
945
    echo -e "\033[44;32;1m${productName} is installed successfully!${NC}"
Z
change  
zyyang 已提交
946 947 948 949 950
    echo
  else # Only install client
    install_bin
    install_config
    echo
Z
change  
zyyang 已提交
951
    echo -e "\033[44;32;1m${productName} client is installed successfully!${NC}"
Z
change  
zyyang 已提交
952
  fi
H
hzcheng 已提交
953

Z
change  
zyyang 已提交
954 955
  touch ~/.${historyFile}
  rm -rf $(tar -tf ${tarName})
Z
change  
zyyang 已提交
956
}
H
hzcheng 已提交
957 958

## ==============================Main program starts from here============================
H
[NONE]  
Hui Li 已提交
959
serverFqdn=$(hostname)
H
Hui Li 已提交
960
if [ "$verType" == "server" ]; then
Z
change  
zyyang 已提交
961
  # Install server and client
Z
change  
zyyang 已提交
962
  if [ -x ${bin_dir}/${serverName} ]; then
Z
change  
zyyang 已提交
963 964 965 966 967
    update_flag=1
    update_TDengine
  else
    install_TDengine
  fi
H
Hui Li 已提交
968
elif [ "$verType" == "client" ]; then
Z
change  
zyyang 已提交
969 970
  interactiveFqdn=no
  # Only install client
Z
change  
zyyang 已提交
971
  if [ -x ${bin_dir}/${clientName} ]; then
Z
change  
zyyang 已提交
972 973 974 975 976
    update_flag=1
    update_TDengine client
  else
    install_TDengine client
  fi
977
else
Z
change  
zyyang 已提交
978
  echo "please input correct verType"
H
hzcheng 已提交
979
fi