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"
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 192 193
  ${csudo}rm -f ${bin_link_dir}/taosadapter || :
  ${csudo}rm -f ${bin_link_dir}/taosdemo || :
  ${csudo}rm -f ${bin_link_dir}/taosdump || :
Z
change  
zyyang 已提交
194
  ${csudo}rm -f ${bin_link_dir}/${uninstallScript} || :
Z
change  
zyyang 已提交
195 196 197 198 199 200 201
  ${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 已提交
202 203
  [ -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 已提交
204
  [ -x ${install_main_dir}/bin/taosadapter ] && ${csudo}ln -s ${install_main_dir}/bin/taosadapter ${bin_link_dir}/taosadapter || :
205
  [ -x ${install_main_dir}/bin/taosBenchmark ] && ${csudo}ln -s ${install_main_dir}/bin/taosBenchmark ${bin_link_dir}/taosdemo || :
Z
change  
zyyang 已提交
206
  [ -x ${install_main_dir}/bin/taosdump ] && ${csudo}ln -s ${install_main_dir}/bin/taosdump ${bin_link_dir}/taosdump || :
Z
change  
zyyang 已提交
207
  [ -x ${install_main_dir}/bin/remove.sh ] && ${csudo}ln -s ${install_main_dir}/bin/remove.sh ${bin_link_dir}/${uninstallScript} || :
Z
change  
zyyang 已提交
208 209 210 211 212 213 214 215 216
  [ -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 已提交
217 218 219
}

function install_lib() {
Z
change  
zyyang 已提交
220 221 222 223 224 225 226 227 228 229 230 231 232
  # 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
233

Z
change  
zyyang 已提交
234
  ${csudo}ldconfig
H
hzcheng 已提交
235 236
}

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

260
function install_jemalloc() {
Z
change  
zyyang 已提交
261
  jemalloc_dir=${script_dir}/jemalloc
262

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

Z
change  
zyyang 已提交
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 299 300 301 302
    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
303

Z
change  
zyyang 已提交
304 305 306 307 308
    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!"
309
    fi
Z
change  
zyyang 已提交
310
  fi
311 312
}

H
hzcheng 已提交
313
function install_header() {
Z
change  
zyyang 已提交
314 315 316 317 318
  ${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 已提交
319 320
}

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

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

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

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

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

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

H
Hui Li 已提交
385 386 387 388
  return 1
}

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

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

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

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

466
function install_taosadapter_config() {
Z
change  
zyyang 已提交
467 468 469 470 471
  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
472

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

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

Z
change  
zyyang 已提交
479
  [ ! -z $1 ] && return 0 || : # only install client
480 481 482

}

H
hzcheng 已提交
483
function install_config() {
484

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

Z
change  
zyyang 已提交
491 492
  ${csudo}cp -f ${script_dir}/cfg/${configFile} ${cfg_install_dir}/${configFile}.new
  ${csudo}ln -s ${cfg_install_dir}/${configFile} ${install_main_dir}/cfg
493

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

Z
change  
zyyang 已提交
496 497 498
  if ((${update_flag} == 1)); then
    return 0
  fi
499

Z
change  
zyyang 已提交
500 501 502
  if [ "$interactiveFqdn" == "no" ]; then
    return 0
  fi
S
slguan 已提交
503

Z
change  
zyyang 已提交
504
  local_fqdn_check
H
Hui Li 已提交
505

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

Z
change  
zyyang 已提交
521 522 523 524 525 526 527 528 529 530 531 532
  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 已提交
533 534 535
}

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

Z
change  
zyyang 已提交
539
  ${csudo}ln -s ${log_dir} ${install_main_dir}/log
H
hzcheng 已提交
540 541 542
}

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

Z
change  
zyyang 已提交
545
  ${csudo}ln -s ${data_dir} ${install_main_dir}/data
H
hzcheng 已提交
546 547 548
}

function install_connector() {
Z
change  
zyyang 已提交
549
  ${csudo}cp -rf ${script_dir}/connector/ ${install_main_dir}/
H
hzcheng 已提交
550 551 552
}

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

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

Z
change  
zyyang 已提交
563 564 565
  if pidof tarbitrator &>/dev/null; then
    ${csudo}service tarbitratord stop || :
  fi
566

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

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

Z
change  
zyyang 已提交
591
  ${csudo}rm -f ${service_config_dir}/${serverName} || :
Z
change  
zyyang 已提交
592
  ${csudo}rm -f ${service_config_dir}/tarbitratord || :
593

Z
change  
zyyang 已提交
594 595 596
  if $(which init &>/dev/null); then
    ${csudo}init q || :
  fi
H
hzcheng 已提交
597 598 599
}

function install_service_on_sysvinit() {
Z
change  
zyyang 已提交
600 601 602 603
  clean_service_on_sysvinit
  sleep 1

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

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

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

Z
change  
zyyang 已提交
640 641 642 643 644 645 646
  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}
647

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

function install_service_on_systemd() {
Z
change  
zyyang 已提交
660
  clean_service_on_systemd
H
hzcheng 已提交
661

Z
change  
zyyang 已提交
662 663
  [ -f ${script_dir}/cfg/${serverName}.service ] &&
    ${csudo}cp ${script_dir}/cfg/${serverName}.service \
Z
change  
zyyang 已提交
664 665 666
      ${service_config_dir}/ || :
  ${csudo}systemctl daemon-reload

Z
change  
zyyang 已提交
667
  ${csudo}systemctl enable ${serverName}
Z
change  
zyyang 已提交
668 669 670 671 672 673 674 675 676

  [ -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 \
677
        ${service_config_dir}/ || :
678
    ${csudo}systemctl daemon-reload
679

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

688
function install_taosadapter_service() {
Z
change  
zyyang 已提交
689 690 691 692 693 694
  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
695 696
}

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

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

function is_version_compatible() {

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

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

Z
change  
zyyang 已提交
743
  exist_version=$(${installDir}/bin/${serverName} -V | head -1 | cut -d ' ' -f 3)
Z
change  
zyyang 已提交
744 745 746 747 748 749
  vercomp $exist_version "2.0.16.0"
  case $? in
  2)
    prompt_force=1
    ;;
  esac
750

Z
change  
zyyang 已提交
751 752
  vercomp $curr_version $min_compatible_version
  echo "" # avoid $? value not update
753

Z
change  
zyyang 已提交
754 755 756 757 758
  case $? in
  0) return 0 ;;
  1) return 0 ;;
  2) return 1 ;;
  esac
H
hzcheng 已提交
759 760 761
}

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

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

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

Z
change  
zyyang 已提交
802 803 804 805 806
  install_main_path

  install_log
  install_header
  install_lib
807 808 809
#  if [ "$pagMode" != "lite" ]; then
#    install_connector
#  fi
Z
change  
zyyang 已提交
810 811 812 813 814 815 816 817 818
  install_examples
  if [ -z $1 ]; then
    install_bin
    install_service
    install_taosadapter_service
    install_config
    install_taosadapter_config

    openresty_work=false
819
    if [ "$verMode" == "cluster" ]; then
Z
change  
zyyang 已提交
820 821 822 823
      # 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 已提交
824
          echo -e "\033[44;32;1mNginx for ${productName} is updated successfully!${NC}"
Z
change  
zyyang 已提交
825
          openresty_work=true
826
        else
Z
change  
zyyang 已提交
827
          echo -e "\033[44;31;5mNginx for ${productName} does not work! Please try again!\033[0m"
H
hzcheng 已提交
828
        fi
829
      fi
H
hzcheng 已提交
830
    fi
831

Z
change  
zyyang 已提交
832
    echo
Z
change  
zyyang 已提交
833 834
    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 已提交
835
    if ((${service_mod} == 0)); then
Z
change  
zyyang 已提交
836
      echo -e "${GREEN_DARK}To start ${productName}     ${NC}: ${csudo}systemctl start ${serverName}${NC}"
Z
change  
zyyang 已提交
837
    elif ((${service_mod} == 1)); then
Z
change  
zyyang 已提交
838
      echo -e "${GREEN_DARK}To start ${productName}     ${NC}: ${csudo}service ${serverName} start${NC}"
Z
change  
zyyang 已提交
839 840
    else
      echo -e "${GREEN_DARK}To start Taos Adapter (if has)${NC}: taosadapter &${NC}"
Z
change  
zyyang 已提交
841
      echo -e "${GREEN_DARK}To start ${productName}     ${NC}: ./${serverName}${NC}"
L
lihui 已提交
842
    fi
H
hzcheng 已提交
843

Z
change  
zyyang 已提交
844
    if [ ${openresty_work} = 'true' ]; then
Z
change  
zyyang 已提交
845
      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 已提交
846
    else
Z
change  
zyyang 已提交
847
      echo -e "${GREEN_DARK}To access ${productName}    ${NC}: use ${GREEN_UNDERLINE}${clientName} -h $serverFqdn${NC} in shell${NC}"
Z
change  
zyyang 已提交
848
    fi
H
hzcheng 已提交
849

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

Z
change  
zyyang 已提交
860
    echo
Z
change  
zyyang 已提交
861
    echo -e "\033[44;32;1m${productName} client is updated successfully!${NC}"
Z
change  
zyyang 已提交
862 863
  fi

Z
change  
zyyang 已提交
864
  rm -rf $(tar -tf ${tarName})
H
hzcheng 已提交
865 866 867
}

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

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

Z
change  
zyyang 已提交
877
  install_main_path
878

Z
change  
zyyang 已提交
879 880 881
  if [ -z $1 ]; then
    install_data
  fi
882

Z
change  
zyyang 已提交
883 884 885 886 887 888
  install_log
  install_header
  install_lib
  install_jemalloc
  #install_avro lib
  #install_avro lib64
889

890 891 892
#  if [ "$pagMode" != "lite" ]; then
#    install_connector
#  fi
Z
change  
zyyang 已提交
893 894 895 896 897 898 899
  install_examples

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

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

Z
change  
zyyang 已提交
915
    install_config
916

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

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

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

Z
change  
zyyang 已提交
959 960
  touch ~/.${historyFile}
  rm -rf $(tar -tf ${tarName})
Z
change  
zyyang 已提交
961
}
H
hzcheng 已提交
962 963

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