• setup_cn.sh 7.24 kB 2024-05-21 02:18
  • Position: setup_cn.sh

    #!/bin/bash
    
    # 中国大陆需要安装脚本额外配置镜像地址以及低版本的 NodeJS 环境
    mcsmanager_install_path="/opt/mcsmanager"
    mcsmanager_download_addr="http://oss.duzuii.com/d/MCSManager/MCSManager/MCSManager-v10-linux.tar.gz"
    package_name="MCSManager-v10-linux.tar.gz"
    node="v16.20.2"
    arch=$(uname -m)
    
    if [ "$(id -u)" -ne 0]; then
      echo "This script must be run as root. Please use \"sudo bash\" instead."
      exit 1
    fi
    
    printf "\033c"
    
    echo_cyan() {
      printf '\033[1;36m%b\033[0m\n' "$@"
    }
    echo_red() {
      printf '\033[1;31m%b\033[0m\n' "$@"
    }
    
    echo_green() {
      printf '\033[1;32m%b\033[0m\n' "$@"
    }
    
    echo_cyan_n() {
      printf '\033[1;36m%b\033[0m' "$@"
    }
    
    echo_yellow() {
      printf '\033[1;33m%b\033[0m\n' "$@"
    }
    
    # script info
    echo_cyan "+----------------------------------------------------------------------
    | MCSManager 安装脚本
    +----------------------------------------------------------------------
    "
    
    Red_Error() {
      echo '================================================='
      printf '\033[1;31;40m%b\033[0m\n' "$@"
      echo '================================================='
      exit 1
    }
    
    Install_Node() {
      echo_cyan_n "[+] Install Node.JS environment...\n"
    
      rm -irf "$node_install_path"
    
      cd /opt || Red_Error "[x] Failed to enter /opt"
    
      rm -rf "node-$node-linux-$arch.tar.gz"
    
      wget "https://nodejs.org/dist/$node/node-$node-linux-$arch.tar.gz" || Red_Error "[x] Failed to download node release"
    
      tar -zxf "node-$node-linux-$arch.tar.gz" || Red_Error "[x] Failed to untar node"
    
      rm -rf "node-$node-linux-$arch.tar.gz"
    
      if [[ -f "$node_install_path"/bin/node ]] && [[ "$("$node_install_path"/bin/node -v)" == "$node" ]]; then
        echo_green "Success"
      else
        Red_Error "[x] Node installation failed!"
      fi
    
      echo
      echo_yellow "=============== Node.JS Version ==============="
      echo_yellow " node: $("$node_install_path"/bin/node -v)"
      echo_yellow " npm: v$(env "$node_install_path"/bin/node "$node_install_path"/bin/npm -v)"
      echo_yellow "=============== Node.JS Version ==============="
      echo
    
      sleep 3
    }
    
    Install_MCSManager() {
      echo_cyan "[+] Install MCSManager..."
    
      # stop service
      systemctl disable --now mcsm-{web,daemon}
    
      # delete service
      rm -rf /etc/systemd/system/mcsm-{daemon,web}.service
      systemctl daemon-reload
    
      mkdir -p "${mcsmanager_install_path}" || Red_Error "[x] Failed to create ${mcsmanager_install_path}"
    
      # cd /opt/mcsmanager
      cd "${mcsmanager_install_path}" || Red_Error "[x] Failed to enter ${mcsmanager_install_path}"
    
      # download MCSManager release
      wget "${mcsmanager_download_addr}" || Red_Error "[x] Failed to download MCSManager"
      tar -zxf ${package_name} -o || Red_Error "[x] Failed to untar ${package_name}"
      rm -rf "${mcsmanager_install_path}/${package_name}"
    
      # echo "[→] cd daemon"
      cd "${mcsmanager_install_path}/daemon" || Red_Error "[x] Failed to enter ${mcsmanager_install_path}/daemon"
    
      echo_cyan "[+] Install MCSManager-Daemon dependencies..."
      env "$node_install_path"/bin/node "$node_install_path"/bin/npm install --registry=https://registry.npmmirror.com --production --no-fund --no-audit &>/dev/null || Red_Error "[x] Failed to npm install in ${mcsmanager_install_path}/daemon"
    
      # echo "[←] cd .."
      cd "${mcsmanager_install_path}/web" || Red_Error "[x] Failed to enter ${mcsmanager_install_path}/web"
    
      echo_cyan "[+] Install MCSManager-Web dependencies..."
      env "$node_install_path"/bin/node "$node_install_path"/bin/npm install --registry=https://registry.npmmirror.com --production --no-fund --no-audit &>/dev/null || Red_Error "[x] Failed to npm install in ${mcsmanager_install_path}/web"
    
      echo
      echo_yellow "=============== MCSManager ==============="
      echo_green "Daemon: ${mcsmanager_install_path}/daemon"
      echo_green "Web: ${mcsmanager_install_path}/web"
      echo_yellow "=============== MCSManager ==============="
      echo
      echo_green "[+] MCSManager installation success!"
    
      chmod -R 755 "$mcsmanager_install_path"
    
      sleep 3
    }
    
    Create_Service() {
      echo_cyan "[+] Create MCSManager service..."
    
      echo "[Unit]
    Description=MCSManager-Daemon
    
    [Service]
    WorkingDirectory=${mcsmanager_install_path}/daemon
    ExecStart=${node_install_path}/bin/node app.js
    ExecReload=/bin/kill -s QUIT \$MAINPID
    ExecStop=/bin/kill -s QUIT \$MAINPID
    Environment=\"PATH=${PATH}\"
    
    [Install]
    WantedBy=multi-user.target
    " >/etc/systemd/system/mcsm-daemon.service
    
      echo "[Unit]
    Description=MCSManager-Web
    
    [Service]
    WorkingDirectory=${mcsmanager_install_path}/web
    ExecStart=${node_install_path}/bin/node app.js
    ExecReload=/bin/kill -s QUIT \$MAINPID
    ExecStop=/bin/kill -s QUIT \$MAINPID
    Environment=\"PATH=${PATH}\"
    
    [Install]
    WantedBy=multi-user.target
    " >/etc/systemd/system/mcsm-web.service
    
      systemctl daemon-reload
      systemctl enable --now mcsm-{daemon,web}.service
      echo_green "Registered!"
    
      sleep 2
    
      printf "\n\n\n\n"
    
      echo_yellow "=================================================================="
      echo_green "Installation is complete! Welcome to the MCSManager!!!"
      echo_yellow " "
      echo_cyan_n "HTTP Web Service:        "
      echo_yellow "http://<Your IP>:23333  (Browser)"
      echo_cyan_n "Daemon Address:          "
      echo_yellow "ws://<Your IP>:24444    (Cluster)"
      echo_red "You must expose ports 23333 and 24444 to use the service properly on the Internet."
      echo_yellow " "
      echo_cyan "Usage:"
      echo_cyan "systemctl start mcsm-{daemon,web}.service"
      echo_cyan "systemctl stop mcsm-{daemon,web}.service"
      echo_cyan "systemctl restart mcsm-{daemon,web}.service"
      echo_yellow " "
      echo_green "Official Document: https://docs.mcsmanager.com/"
      echo_yellow "=================================================================="
    }
    
    # Environmental inspection
    if [[ "$arch" == x86_64 ]]; then
      arch=x64
      #echo "[-] x64 architecture detected"
    elif [[ $arch == aarch64 ]]; then
      arch=arm64
      #echo "[-] 64-bit ARM architecture detected"
    elif [[ $arch == arm ]]; then
      arch=armv7l
      #echo "[-] 32-bit ARM architecture detected"
    elif [[ $arch == ppc64le ]]; then
      arch=ppc64le
      #echo "[-] IBM POWER architecture detected"
    elif [[ $arch == s390x ]]; then
      arch=s390x
      #echo "[-] IBM LinuxONE architecture detected"
    else
      Red_Error "[x] Sorry, this architecture is not supported yet!\n[x]Please try to install manually: https://github.com/MCSManager/MCSManager#linux"
    fi
    
    # Define the variable Node installation directory
    node_install_path="/opt/node-$node-linux-$arch"
    
    # Check network connection
    echo_cyan "[-] Architecture: $arch"
    
    # Install related software
    echo_cyan_n "[+] Installing dependent software (git, tar, wget)... "
    if [[ -x "$(command -v yum)" ]]; then
      yum install -y git tar wget
    elif [[ -x "$(command -v apt-get)" ]]; then
      apt-get install -y git tar wget
    elif [[ -x "$(command -v pacman)" ]]; then
      pacman -S --noconfirm git tar wget
    elif [[ -x "$(command -v zypper)" ]]; then
      zypper --non-interactive install git tar wget
    else
      echo_red "[!] Cannot find your package manager! You may need to install git, tar and wget manually!"
    fi
    
    # Determine whether the relevant software is installed successfully
    if [[ -x "$(command -v git)" && -x "$(command -v tar)" && -x "$(command -v wget)" ]]; then
      echo_green "Success"
    else
      Red_Error "[x] Failed to find git, tar and wget, please install them manually!"
    fi
    
    # Install the Node environment
    Install_Node
    
    # Install MCSManager
    Install_MCSManager
    
    # Create MCSManager background service
    Create_Service
    

    Powered by kodbox V1.62

    Copyright © kodcloud.com.

    Files