install.sh 40.9 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 19 20 21 22 23 24 25 26 27
# Dynamic directory
data_dir="/var/lib/taos"
log_dir="/var/log/taos"

data_link_dir="/usr/local/taos/data"
log_link_dir="/usr/local/taos/log"

cfg_install_dir="/etc/taos"

bin_link_dir="/usr/bin"
lib_link_dir="/usr/lib"
H
Hui Li 已提交
28
lib64_link_dir="/usr/lib64"
H
hzcheng 已提交
29 30 31 32 33 34 35 36
inc_link_dir="/usr/include"

#install main path
install_main_dir="/usr/local/taos"

# old bin dir
bin_dir="/usr/local/taos/bin"

S
slguan 已提交
37
# v1.5 jar dir
H
Hui Li 已提交
38
#v15_java_app_dir="/usr/local/lib/taos"
S
slguan 已提交
39

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

# 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 已提交
51 52
csudo=""
if command -v sudo > /dev/null; then
53
    csudo="sudo "
P
plum-lihui 已提交
54
fi
H
hzcheng 已提交
55

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

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

L
lihui 已提交
79 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
H
Hui Li 已提交
84 85 86 87
  osinfo=$(cat /etc/os-release | grep "NAME" | cut -d '"' -f2)   ||:
else
  osinfo=""
fi
L
lihui 已提交
88 89 90
#echo "osinfo: ${osinfo}"
os_type=0
if echo $osinfo | grep -qwi "ubuntu" ; then
H
Hui Li 已提交
91
#  echo "This is ubuntu system"
L
lihui 已提交
92 93
  os_type=1
elif echo $osinfo | grep -qwi "debian" ; then
H
Hui Li 已提交
94
#  echo "This is debian system"
L
lihui 已提交
95 96
  os_type=1
elif echo $osinfo | grep -qwi "Kylin" ; then
H
Hui Li 已提交
97
#  echo "This is Kylin system"
L
lihui 已提交
98 99
  os_type=1
elif  echo $osinfo | grep -qwi "centos" ; then
H
Hui Li 已提交
100
#  echo "This is centos system"
L
lihui 已提交
101 102
  os_type=2
elif echo $osinfo | grep -qwi "fedora" ; then
H
Hui Li 已提交
103
#  echo "This is fedora system"
L
lihui 已提交
104
  os_type=2
haoranc's avatar
haoranc 已提交
105 106 107 108 109 110
elif echo $osinfo | grep -qwi "Linx" ; then
#  echo "This is Linx system"
  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 115
  echo " if there are any problems with the installation and operation, "
  echo " please feel free to contact taosdata.com for support."
L
lihui 已提交
116
  os_type=1
L
lihui 已提交
117 118
fi

H
Hui Li 已提交
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147

# =============================  get input parameters =================================================

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

# set parameters by default value
interactiveFqdn=yes   # [yes | no]
verType=server        # [server | client]
initType=systemd      # [systemd | service | ...]

while getopts "hv:e:i:" arg
do
  case $arg in
    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
      ;;
148
    ?) #unknow option
H
Hui Li 已提交
149 150 151 152 153 154
      echo "unkonw argument"
      exit 1
      ;;
  esac
done

H
Hui Li 已提交
155
#echo "verType=${verType} interactiveFqdn=${interactiveFqdn}"
H
Hui Li 已提交
156

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

H
hzcheng 已提交
164 165
function install_main_path() {
    #create install main dir and all sub dir
166 167 168 169 170 171 172 173 174
    ${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
S
slguan 已提交
175
    if [ "$verMode" == "cluster" ]; then
176
        ${csudo}mkdir -p ${nginx_dir}
S
slguan 已提交
177
    fi
178

179
    if [[ -e ${script_dir}/email ]]; then
180
      ${csudo}cp ${script_dir}/email ${install_main_dir}/ ||:
181
    fi
H
hzcheng 已提交
182 183 184 185
}

function install_bin() {
    # Remove links
186 187 188 189 190 191 192 193 194 195 196
    ${csudo}rm -f ${bin_link_dir}/taos     || :
    ${csudo}rm -f ${bin_link_dir}/taosd    || :
    ${csudo}rm -f ${bin_link_dir}/taosadapter  || :
    ${csudo}rm -f ${bin_link_dir}/taosdemo || :
    ${csudo}rm -f ${bin_link_dir}/taosdump || :
    ${csudo}rm -f ${bin_link_dir}/rmtaos   || :
    ${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/*
H
hzcheng 已提交
197 198

    #Make link
199 200 201 202 203 204 205 206 207
    [ -x ${install_main_dir}/bin/taos ] && ${csudo}ln -s ${install_main_dir}/bin/taos ${bin_link_dir}/taos                      || :
    [ -x ${install_main_dir}/bin/taosd ] && ${csudo}ln -s ${install_main_dir}/bin/taosd ${bin_link_dir}/taosd                   || :
    [ -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          || :
    [ -x ${install_main_dir}/bin/remove.sh ] && ${csudo}ln -s ${install_main_dir}/bin/remove.sh ${bin_link_dir}/rmtaos          || :
    [ -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 || :
S
slguan 已提交
208 209

    if [ "$verMode" == "cluster" ]; then
210 211 212
        ${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
S
slguan 已提交
213
    fi
H
hzcheng 已提交
214 215 216 217
}

function install_lib() {
    # Remove links
218 219 220 221
    ${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/*
222

223 224
    ${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
225

H
Hui Li 已提交
226
    if [[ -d ${lib64_link_dir} && ! -e ${lib64_link_dir}/libtaos.so ]]; then
227 228
      ${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               || :
H
Hui Li 已提交
229
    fi
230 231

    #if [ "$verMode" == "cluster" ]; then
H
Hui Li 已提交
232
    #    # Compatible with version 1.5
233 234 235
    #    ${csudo}mkdir -p ${v15_java_app_dir}
    #    ${csudo}ln -s ${install_main_dir}/connector/taos-jdbcdriver-1.0.2-dist.jar ${v15_java_app_dir}/JDBCDriver-1.0.2-dist.jar
    #    ${csudo}chmod 777 ${v15_java_app_dir} || :
H
Hui Li 已提交
236
    #fi
237

238
    ${csudo}ldconfig
H
hzcheng 已提交
239 240
}

241 242 243 244
function install_avro() {
    if [ "$osType" != "Darwin" ]; then
        avro_dir=${script_dir}/avro
        if [ -f "${avro_dir}/lib/libavro.so.23.0.0" ] && [ -d /usr/local/$1 ]; then
245 246 247 248
            ${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
249

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

            if [ -d /etc/ld.so.conf.d ]; then
255 256
                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
257 258 259 260 261 262 263
            else
                echo "/etc/ld.so.conf.d not found!"
            fi
        fi
    fi
}

264 265 266 267
function install_jemalloc() {
    jemalloc_dir=${script_dir}/jemalloc

    if [ -d ${jemalloc_dir} ]; then
268
        ${csudo}/usr/bin/install -c -d /usr/local/bin
269 270

        if [ -f ${jemalloc_dir}/bin/jemalloc-config ]; then
271
            ${csudo}/usr/bin/install -c -m 755 ${jemalloc_dir}/bin/jemalloc-config /usr/local/bin
272 273
        fi
        if [ -f ${jemalloc_dir}/bin/jemalloc.sh ]; then
274
            ${csudo}/usr/bin/install -c -m 755 ${jemalloc_dir}/bin/jemalloc.sh /usr/local/bin
275 276
        fi
        if [ -f ${jemalloc_dir}/bin/jeprof ]; then
277
            ${csudo}/usr/bin/install -c -m 755 ${jemalloc_dir}/bin/jeprof /usr/local/bin
278 279
        fi
        if [ -f ${jemalloc_dir}/include/jemalloc/jemalloc.h ]; then
280 281
            ${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
282 283
        fi
        if [ -f ${jemalloc_dir}/lib/libjemalloc.so.2 ]; then
284 285 286 287
            ${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
288
            if [ -f ${jemalloc_dir}/lib/libjemalloc.a ]; then
289
                ${csudo}/usr/bin/install -c -m 755 ${jemalloc_dir}/lib/libjemalloc.a /usr/local/lib
290 291
            fi
            if [ -f ${jemalloc_dir}/lib/libjemalloc_pic.a ]; then
292
                ${csudo}/usr/bin/install -c -m 755 ${jemalloc_dir}/lib/libjemalloc_pic.a /usr/local/lib
293 294
            fi
            if [ -f ${jemalloc_dir}/lib/libjemalloc_pic.a ]; then
295 296
                ${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
297 298 299
            fi
        fi
        if [ -f ${jemalloc_dir}/share/doc/jemalloc/jemalloc.html ]; then
300 301
            ${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
302 303
        fi
        if [ -f ${jemalloc_dir}/share/man/man3/jemalloc.3 ]; then
304 305
            ${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
306
        fi
307 308

        if [ -d /etc/ld.so.conf.d ]; then
309 310
            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
311 312 313
        else
            echo "/etc/ld.so.conf.d not found!"
        fi
314 315 316
    fi
}

H
hzcheng 已提交
317
function install_header() {
318 319 320 321 322
    ${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 已提交
323 324
}

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

function set_hostname() {
  echo -e -n "${GREEN}Please enter one hostname(must not be 'localhost')${NC}:"
343
    read newHostname
H
Hui Li 已提交
344 345 346 347 348 349 350 351
  while true; do
    if [[ ! -z "$newHostname" && "$newHostname" != "localhost" ]]; then
      break
    else
      read -p "Please enter one hostname(must not be 'localhost'):" newHostname
    fi
  done

352
  ${csudo}hostname $newHostname ||:
H
Hui Li 已提交
353 354 355 356
  retval=`echo $?`
  if [[ $retval != 0 ]]; then
   echo
   echo "set hostname fail!"
357
   return
H
Hui Li 已提交
358 359 360 361
  fi
  #echo -e -n "$(hostnamectl status --static)"
  #echo -e -n "$(hostnamectl status --transient)"
  #echo -e -n "$(hostnamectl status --pretty)"
362

H
Hui Li 已提交
363 364
  #ubuntu/centos /etc/hostname
  if [[ -e /etc/hostname ]]; then
365
    ${csudo}echo $newHostname > /etc/hostname   ||:
H
Hui Li 已提交
366
  fi
367

H
Hui Li 已提交
368 369
  #debian: #HOSTNAME=yourname
  if [[ -e /etc/sysconfig/network ]]; then
370
    ${csudo}sed -i -r "s/#*\s*(HOSTNAME=\s*).*/\1$newHostname/" /etc/sysconfig/network   ||:
H
Hui Li 已提交
371 372
  fi

373
  ${csudo}sed -i -r "s/#*\s*(fqdn\s*).*/\1$newHostname/" ${cfg_install_dir}/taos.cfg
374 375
  serverFqdn=$newHostname

H
Hui Li 已提交
376 377 378 379 380 381 382 383 384 385 386
  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"
387
  for s in "${arr[@]}"
H
Hui Li 已提交
388 389 390 391 392
  do
   if [[ "$s" == "$newIp" ]]; then
     return 0
   fi
  done
393

H
Hui Li 已提交
394 395 396 397 398 399 400 401 402 403 404 405 406
  return 1
}

function set_ipAsFqdn() {
  iplist=$(ip address |grep inet |grep -v inet6 |grep -v 127.0.0.1 |awk '{print $2}' |awk -F "/" '{print $1}') ||:
  if [ -z "$iplist" ]; then
    iplist=$(ifconfig |grep inet |grep -v inet6 |grep -v 127.0.0.1 |awk '{print $2}' |awk -F ":" '{print $2}') ||:
  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"
407
    # Write the local FQDN to configuration file
408
    ${csudo}sed -i -r "s/#*\s*(fqdn\s*).*/\1$localFqdn/" ${cfg_install_dir}/taos.cfg
H
Hui Li 已提交
409 410 411
    serverFqdn=$localFqdn
    echo
    return
412 413
  fi

H
Hui Li 已提交
414 415 416 417 418 419 420 421
  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
    while true; do
422
      if [ ! -z "$localFqdn" ]; then
H
Hui Li 已提交
423 424 425 426 427 428
        # Check if correct ip address
        is_correct_ipaddr $localFqdn
        retval=`echo $?`
        if [[ $retval != 0 ]]; then
          read -p "Please choose an IP from local IP list:" localFqdn
        else
429
          # Write the local FQDN to configuration file
430
          ${csudo}sed -i -r "s/#*\s*(fqdn\s*).*/\1$localFqdn/" ${cfg_install_dir}/taos.cfg
H
Hui Li 已提交
431 432 433 434 435 436 437 438 439 440
          serverFqdn=$localFqdn
          break
        fi
      else
        read -p "Please choose an IP from local IP list:" localFqdn
      fi
    done
}

function local_fqdn_check() {
H
[NONE]  
Hui Li 已提交
441
  #serverFqdn=$(hostname)
H
Hui Li 已提交
442 443 444
  echo
  echo -e -n "System hostname is: ${GREEN}$serverFqdn${NC}"
  echo
445
  if [[ "$serverFqdn" == "" ]] || [[ "$serverFqdn" == "localhost"  ]]; then
H
Hui Li 已提交
446 447
    echo -e -n "${GREEN}It is strongly recommended to configure a hostname for this machine ${NC}"
    echo
448

H
Hui Li 已提交
449 450
    while true
    do
451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471
        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 已提交
472 473 474 475
    done
  fi
}

476 477
function install_taosadapter_config() {
    if [ ! -f "${cfg_install_dir}/taosadapter.toml" ]; then
478 479 480
        ${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
481 482
    fi

483
    [ -f ${script_dir}/cfg/taosadapter.toml ] &&
484
        ${csudo}cp -f ${script_dir}/cfg/taosadapter.toml ${cfg_install_dir}/taosadapter.toml.new
485

486
    [ -f ${cfg_install_dir}/taosadapter.toml ] &&
487
        ${csudo}ln -s ${cfg_install_dir}/taosadapter.toml ${install_main_dir}/cfg/taosadapter.toml
488 489 490 491 492

    [ ! -z $1 ] && return 0 || : # only install client

}

H
hzcheng 已提交
493
function install_config() {
494
    #${csudo}rm -f ${install_main_dir}/cfg/taos.cfg     || :
495

496
    if [ ! -f "${cfg_install_dir}/taos.cfg" ]; then
497 498 499
        ${csudo}mkdir -p ${cfg_install_dir}
        [ -f ${script_dir}/cfg/taos.cfg ] && ${csudo}cp ${script_dir}/cfg/taos.cfg ${cfg_install_dir}
        ${csudo}chmod 644 ${cfg_install_dir}/*
500 501
    fi

502 503
    ${csudo}cp -f ${script_dir}/cfg/taos.cfg ${cfg_install_dir}/taos.cfg.new
    ${csudo}ln -s ${cfg_install_dir}/taos.cfg ${install_main_dir}/cfg
S
slguan 已提交
504

H
Hui Li 已提交
505
    [ ! -z $1 ] && return 0 || : # only install client
506

H
Hui Li 已提交
507 508 509
    if ((${update_flag}==1)); then
        return 0
    fi
510

H
Hui Li 已提交
511 512
    if [ "$interactiveFqdn" == "no" ]; then
        return 0
513 514
    fi

H
Hui Li 已提交
515
    local_fqdn_check
S
slguan 已提交
516

H
Hui Li 已提交
517 518 519 520 521 522 523
    #FQDN_FORMAT="(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"
    #FQDN_FORMAT="(:[1-6][0-9][0-9][0-9][0-9]$)"
    #PORT_FORMAT="(/[1-6][0-9][0-9][0-9][0-9]?/)"
    #FQDN_PATTERN=":[0-9]{1,5}$"

    # first full-qualified domain name (FQDN) for TDengine cluster system
    echo
H
Hui Li 已提交
524
    echo -e -n "${GREEN}Enter FQDN:port (like h1.taosdata.com:6030) of an existing TDengine cluster node to join${NC}"
H
Hui Li 已提交
525
    echo
H
Hui Li 已提交
526
    echo -e -n "${GREEN}OR leave it blank to build one${NC}:"
H
Hui Li 已提交
527
    read firstEp
H
Hui Li 已提交
528 529 530 531
    while true; do
        if [ ! -z "$firstEp" ]; then
            # check the format of the firstEp
            #if [[ $firstEp == $FQDN_PATTERN ]]; then
532
                # Write the first FQDN to configuration file
533
                ${csudo}sed -i -r "s/#*\s*(firstEp\s*).*/\1$firstEp/" ${cfg_install_dir}/taos.cfg
S
slguan 已提交
534
                break
H
Hui Li 已提交
535 536 537 538 539 540
            #else
            #    read -p "Please enter the correct FQDN:port: " firstEp
            #fi
        else
            break
        fi
541
    done
H
Hui Li 已提交
542

543
    # user email
H
Hui Li 已提交
544 545 546 547 548 549 550 551 552 553
    #EMAIL_PATTERN='^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$'
    #EMAIL_PATTERN='^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$'
    #EMAIL_PATTERN="^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$"
    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
            # check the format of the emailAddr
            #if [[ "$emailAddr" =~ $EMAIL_PATTERN ]]; then
554 555
                # Write the email address to temp file
                email_file="${install_main_dir}/email"
556
                ${csudo}bash -c "echo $emailAddr > ${email_file}"
557
                break
H
Hui Li 已提交
558
            #else
559
            #    read -p "Please enter the correct email address: " emailAddr
H
Hui Li 已提交
560 561 562 563
            #fi
        else
            break
        fi
564
    done
H
hzcheng 已提交
565 566
}

L
lihui 已提交
567

H
hzcheng 已提交
568
function install_log() {
569 570
    ${csudo}rm -rf ${log_dir}  || :
    ${csudo}mkdir -p ${log_dir} && ${csudo}chmod 777 ${log_dir}
571

572
    ${csudo}ln -s ${log_dir} ${install_main_dir}/log
H
hzcheng 已提交
573 574 575
}

function install_data() {
576
    ${csudo}mkdir -p ${data_dir}
577

578
    ${csudo}ln -s ${data_dir} ${install_main_dir}/data
H
hzcheng 已提交
579 580 581
}

function install_connector() {
582
    ${csudo}cp -rf ${script_dir}/connector/ ${install_main_dir}/
H
hzcheng 已提交
583 584 585
}

function install_examples() {
S
slguan 已提交
586
    if [ -d ${script_dir}/examples ]; then
587
        ${csudo}cp -rf ${script_dir}/examples/* ${install_main_dir}/examples
S
slguan 已提交
588
    fi
H
hzcheng 已提交
589 590 591
}

function clean_service_on_sysvinit() {
L
lihui 已提交
592
    #restart_config_str="taos:2345:respawn:${service_config_dir}/taosd start"
593
    #${csudo}sed -i "\|${restart_config_str}|d" /etc/inittab || :
594

H
hzcheng 已提交
595
    if pidof taosd &> /dev/null; then
596
        ${csudo}service taosd stop || :
H
hzcheng 已提交
597
    fi
598

H
Hui Li 已提交
599
    if pidof tarbitrator &> /dev/null; then
600
        ${csudo}service tarbitratord stop || :
H
Hui Li 已提交
601
    fi
L
lihui 已提交
602 603

    if ((${initd_mod}==1)); then
604
      if [ -e ${service_config_dir}/taosd ]; then
605
        ${csudo}chkconfig --del taosd || :
H
Hui Li 已提交
606 607
      fi

608
      if [ -e ${service_config_dir}/tarbitratord ]; then
609
        ${csudo}chkconfig --del tarbitratord || :
H
Hui Li 已提交
610
      fi
L
lihui 已提交
611
    elif ((${initd_mod}==2)); then
612
      if [ -e ${service_config_dir}/taosd ]; then
613
        ${csudo}insserv -r taosd || :
H
Hui Li 已提交
614 615
      fi
      if [ -e ${service_config_dir}/tarbitratord ]; then
616
        ${csudo}insserv -r tarbitratord || :
H
Hui Li 已提交
617
      fi
L
lihui 已提交
618
    elif ((${initd_mod}==3)); then
H
Hui Li 已提交
619
      if [ -e ${service_config_dir}/taosd ]; then
620
        ${csudo}update-rc.d -f taosd remove || :
H
Hui Li 已提交
621 622
      fi
      if [ -e ${service_config_dir}/tarbitratord ]; then
623
        ${csudo}update-rc.d -f tarbitratord remove || :
H
Hui Li 已提交
624
      fi
L
lihui 已提交
625
    fi
626

627 628
    ${csudo}rm -f ${service_config_dir}/taosd || :
    ${csudo}rm -f ${service_config_dir}/tarbitratord || :
629

L
lihui 已提交
630
    if $(which init &> /dev/null); then
631
        ${csudo}init q || :
L
lihui 已提交
632
    fi
H
hzcheng 已提交
633 634 635 636 637 638 639
}

function install_service_on_sysvinit() {
    clean_service_on_sysvinit
    sleep 1

    # Install taosd service
L
lihui 已提交
640 641

    if ((${os_type}==1)); then
642 643 644 645
        ${csudo}cp -f ${script_dir}/init.d/taosd.deb ${install_main_dir}/init.d/taosd
        ${csudo}cp    ${script_dir}/init.d/taosd.deb ${service_config_dir}/taosd && ${csudo}chmod a+x ${service_config_dir}/taosd
        ${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
L
lihui 已提交
646
    elif ((${os_type}==2)); then
647 648 649 650
        ${csudo}cp -f ${script_dir}/init.d/taosd.rpm ${install_main_dir}/init.d/taosd
        ${csudo}cp    ${script_dir}/init.d/taosd.rpm ${service_config_dir}/taosd && ${csudo}chmod a+x ${service_config_dir}/taosd
        ${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
L
lihui 已提交
651
    fi
652

L
lihui 已提交
653
    #restart_config_str="taos:2345:respawn:${service_config_dir}/taosd start"
654
    #${csudo}grep -q -F "$restart_config_str" /etc/inittab || ${csudo}bash -c "echo '${restart_config_str}' >> /etc/inittab"
655

L
lihui 已提交
656
    if ((${initd_mod}==1)); then
657 658 659 660
        ${csudo}chkconfig --add taosd || :
        ${csudo}chkconfig --level 2345 taosd on || :
        ${csudo}chkconfig --add tarbitratord || :
        ${csudo}chkconfig --level 2345 tarbitratord on || :
L
lihui 已提交
661
    elif ((${initd_mod}==2)); then
662 663 664 665
        ${csudo}insserv taosd || :
        ${csudo}insserv -d taosd || :
        ${csudo}insserv tarbitratord || :
        ${csudo}insserv -d tarbitratord || :
L
lihui 已提交
666
    elif ((${initd_mod}==3)); then
667 668
        ${csudo}update-rc.d taosd defaults || :
        ${csudo}update-rc.d tarbitratord defaults || :
L
lihui 已提交
669
    fi
H
hzcheng 已提交
670 671 672 673 674 675
}

function clean_service_on_systemd() {
    taosd_service_config="${service_config_dir}/taosd.service"
    if systemctl is-active --quiet taosd; then
        echo "TDengine is running, stopping it..."
676
        ${csudo}systemctl stop taosd &> /dev/null || echo &> /dev/null
H
hzcheng 已提交
677
    fi
678 679
    ${csudo}systemctl disable taosd &> /dev/null || echo &> /dev/null
    ${csudo}rm -f ${taosd_service_config}
680

H
Hui Li 已提交
681 682 683
    tarbitratord_service_config="${service_config_dir}/tarbitratord.service"
    if systemctl is-active --quiet tarbitratord; then
        echo "tarbitrator is running, stopping it..."
684
        ${csudo}systemctl stop tarbitratord &> /dev/null || echo &> /dev/null
H
Hui Li 已提交
685
    fi
686 687
    ${csudo}systemctl disable tarbitratord &> /dev/null || echo &> /dev/null
    ${csudo}rm -f ${tarbitratord_service_config}
688

S
slguan 已提交
689 690 691 692
    if [ "$verMode" == "cluster" ]; then
        nginx_service_config="${service_config_dir}/nginxd.service"
        if systemctl is-active --quiet nginxd; then
            echo "Nginx for TDengine is running, stopping it..."
693
            ${csudo}systemctl stop nginxd &> /dev/null || echo &> /dev/null
S
slguan 已提交
694
        fi
695 696
        ${csudo}systemctl disable nginxd &> /dev/null || echo &> /dev/null
        ${csudo}rm -f ${nginx_service_config}
697
    fi
S
slguan 已提交
698
}
H
hzcheng 已提交
699 700 701 702 703 704

# taos:2345:respawn:/etc/init.d/taosd start

function install_service_on_systemd() {
    clean_service_on_systemd

705
    [ -f ${script_dir}/cfg/taosd.service ] &&\
706
        ${csudo}cp ${script_dir}/cfg/taosd.service \
707
        ${service_config_dir}/ || :
708
    ${csudo}systemctl daemon-reload
709 710
    
    #taosd_service_config="${service_config_dir}/taosd.service"
711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733
    #${csudo}bash -c "echo '[Unit]'                             >> ${taosd_service_config}"
    #${csudo}bash -c "echo 'Description=TDengine server service' >> ${taosd_service_config}"
    #${csudo}bash -c "echo 'After=network-online.target taosadapter.service'        >> ${taosd_service_config}"
    #${csudo}bash -c "echo 'Wants=network-online.target taosadapter.service'        >> ${taosd_service_config}"
    #${csudo}bash -c "echo                                      >> ${taosd_service_config}"
    #${csudo}bash -c "echo '[Service]'                          >> ${taosd_service_config}"
    #${csudo}bash -c "echo 'Type=simple'                        >> ${taosd_service_config}"
    #${csudo}bash -c "echo 'ExecStart=/usr/bin/taosd'           >> ${taosd_service_config}"
    #${csudo}bash -c "echo 'ExecStartPre=/usr/local/taos/bin/startPre.sh'         >> ${taosd_service_config}"
    #${csudo}bash -c "echo 'TimeoutStopSec=1000000s'            >> ${taosd_service_config}"
    #${csudo}bash -c "echo 'LimitNOFILE=infinity'               >> ${taosd_service_config}"
    #${csudo}bash -c "echo 'LimitNPROC=infinity'                >> ${taosd_service_config}"
    #${csudo}bash -c "echo 'LimitCORE=infinity'                 >> ${taosd_service_config}"
    #${csudo}bash -c "echo 'TimeoutStartSec=0'                  >> ${taosd_service_config}"
    #${csudo}bash -c "echo 'StandardOutput=null'                >> ${taosd_service_config}"
    #${csudo}bash -c "echo 'Restart=always'                     >> ${taosd_service_config}"
    #${csudo}bash -c "echo 'StartLimitBurst=3'                  >> ${taosd_service_config}"
    #${csudo}bash -c "echo 'StartLimitInterval=60s'             >> ${taosd_service_config}"
    ##${csudo}bash -c "echo 'StartLimitIntervalSec=60s'          >> ${taosd_service_config}"
    #${csudo}bash -c "echo                                      >> ${taosd_service_config}"
    #${csudo}bash -c "echo '[Install]'                          >> ${taosd_service_config}"
    #${csudo}bash -c "echo 'WantedBy=multi-user.target'         >> ${taosd_service_config}"
    ${csudo}systemctl enable taosd
734

735
    [ -f ${script_dir}/cfg/tarbitratord.service ] &&\
736
        ${csudo}cp ${script_dir}/cfg/tarbitratord.service \
737
        ${service_config_dir}/ || :
738
    ${csudo}systemctl daemon-reload
739 740
    
    #tarbitratord_service_config="${service_config_dir}/tarbitratord.service"
741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761
    #${csudo}bash -c "echo '[Unit]'                                  >> ${tarbitratord_service_config}"
    #${csudo}bash -c "echo 'Description=TDengine arbitrator service' >> ${tarbitratord_service_config}"
    #${csudo}bash -c "echo 'After=network-online.target'             >> ${tarbitratord_service_config}"
    #${csudo}bash -c "echo 'Wants=network-online.target'             >> ${tarbitratord_service_config}"
    #${csudo}bash -c "echo                                           >> ${tarbitratord_service_config}"
    #${csudo}bash -c "echo '[Service]'                               >> ${tarbitratord_service_config}"
    #${csudo}bash -c "echo 'Type=simple'                             >> ${tarbitratord_service_config}"
    #${csudo}bash -c "echo 'ExecStart=/usr/bin/tarbitrator'          >> ${tarbitratord_service_config}"
    #${csudo}bash -c "echo 'TimeoutStopSec=1000000s'                 >> ${tarbitratord_service_config}"
    #${csudo}bash -c "echo 'LimitNOFILE=infinity'                    >> ${tarbitratord_service_config}"
    #${csudo}bash -c "echo 'LimitNPROC=infinity'                     >> ${tarbitratord_service_config}"
    #${csudo}bash -c "echo 'LimitCORE=infinity'                      >> ${tarbitratord_service_config}"
    #${csudo}bash -c "echo 'TimeoutStartSec=0'                       >> ${tarbitratord_service_config}"
    #${csudo}bash -c "echo 'StandardOutput=null'                     >> ${tarbitratord_service_config}"
    #${csudo}bash -c "echo 'Restart=always'                          >> ${tarbitratord_service_config}"
    #${csudo}bash -c "echo 'StartLimitBurst=3'                       >> ${tarbitratord_service_config}"
    #${csudo}bash -c "echo 'StartLimitInterval=60s'                  >> ${tarbitratord_service_config}"
    #${csudo}bash -c "echo                                           >> ${tarbitratord_service_config}"
    #${csudo}bash -c "echo '[Install]'                               >> ${tarbitratord_service_config}"
    #${csudo}bash -c "echo 'WantedBy=multi-user.target'              >> ${tarbitratord_service_config}"
    #${csudo}systemctl enable tarbitratord
762 763

    if [ "$verMode" == "cluster" ]; then
764
        [ -f ${script_dir}/cfg/nginxd.service ] &&\
765
            ${csudo}cp ${script_dir}/cfg/nginxd.service \
766
            ${service_config_dir}/ || :
767
        ${csudo}systemctl daemon-reload
768 769

        #nginx_service_config="${service_config_dir}/nginxd.service"
770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794
        #${csudo}bash -c "echo '[Unit]'                                             >> ${nginx_service_config}"
        #${csudo}bash -c "echo 'Description=Nginx For TDengine Service'             >> ${nginx_service_config}"
        #${csudo}bash -c "echo 'After=network-online.target'                        >> ${nginx_service_config}"
        #${csudo}bash -c "echo 'Wants=network-online.target'                        >> ${nginx_service_config}"
        #${csudo}bash -c "echo                                                      >> ${nginx_service_config}"
        #${csudo}bash -c "echo '[Service]'                                          >> ${nginx_service_config}"
        #${csudo}bash -c "echo 'Type=forking'                                       >> ${nginx_service_config}"
        #${csudo}bash -c "echo 'PIDFile=/usr/local/nginxd/logs/nginx.pid'           >> ${nginx_service_config}"
        #${csudo}bash -c "echo 'ExecStart=/usr/local/nginxd/sbin/nginx'             >> ${nginx_service_config}"
        #${csudo}bash -c "echo 'ExecStop=/usr/local/nginxd/sbin/nginx -s stop'      >> ${nginx_service_config}"
        #${csudo}bash -c "echo 'TimeoutStopSec=1000000s'                            >> ${nginx_service_config}"
        #${csudo}bash -c "echo 'LimitNOFILE=infinity'                               >> ${nginx_service_config}"
        #${csudo}bash -c "echo 'LimitNPROC=infinity'                                >> ${nginx_service_config}"
        #${csudo}bash -c "echo 'LimitCORE=infinity'                                 >> ${nginx_service_config}"
        #${csudo}bash -c "echo 'TimeoutStartSec=0'                                  >> ${nginx_service_config}"
        #${csudo}bash -c "echo 'StandardOutput=null'                                >> ${nginx_service_config}"
        #${csudo}bash -c "echo 'Restart=always'                                     >> ${nginx_service_config}"
        #${csudo}bash -c "echo 'StartLimitBurst=3'                                  >> ${nginx_service_config}"
        #${csudo}bash -c "echo 'StartLimitInterval=60s'                             >> ${nginx_service_config}"
        #${csudo}bash -c "echo                                                      >> ${nginx_service_config}"
        #${csudo}bash -c "echo '[Install]'                                          >> ${nginx_service_config}"
        #${csudo}bash -c "echo 'WantedBy=multi-user.target'                         >> ${nginx_service_config}"
        if ! ${csudo}systemctl enable nginxd &> /dev/null; then
            ${csudo}systemctl daemon-reexec
            ${csudo}systemctl enable nginxd
S
slguan 已提交
795
        fi
796
        ${csudo}systemctl start nginxd
797
    fi
H
hzcheng 已提交
798 799
}

800
function install_taosadapter_service() {
801 802
    if ((${service_mod}==0)); then
        [ -f ${script_dir}/cfg/taosadapter.service ] &&\
803
            ${csudo}cp ${script_dir}/cfg/taosadapter.service \
804
            ${service_config_dir}/ || :
805
        ${csudo}systemctl daemon-reload
806
    fi
807 808
}

H
hzcheng 已提交
809
function install_service() {
P
plum-lihui 已提交
810
    if ((${service_mod}==0)); then
H
hzcheng 已提交
811
        install_service_on_systemd
P
plum-lihui 已提交
812
    elif ((${service_mod}==1)); then
H
hzcheng 已提交
813
        install_service_on_sysvinit
P
plum-lihui 已提交
814
    else
L
lihui 已提交
815
        # must manual stop taosd
816
        kill_process taosd
H
hzcheng 已提交
817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850
    fi
}

vercomp () {
    if [[ $1 == $2 ]]; then
        return 0
    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
}

function is_version_compatible() {

851
    curr_version=`ls ${script_dir}/driver/libtaos.so* | awk -F 'libtaos.so.' '{print $2}'`
H
hzcheng 已提交
852

853 854 855
    if [ -f ${script_dir}/driver/vercomp.txt ]; then
        min_compatible_version=`cat ${script_dir}/driver/vercomp.txt`
    else
856
        min_compatible_version=$(${script_dir}/bin/taosd -V | head -1 | cut -d ' ' -f 5)
857
    fi
H
hzcheng 已提交
858

859 860 861 862 863 864 865 866 867
    # [TD-5628] prompt to execute taosd --force-keep-file if upgrade from lower version within 2.0.16.0
    exist_version=$(/usr/local/taos/bin/taosd -V | head -1 | cut -d ' ' -f 3)
    vercomp $exist_version "2.0.16.0"
    case $? in
        2)
          prompt_force=1
          ;;
    esac

H
hzcheng 已提交
868
    vercomp $curr_version $min_compatible_version
869 870
    echo "" # avoid $? value not update

H
hzcheng 已提交
871 872 873 874 875 876 877 878
    case $? in
        0) return 0;;
        1) return 0;;
        2) return 1;;
    esac
}

function update_TDengine() {
879 880 881 882 883 884
    # Check if version compatible
    if ! is_version_compatible; then
        echo -e "${RED}Version incompatible${NC}"
        return 1
    fi

H
hzcheng 已提交
885 886 887 888 889
    # Start to update
    if [ ! -e taos.tar.gz ]; then
        echo "File taos.tar.gz does not exist"
        exit 1
    fi
L
lihui 已提交
890
    tar -zxf taos.tar.gz
891
    install_jemalloc
892 893
    #install_avro lib
    #install_avro lib64
H
hzcheng 已提交
894

L
lihui 已提交
895
    echo -e "${GREEN}Start to update TDengine...${NC}"
H
hzcheng 已提交
896 897
    # Stop the service if running
    if pidof taosd &> /dev/null; then
P
plum-lihui 已提交
898
        if ((${service_mod}==0)); then
899
            ${csudo}systemctl stop taosd || :
P
plum-lihui 已提交
900
        elif ((${service_mod}==1)); then
901
            ${csudo}service taosd stop || :
H
hzcheng 已提交
902
        else
903 904 905 906
            kill_process taosd
        fi
        sleep 1
    fi
907

908 909 910
    if [ "$verMode" == "cluster" ]; then
      if pidof nginx &> /dev/null; then
        if ((${service_mod}==0)); then
911
            ${csudo}systemctl stop nginxd || :
912
        elif ((${service_mod}==1)); then
913
            ${csudo}service nginxd stop || :
914 915
        else
            kill_process nginx
H
hzcheng 已提交
916 917
        fi
        sleep 1
918
      fi
H
hzcheng 已提交
919
    fi
920

H
hzcheng 已提交
921 922 923 924 925
    install_main_path

    install_log
    install_header
    install_lib
L
lihui 已提交
926 927 928
    if [ "$pagMode" != "lite" ]; then
      install_connector
    fi
H
hzcheng 已提交
929 930 931 932
    install_examples
    if [ -z $1 ]; then
        install_bin
        install_service
933
        install_taosadapter_service
934
        install_config
935
        install_taosadapter_config
936

H
Hui Li 已提交
937
        openresty_work=false
938
        if [ "$verMode" == "cluster" ]; then
S
slguan 已提交
939 940 941 942 943 944 945 946 947 948
            # 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
                    echo -e "\033[44;32;1mNginx for TDengine is updated successfully!${NC}"
                    openresty_work=true
                else
                    echo -e "\033[44;31;5mNginx for TDengine does not work! Please try again!\033[0m"
                fi
            fi
949
        fi
H
hzcheng 已提交
950

H
Hui Li 已提交
951 952
        #echo
        #echo -e "\033[44;32;1mTDengine is updated successfully!${NC}"
H
hzcheng 已提交
953 954
        echo
        echo -e "${GREEN_DARK}To configure TDengine ${NC}: edit /etc/taos/taos.cfg"
955
        echo -e "${GREEN_DARK}To configure Taos Adapter (if has) ${NC}: edit /etc/taos/taosadapter.toml"
P
plum-lihui 已提交
956
        if ((${service_mod}==0)); then
957
            echo -e "${GREEN_DARK}To start TDengine     ${NC}: ${csudo}systemctl start taosd${NC}"
P
plum-lihui 已提交
958
        elif ((${service_mod}==1)); then
959
            echo -e "${GREEN_DARK}To start TDengine     ${NC}: ${csudo}service taosd start${NC}"
H
hzcheng 已提交
960
        else
961
            echo -e "${GREEN_DARK}To start Taos Adapter (if has)${NC}: taosadapter &${NC}"
P
plum-lihui 已提交
962
            echo -e "${GREEN_DARK}To start TDengine     ${NC}: ./taosd${NC}"
H
hzcheng 已提交
963 964
        fi

H
Hui Li 已提交
965
        if [ ${openresty_work} = 'true' ]; then
H
Hui Li 已提交
966
            echo -e "${GREEN_DARK}To access TDengine    ${NC}: use ${GREEN_UNDERLINE}taos -h $serverFqdn${NC} in shell OR from ${GREEN_UNDERLINE}http://127.0.0.1:${nginx_port}${NC}"
S
slguan 已提交
967
        else
H
Hui Li 已提交
968
            echo -e "${GREEN_DARK}To access TDengine    ${NC}: use ${GREEN_UNDERLINE}taos -h $serverFqdn${NC} in shell${NC}"
S
slguan 已提交
969
        fi
970

971 972 973 974
        if ((${prompt_force}==1)); then
          echo ""
          echo -e "${RED}Please run 'taosd --force-keep-file' at first time for the exist TDengine $exist_version!${NC}"
        fi
H
hzcheng 已提交
975 976 977
        echo
        echo -e "\033[44;32;1mTDengine is updated successfully!${NC}"
    else
L
lihui 已提交
978
        install_bin
H
hzcheng 已提交
979 980 981 982 983 984 985 986 987 988 989 990
        install_config

        echo
        echo -e "\033[44;32;1mTDengine client is updated successfully!${NC}"
    fi

    rm -rf $(tar -tf taos.tar.gz)
}

function install_TDengine() {
    # Start to install
    if [ ! -e taos.tar.gz ]; then
H
Hui Li 已提交
991 992
      echo "File taos.tar.gz does not exist"
      exit 1
H
hzcheng 已提交
993
    fi
L
lihui 已提交
994
    tar -zxf taos.tar.gz
H
hzcheng 已提交
995

L
lihui 已提交
996
    echo -e "${GREEN}Start to install TDengine...${NC}"
997 998 999

    install_main_path

H
hzcheng 已提交
1000 1001
    if [ -z $1 ]; then
        install_data
1002 1003 1004
    fi

    install_log
H
hzcheng 已提交
1005 1006
    install_header
    install_lib
1007
    install_jemalloc
1008 1009
    #install_avro lib
    #install_avro lib64
1010

L
lihui 已提交
1011 1012 1013
    if [ "$pagMode" != "lite" ]; then
      install_connector
    fi
H
hzcheng 已提交
1014 1015 1016 1017 1018 1019
    install_examples

    if [ -z $1 ]; then # install service and client
        # For installing new
        install_bin
        install_service
1020
        install_taosadapter_service
S
slguan 已提交
1021

H
Hui Li 已提交
1022 1023
        openresty_work=false
        if [ "$verMode" == "cluster" ]; then
S
slguan 已提交
1024 1025 1026 1027 1028 1029 1030 1031 1032 1033
            # 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
                    echo -e "\033[44;32;1mNginx for TDengine is installed successfully!${NC}"
                    openresty_work=true
                else
                    echo -e "\033[44;31;5mNginx for TDengine does not work! Please try again!\033[0m"
                fi
            fi
        fi
1034 1035

        install_config
H
hzcheng 已提交
1036 1037

        # Ask if to start the service
H
Hui Li 已提交
1038 1039
        #echo
        #echo -e "\033[44;32;1mTDengine is installed successfully!${NC}"
H
hzcheng 已提交
1040 1041
        echo
        echo -e "${GREEN_DARK}To configure TDengine ${NC}: edit /etc/taos/taos.cfg"
1042
        echo -e "${GREEN_DARK}To configure taosadapter (if has) ${NC}: edit /etc/taos/taosadapter.toml"
P
plum-lihui 已提交
1043
        if ((${service_mod}==0)); then
1044
          echo -e "${GREEN_DARK}To start TDengine     ${NC}: ${csudo}systemctl start taosd${NC}"
P
plum-lihui 已提交
1045
        elif ((${service_mod}==1)); then
1046
          echo -e "${GREEN_DARK}To start TDengine     ${NC}: ${csudo}service taosd start${NC}"
H
hzcheng 已提交
1047
        else
1048
          echo -e "${GREEN_DARK}To start Taos Adapter (if has)${NC}: taosadapter &${NC}"
H
Hui Li 已提交
1049
          echo -e "${GREEN_DARK}To start TDengine     ${NC}: taosd${NC}"
1050
        fi
H
Hui Li 已提交
1051

H
Hui Li 已提交
1052 1053 1054 1055 1056
        #if [ ${openresty_work} = 'true' ]; then
        #     echo -e "${GREEN_DARK}To access TDengine    ${NC}: use ${GREEN_UNDERLINE}taos${NC} in shell OR from ${GREEN_UNDERLINE}http://127.0.0.1:${nginx_port}${NC}"
        #else
        #     echo -e "${GREEN_DARK}To access TDengine    ${NC}: use ${GREEN_UNDERLINE}taos${NC} in shell${NC}"
        #fi
1057

H
Hui Li 已提交
1058
        if [ ! -z "$firstEp" ]; then
1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072
            tmpFqdn=${firstEp%%:*}
            substr=":"
            if [[ $firstEp =~ $substr ]];then
                tmpPort=${firstEp#*:}
            else
                tmpPort=""
            fi
            if [[ "$tmpPort" != "" ]];then
                echo -e "${GREEN_DARK}To access TDengine    ${NC}: taos -h $tmpFqdn -P $tmpPort${GREEN_DARK} to login into cluster, then${NC}"
            else
                echo -e "${GREEN_DARK}To access TDengine    ${NC}: taos -h $tmpFqdn${GREEN_DARK} to login into cluster, then${NC}"
            fi
            echo -e "${GREEN_DARK}execute ${NC}: create dnode 'newDnodeFQDN:port'; ${GREEN_DARK}to add this new node${NC}"
            echo
H
Hui Li 已提交
1073
        elif [ ! -z "$serverFqdn" ]; then
1074 1075
            echo -e "${GREEN_DARK}To access TDengine    ${NC}: taos -h $serverFqdn${GREEN_DARK} to login into TDengine server${NC}"
            echo
S
slguan 已提交
1076
        fi
1077

H
hzcheng 已提交
1078
        echo -e "\033[44;32;1mTDengine is installed successfully!${NC}"
1079
        echo
H
hzcheng 已提交
1080 1081 1082 1083 1084 1085
    else # Only install client
        install_bin
        install_config
        echo
        echo -e "\033[44;32;1mTDengine client is installed successfully!${NC}"
    fi
1086

1087
    touch ~/.taos_history
H
hzcheng 已提交
1088 1089 1090 1091 1092
    rm -rf $(tar -tf taos.tar.gz)
}


## ==============================Main program starts from here============================
H
[NONE]  
Hui Li 已提交
1093
serverFqdn=$(hostname)
H
Hui Li 已提交
1094
if [ "$verType" == "server" ]; then
H
hzcheng 已提交
1095 1096
    # Install server and client
    if [ -x ${bin_dir}/taosd ]; then
S
slguan 已提交
1097
        update_flag=1
H
hzcheng 已提交
1098 1099 1100 1101
        update_TDengine
    else
        install_TDengine
    fi
H
Hui Li 已提交
1102 1103
elif [ "$verType" == "client" ]; then
    interactiveFqdn=no
H
hzcheng 已提交
1104 1105
    # Only install client
    if [ -x ${bin_dir}/taos ]; then
S
slguan 已提交
1106
        update_flag=1
H
hzcheng 已提交
1107 1108 1109 1110
        update_TDengine client
    else
        install_TDengine client
    fi
1111 1112
else
    echo  "please input correct verType"
H
hzcheng 已提交
1113
fi