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"
Z
zyyang 已提交
31
adapterName="taosadapter"
H
hzcheng 已提交
32

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

}

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

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

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

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

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

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

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

Z
change  
zyyang 已提交
503
  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_adapter_service() {
Z
change  
zyyang 已提交
685
  if ((${service_mod} == 0)); then
Z
zyyang 已提交
686 687
    [ -f ${script_dir}/cfg/${adapterName}.service ] &&
      ${csudo}cp ${script_dir}/cfg/${adapterName}.service \
Z
change  
zyyang 已提交
688 689 690
        ${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 updateProduct() {
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
  install_jemalloc

Z
change  
zyyang 已提交
772
  echo -e "${GREEN}Start to update ${productName}...${NC}"
Z
change  
zyyang 已提交
773
  # 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
  install_examples
  if [ -z $1 ]; then
    install_bin
    install_service
810
    install_adapter_service
Z
change  
zyyang 已提交
811
    install_config
812
    install_adapter_config
Z
change  
zyyang 已提交
813 814

    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
    echo -e "${GREEN_DARK}To configure ${productName} ${NC}: edit ${cfg_install_dir}/${configFile}"
Z
change  
zyyang 已提交
830
    echo -e "${GREEN_DARK}To configure Adapter (if has) ${NC}: edit ${cfg_install_dir}/${adapterName}.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
    else
Z
change  
zyyang 已提交
836
      echo -e "${GREEN_DARK}To start Adapter (if has)${NC}: ${adapterName} &${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 installProduct() {
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
  install_examples

  if [ -z $1 ]; then # install service and client
    # For installing new
    install_bin
    install_service
895 896
    install_adapter_service
    install_adapter_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
    echo -e "${GREEN_DARK}To configure ${productName} ${NC}: edit ${cfg_install_dir}/${configFile}"
Z
zyyang 已提交
916
    echo -e "${GREEN_DARK}To configure ${adapterName} (if has) ${NC}: edit ${cfg_install_dir}/${adapterName}.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
    else
Z
change  
zyyang 已提交
922
      echo -e "${GREEN_DARK}To start Adapter (if has)${NC}: ${adapterName} &${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
    update_flag=1
965
    updateProduct
Z
change  
zyyang 已提交
966
  else
967
    installProduct
Z
change  
zyyang 已提交
968
  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
    update_flag=1
974
    updateProduct client
Z
change  
zyyang 已提交
975
  else
976
    installProduct client
Z
change  
zyyang 已提交
977
  fi
978
else
Z
change  
zyyang 已提交
979
  echo "please input correct verType"
H
hzcheng 已提交
980
fi