install.sh 30.1 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"
Z
change  
zyyang 已提交
26
tarName="taos.tar.gz"
Z
change  
zyyang 已提交
27 28 29 30
dataDir="/var/lib/taos"
logDir="/var/log/taos"
configDir="/etc/taos"
installDir="/usr/local/taos"
H
hzcheng 已提交
31

Z
change  
zyyang 已提交
32 33 34
data_dir=${dataDir}
log_dir=${logDir}
cfg_install_dir=${configDir}
H
hzcheng 已提交
35 36 37

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

#install main path
Z
change  
zyyang 已提交
42
install_main_dir=${installDir}
H
hzcheng 已提交
43
# old bin dir
Z
change  
zyyang 已提交
44
bin_dir="${installDir}/bin"
H
hzcheng 已提交
45 46

service_config_dir="/etc/systemd/system"
S
slguan 已提交
47 48
nginx_port=6060
nginx_dir="/usr/local/nginxd"
H
hzcheng 已提交
49 50 51 52 53 54 55 56

# 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 已提交
57
csudo=""
Z
change  
zyyang 已提交
58 59
if command -v sudo >/dev/null; then
  csudo="sudo "
P
plum-lihui 已提交
60
fi
H
hzcheng 已提交
61

S
slguan 已提交
62
update_flag=0
63
prompt_force=0
S
slguan 已提交
64

L
lihui 已提交
65
initd_mod=0
P
plum-lihui 已提交
66
service_mod=2
Z
change  
zyyang 已提交
67 68 69 70 71 72 73 74 75 76 77 78
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 已提交
79
    service_mod=2
Z
change  
zyyang 已提交
80 81 82
  fi
else
  service_mod=2
H
hzcheng 已提交
83 84
fi

L
lihui 已提交
85 86 87
# 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 已提交
88
if [[ -e /etc/os-release ]]; then
Z
change  
zyyang 已提交
89
  osinfo=$(cat /etc/os-release | grep "NAME" | cut -d '"' -f2) || :
H
Hui Li 已提交
90 91 92
else
  osinfo=""
fi
L
lihui 已提交
93 94
#echo "osinfo: ${osinfo}"
os_type=0
Z
change  
zyyang 已提交
95 96
if echo $osinfo | grep -qwi "ubuntu"; then
  #  echo "This is ubuntu system"
L
lihui 已提交
97
  os_type=1
Z
change  
zyyang 已提交
98 99
elif echo $osinfo | grep -qwi "debian"; then
  #  echo "This is debian system"
L
lihui 已提交
100
  os_type=1
Z
change  
zyyang 已提交
101 102
elif echo $osinfo | grep -qwi "Kylin"; then
  #  echo "This is Kylin system"
L
lihui 已提交
103
  os_type=1
Z
change  
zyyang 已提交
104 105
elif echo $osinfo | grep -qwi "centos"; then
  #  echo "This is centos system"
L
lihui 已提交
106
  os_type=2
Z
change  
zyyang 已提交
107 108
elif echo $osinfo | grep -qwi "fedora"; then
  #  echo "This is fedora system"
L
lihui 已提交
109
  os_type=2
Z
change  
zyyang 已提交
110 111
elif echo $osinfo | grep -qwi "Linx"; then
  #  echo "This is Linx system"
haoranc's avatar
haoranc 已提交
112 113 114 115
  os_type=1
  service_mod=0
  initd_mod=0
  service_config_dir="/etc/systemd/system"
L
lihui 已提交
116
else
H
Hui Li 已提交
117
  echo " osinfo: ${osinfo}"
118
  echo " This is an officially unverified linux system,"
H
Hui Li 已提交
119
  echo " if there are any problems with the installation and operation, "
Z
change  
zyyang 已提交
120
  echo " please feel free to contact ${emailName} for support."
L
lihui 已提交
121
  os_type=1
L
lihui 已提交
122 123
fi

H
Hui Li 已提交
124 125 126 127 128
# =============================  get input parameters =================================================

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

# set parameters by default value
Z
change  
zyyang 已提交
129 130 131
interactiveFqdn=yes # [yes | no]
verType=server      # [server | client]
initType=systemd    # [systemd | service | ...]
H
Hui Li 已提交
132

Z
change  
zyyang 已提交
133
while getopts "hv:e:i:" arg; do
H
Hui Li 已提交
134
  case $arg in
Z
change  
zyyang 已提交
135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
  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 已提交
155 156 157
  esac
done

H
Hui Li 已提交
158
#echo "verType=${verType} interactiveFqdn=${interactiveFqdn}"
H
Hui Li 已提交
159

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

H
hzcheng 已提交
167
function install_main_path() {
Z
change  
zyyang 已提交
168 169 170 171 172
  #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
173
#  ${csudo}mkdir -p ${install_main_dir}/connector
Z
change  
zyyang 已提交
174 175 176
  ${csudo}mkdir -p ${install_main_dir}/driver
  ${csudo}mkdir -p ${install_main_dir}/examples
  ${csudo}mkdir -p ${install_main_dir}/include
177
#  ${csudo}mkdir -p ${install_main_dir}/init.d
Z
change  
zyyang 已提交
178 179 180
  if [ "$verMode" == "cluster" ]; then
    ${csudo}mkdir -p ${nginx_dir}
  fi
181

Z
change  
zyyang 已提交
182 183 184
  if [[ -e ${script_dir}/email ]]; then
    ${csudo}cp ${script_dir}/email ${install_main_dir}/ || :
  fi
H
hzcheng 已提交
185 186 187
}

function install_bin() {
Z
change  
zyyang 已提交
188
  # Remove links
Z
change  
zyyang 已提交
189 190
  ${csudo}rm -f ${bin_link_dir}/${clientName} || :
  ${csudo}rm -f ${bin_link_dir}/${serverName} || :
Z
change  
zyyang 已提交
191
  ${csudo}rm -f ${bin_link_dir}/taosadapter || :
Z
change  
zyyang 已提交
192
  ${csudo}rm -f ${bin_link_dir}/${uninstallScript} || :
Z
change  
zyyang 已提交
193 194
  ${csudo}rm -f ${bin_link_dir}/tarbitrator || :
  ${csudo}rm -f ${bin_link_dir}/set_core || :
195
  ${csudo}rm -f ${bin_link_dir}/run_taosd_and_taosadapter.sh || :
Z
change  
zyyang 已提交
196 197 198 199

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

  #Make link
Z
change  
zyyang 已提交
200 201
  [ -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 已提交
202
  [ -x ${install_main_dir}/bin/taosadapter ] && ${csudo}ln -s ${install_main_dir}/bin/taosadapter ${bin_link_dir}/taosadapter || :
Z
change  
zyyang 已提交
203
  [ -x ${install_main_dir}/bin/remove.sh ] && ${csudo}ln -s ${install_main_dir}/bin/remove.sh ${bin_link_dir}/${uninstallScript} || :
Z
change  
zyyang 已提交
204
  [ -x ${install_main_dir}/bin/set_core.sh ] && ${csudo}ln -s ${install_main_dir}/bin/set_core.sh ${bin_link_dir}/set_core || :
205
  [ -x ${install_main_dir}/bin/run_taosd_and_taosadapter.sh ] && ${csudo}ln -s ${install_main_dir}/bin/run_taosd_and_taosadapter.sh ${bin_link_dir}/run_taosd_and_taosadapter.sh     || :
Z
change  
zyyang 已提交
206 207 208 209 210 211 212
  [ -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 已提交
213 214 215
}

function install_lib() {
Z
change  
zyyang 已提交
216 217 218 219 220 221 222 223 224 225 226 227 228
  # 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
229

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

233
function install_avro() {
Z
change  
zyyang 已提交
234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251
  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
252
    fi
Z
change  
zyyang 已提交
253
  fi
254 255
}

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

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

Z
change  
zyyang 已提交
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 298
    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
299

Z
change  
zyyang 已提交
300 301 302 303 304
    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!"
305
    fi
Z
change  
zyyang 已提交
306
  fi
307 308
}

H
hzcheng 已提交
309
function install_header() {
Z
change  
zyyang 已提交
310 311 312 313 314
  ${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 已提交
315 316
}

H
Hui Li 已提交
317 318 319 320 321 322 323
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 已提交
324
  for s in "${arr[@]}"; do
H
Hui Li 已提交
325 326 327
    if [[ "$s" == "$localIp" ]]; then
      return
    fi
328
  done
Z
change  
zyyang 已提交
329
  ${csudo}echo "127.0.0.1  $1" >>/etc/hosts || :
H
Hui Li 已提交
330 331 332 333
}

function set_hostname() {
  echo -e -n "${GREEN}Please enter one hostname(must not be 'localhost')${NC}:"
Z
change  
zyyang 已提交
334
  read newHostname
H
Hui Li 已提交
335 336 337 338 339 340 341 342
  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 已提交
343 344
  ${csudo}hostname $newHostname || :
  retval=$(echo $?)
H
Hui Li 已提交
345
  if [[ $retval != 0 ]]; then
Z
change  
zyyang 已提交
346 347 348
    echo
    echo "set hostname fail!"
    return
H
Hui Li 已提交
349
  fi
350

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

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

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

H
Hui Li 已提交
364 365 366 367 368 369 370 371 372 373 374
  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 已提交
375 376 377 378
  for s in "${arr[@]}"; do
    if [[ "$s" == "$newIp" ]]; then
      return 0
    fi
H
Hui Li 已提交
379
  done
380

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

function set_ipAsFqdn() {
Z
change  
zyyang 已提交
385
  iplist=$(ip address | grep inet | grep -v inet6 | grep -v 127.0.0.1 | awk '{print $2}' | awk -F "/" '{print $1}') || :
H
Hui Li 已提交
386
  if [ -z "$iplist" ]; then
Z
change  
zyyang 已提交
387
    iplist=$(ifconfig | grep inet | grep -v inet6 | grep -v 127.0.0.1 | awk '{print $2}' | awk -F ":" '{print $2}') || :
H
Hui Li 已提交
388 389 390 391 392 393
  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"
394
    # Write the local FQDN to configuration file
Z
change  
zyyang 已提交
395
    ${csudo}sed -i -r "s/#*\s*(fqdn\s*).*/\1$localFqdn/" ${cfg_install_dir}/${configFile}
H
Hui Li 已提交
396 397 398
    serverFqdn=$localFqdn
    echo
    return
399 400
  fi

H
Hui Li 已提交
401 402 403 404 405 406 407
  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 已提交
408 409 410 411 412 413
  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 已提交
414
        read -p "Please choose an IP from local IP list:" localFqdn
Z
change  
zyyang 已提交
415 416
      else
        # Write the local FQDN to configuration file
Z
change  
zyyang 已提交
417
        ${csudo}sed -i -r "s/#*\s*(fqdn\s*).*/\1$localFqdn/" ${cfg_install_dir}/${configFile}
Z
change  
zyyang 已提交
418 419
        serverFqdn=$localFqdn
        break
H
Hui Li 已提交
420
      fi
Z
change  
zyyang 已提交
421 422 423 424
    else
      read -p "Please choose an IP from local IP list:" localFqdn
    fi
  done
H
Hui Li 已提交
425 426 427
}

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

Z
change  
zyyang 已提交
436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457
    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 已提交
458 459 460 461
    done
  fi
}

462
function install_taosadapter_config() {
Z
change  
zyyang 已提交
463 464 465 466 467
  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
468

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

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

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

}

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

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

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

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

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

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

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

Z
change  
zyyang 已提交
502 503
  # first full-qualified domain name (FQDN) for TDengine cluster system
  echo
Z
change  
zyyang 已提交
504
  echo -e -n "${GREEN}Enter FQDN:port (like h1.${emailName}:6030) of an existing ${productName} cluster node to join${NC}"
Z
change  
zyyang 已提交
505 506 507 508 509
  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 已提交
510
      ${csudo}sed -i -r "s/#*\s*(firstEp\s*).*/\1$firstEp/" ${cfg_install_dir}/${configFile}
Z
change  
zyyang 已提交
511 512 513 514 515
      break
    else
      break
    fi
  done
H
Hui Li 已提交
516

Z
change  
zyyang 已提交
517 518 519 520 521 522 523 524 525 526 527 528
  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 已提交
529 530 531
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

function clean_service_on_systemd() {
Z
change  
zyyang 已提交
628 629 630 631
  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 已提交
632
  fi
Z
change  
zyyang 已提交
633
  ${csudo}systemctl disable ${serverName} &>/dev/null || echo &>/dev/null
Z
change  
zyyang 已提交
634
  ${csudo}rm -f ${taosd_service_config}
635

Z
change  
zyyang 已提交
636 637 638 639 640 641 642
  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}
643

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

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

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

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

  [ -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 \
673
        ${service_config_dir}/ || :
674
    ${csudo}systemctl daemon-reload
675

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

684
function install_taosadapter_service() {
Z
change  
zyyang 已提交
685 686 687 688 689 690
  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
691 692
}

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

Z
change  
zyyang 已提交
703 704
vercomp() {
  if [[ $1 == $2 ]]; then
H
hzcheng 已提交
705
    return 0
Z
change  
zyyang 已提交
706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726
  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 已提交
727 728 729 730
}

function is_version_compatible() {

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

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

Z
change  
zyyang 已提交
739
  exist_version=$(${installDir}/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
  install_main_path

  install_log
  install_header
  install_lib
803 804 805
#  if [ "$pagMode" != "lite" ]; then
#    install_connector
#  fi
Z
change  
zyyang 已提交
806 807 808 809 810 811 812 813 814
  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

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

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

Z
change  
zyyang 已提交
898 899 900 901 902
    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 已提交
903
          echo -e "\033[44;32;1mNginx for ${productName} is installed successfully!${NC}"
Z
change  
zyyang 已提交
904
          openresty_work=true
H
hzcheng 已提交
905
        else
Z
change  
zyyang 已提交
906
          echo -e "\033[44;31;5mNginx for ${productName} does not work! Please try again!\033[0m"
907
        fi
Z
change  
zyyang 已提交
908 909
      fi
    fi
H
Hui Li 已提交
910

Z
change  
zyyang 已提交
911
    install_config
912

Z
change  
zyyang 已提交
913 914
    # Ask if to start the service
    echo
Z
change  
zyyang 已提交
915 916
    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 已提交
917
    if ((${service_mod} == 0)); then
Z
change  
zyyang 已提交
918
      echo -e "${GREEN_DARK}To start ${productName}     ${NC}: ${csudo}systemctl start ${serverName}${NC}"
Z
change  
zyyang 已提交
919
    elif ((${service_mod} == 1)); then
Z
change  
zyyang 已提交
920
      echo -e "${GREEN_DARK}To start ${productName}     ${NC}: ${csudo}service ${serverName} start${NC}"
Z
change  
zyyang 已提交
921 922
    else
      echo -e "${GREEN_DARK}To start Taos Adapter (if has)${NC}: taosadapter &${NC}"
Z
change  
zyyang 已提交
923
      echo -e "${GREEN_DARK}To start ${productName}     ${NC}: ${serverName}${NC}"
H
hzcheng 已提交
924
    fi
925

Z
change  
zyyang 已提交
926 927 928 929 930 931 932 933 934
    if [ ! -z "$firstEp" ]; then
      tmpFqdn=${firstEp%%:*}
      substr=":"
      if [[ $firstEp =~ $substr ]]; then
        tmpPort=${firstEp#*:}
      else
        tmpPort=""
      fi
      if [[ "$tmpPort" != "" ]]; then
Z
change  
zyyang 已提交
935
        echo -e "${GREEN_DARK}To access ${productName}    ${NC}: ${clientName} -h $tmpFqdn -P $tmpPort${GREEN_DARK} to login into cluster, then${NC}"
Z
change  
zyyang 已提交
936
      else
Z
change  
zyyang 已提交
937
        echo -e "${GREEN_DARK}To access ${productName}    ${NC}: ${clientName} -h $tmpFqdn${GREEN_DARK} to login into cluster, then${NC}"
Z
change  
zyyang 已提交
938 939 940 941
      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 已提交
942
      echo -e "${GREEN_DARK}To access ${productName}    ${NC}: ${clientName} -h $serverFqdn${GREEN_DARK} to login into ${productName} server${NC}"
Z
change  
zyyang 已提交
943 944 945
      echo
    fi

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

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

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