知识库

Loading

0 评论 / 0 点赞 / 445 阅读  安装部署 最后更新: 2022-09-20 作者: 飞致云 总字数: 6133

1 安装说明

有些情况下用户为了快速体验,或者不太容易获取虚机但又想了解并进行评估,会提出在 MAC 电脑进行部署。而 DataEase 本身的各个组件都是容器镜像,技术也完全可以。

本教程对 install.sh 做了修改,去掉了 Linux 特有的命令和设置,同时前提为事先手工安装好 Docker 与 Docker compose。针对原有脚本中的 “envsubst" 命令,用一个小的 perl 脚本进行替代,避免在 MAC 上额外安装 gettext(如倾向安装 gettext,则可忽略 envsubst 脚本)

由于假设Docker已经事先安装,在安装DE过程中完全可以以当前用户运行 install.sh,而无须 root 或 sudo 进行安装(同样的情况也适用于 Linux 以非 root 安装),只需要在 install.conf 中将 DE_BASE 设为当前用户有权限写的目录。

注:为节约资源,压缩包中的安装脚本默认不安装 Doris 和 Kettle,只支持直连模式

2 安装步骤

2.1 安装 Docker

下载地址: https://docs.docker.com/desktop/mac/install/

2.2 下载并解压 DataEase 安装包

下载地址: dataease-1.x-offline.tar.gz下载

2.3 编写 install.sh 并替换解压目录文件

vi install.sh

#!/bin/bash

CURRENT_DIR=$(
cd "$(dirname "$0")"
pwd
)

function log() {
message="[DATAEASE Log]: $1 "
echo -e "${message}" 2>&1 | tee -a ${CURRENT_DIR}/install.log
}

args=$@
os=`uname -a`

if which docker >/dev/null; then
log "Docker is installed. Moving on..."
else
log "Docker is Not yet installed, please install Docker first"
exit 1
fi

docker_config_folder="/etc/docker"
compose_files="-f docker-compose.yml"

if [ -f /usr/local/bin/dectl ]; then
# 获取已安装的 DataEase 的运行目录
DE_BASE=`grep "^DE_BASE=" /usr/local/bin/dectl | cut -d'=' -f2`
dectl uninstall
fi

set -a
if [[ $DE_BASE ]] && [[ -f $DE_BASE/dataease/.env ]]; then
source $DE_BASE/dataease/.env
else
source ${CURRENT_DIR}/install.conf
fi
set +a

DE_RUN_BASE=$DE_BASE/dataease
conf_folder=${DE_RUN_BASE}/conf
templates_folder=${DE_RUN_BASE}/templates
mysql_container_name="mysql"
if [ -f ${DE_RUN_BASE}/docker-compose-mysql.yml ]; then
mysql_container_name=`grep "container_name" ${DE_RUN_BASE}/docker-compose-mysql.yml | awk -F': ' '{print $2}'`
fi

dataease_conf=${conf_folder}/dataease.properties

function prop {
[ -f "$1" ] | grep -P "^\s*[^#]?${2}=.*$" $1 | cut -d'=' -f2
}

if [[ -f $dataease_conf ]] && [[ ! ${DE_EXTERNAL_DORIS} ]]; then
export DE_DORIS_DB=$(prop $dataease_conf doris.db)
export DE_DORIS_USER=$(prop $dataease_conf doris.user)
export DE_DORIS_PASSWORD=$(prop $dataease_conf doris.password)
export DE_DORIS_HOST=$(prop $dataease_conf doris.host)
export DE_DORIS_PORT=$(prop $dataease_conf doris.port)
export DE_DORIS_HTTPPORT=$(prop $dataease_conf doris.httpPort)

if [ ${DE_DORIS_HOST} = "doris-fe" ]; then
export DE_EXTERNAL_DORIS="false"
else
export DE_EXTERNAL_DORIS="true"
fi
fi

if [ ${DE_EXTERNAL_DORIS} = "false" ]; then
compose_files="${compose_files} -f docker-compose-doris.yml"
fi

if [[ -f $dataease_conf ]] && [[ ! ${DE_EXTERNAL_KETTLE} ]]; then
export DE_CARTE_HOST=$(prop $dataease_conf carte.host)
export DE_CARTE_PORT=$(prop $dataease_conf carte.port)
export DE_CARTE_USER=$(prop $dataease_conf carte.user)
export DE_CARTE_PASSWORD=$(prop $dataease_conf carte.passwd)

if [ ${DE_CARTE_HOST} = "kettle" ]; then
export DE_EXTERNAL_KETTLE="false"
else
export DE_EXTERNAL_KETTLE="true"
fi
fi

if [ ${DE_EXTERNAL_KETTLE} = "false" ]; then
compose_files="${compose_files} -f docker-compose-kettle.yml"
fi


echo -e "======================= 开始安装 =======================" 2>&1 | tee -a ${CURRENT_DIR}/install.log

mkdir -p ${DE_RUN_BASE}
cp -r ./dataease/* ${DE_RUN_BASE}/

cd $DE_RUN_BASE
set | grep DE_ >.env

mkdir -p $conf_folder
mkdir -p ${DE_RUN_BASE}/data/kettle
mkdir -p ${DE_RUN_BASE}/data/fe
mkdir -p ${DE_RUN_BASE}/data/be
mkdir -p ${DE_RUN_BASE}/data/mysql

DE_MYSQL_HOST_ORIGIN=$DE_MYSQL_HOST
DE_MYSQL_PORT_ORIGIN=$DE_MYSQL_PORT

if [ ${DE_EXTERNAL_MYSQL} = "false" ]; then
compose_files="${compose_files} -f docker-compose-mysql.yml"
export DE_MYSQL_HOST=$mysql_container_name
export DE_MYSQL_PORT=3306
sed -i "s/^    container_name: mysql/    container_name: ${DE_MYSQL_HOST}/g" docker-compose-mysql.yml
else
sed -i -e "/^    depends_on/,+2d" docker-compose.yml
fi


log "拷贝配置文件模板文件  -> $conf_folder"
cd $DE_RUN_BASE
cp -r $templates_folder/* $conf_folder
cp -r $templates_folder/.kettle $conf_folder

log "根据安装配置参数调整配置文件"
cd ${templates_folder}
templates_files=( dataease.properties mysql.env )
for i in ${templates_files[@]}; do
if [ -f $i ]; then
envsubst < $i > $conf_folder/$i
fi
done

export DE_MYSQL_HOST=$DE_MYSQL_HOST_ORIGIN
export DE_MYSQL_PORT=$DE_MYSQL_PORT_ORIGIN

cd ${CURRENT_DIR}
sed -i -e "s#DE_BASE=.*#DE_BASE=${DE_BASE}#g" dectl
\cp dectl /usr/local/bin && chmod +x /usr/local/bin/dectl
if [ ! -f /usr/bin/dectl ]; then
ln -s /usr/local/bin/dectl /usr/bin/dectl 2>/dev/null
fi

echo "time: $(date)"

export COMPOSE_HTTP_TIMEOUT=180
cd ${CURRENT_DIR}
# 加载镜像
if [[ -d images ]]; then
log "加载镜像"
for i in $(ls images); do
image_name=`echo $i | awk -F: '{print $1}'`
if [[ $image_name = "dataease" ]] || [[ $image_name = "mysql" ]];then
docker load -i images/$i 2>&1 | tee -a ${CURRENT_DIR}/install.log
fi
done
else
log "拉取镜像"
cd ${DE_RUN_BASE} && docker-compose $compose_files pull 2>&1
cd -
fi




http_code=`curl -sILw "%{http_code}\n" http://localhost:${DE_PORT} -o /dev/null`
if [[ $http_code == 200 ]];then
log "停止服务进行升级..."
dectl uninstall
fi

log "启动服务"
dectl reload | tee -a ${CURRENT_DIR}/install.log
dectl status 2>&1 | tee -a ${CURRENT_DIR}/install.log

for b in {1..30}
do
sleep 3
http_code=`curl -sILw "%{http_code}\n" http://localhost:${DE_PORT} -o /dev/null`
if [[ $http_code == 000 ]];then
log "服务启动中,请稍候 ..."
elif [[ $http_code == 200 ]];then
log "服务启动成功!"
break;
else
log "服务启动出错!"
exit 1
fi
done

if [[ $http_code != 200 ]];then
log "【警告】服务在等待时间内未完全启动!请稍后使用 dectl status 检查服务运行状况。"
fi

echo -e "======================= 安装完成 =======================\n" 2>&1 | tee -a ${CURRENT_DIR}/install.log
echo -e "请通过以下方式访问:\n URL: http://\$LOCAL_IP:$DE_PORT\n 用户名: admin\n 初始密码: dataease" 2>&1 | tee -a ${CURRENT_DIR}/install.log

复制 install.sh 到 dataease-v1.x-offline 解压目录

2.4 编写 envsubst 脚本到 /usr/local/bin

vi /usr/local/bin/envsubst

#!/usr/bin/perl -p
$_ =~ s/\Q${$1||$2}/$ENV{$1?$2:$4}/ while $_ =~ /(\$\{([^}]+)})|(\$(\w+))/g;

添加执行权限
chmod u+x /usr/local/bin/envsubst

注意:这是Perl脚本,仅在以下情况下才可用:
a. 你不想安装附件包 gettext
b. gettext 安装有问题(通常使用 “brew install gettext” 命令,该命令应包含命令 envsubst)
c. 它将替换 Linux 命令 envsubst

2.5 编辑 install.conf

1.9.0 之前版本

DE_BASE=/Users/
DE_EXTERNAL_DORIS=true
DE_EXTERNAL_KETTLE=true

1.9.0 及 1.9.0之后版本

DE_BASE=/Users/
DE_ENGINE_MODE=simple 或 local

2.6 执行安装

#在 dataease-v1.x-offline 解压目录执行
./install.sh

3 访问

在浏览器访问 http://localhost

文章目录
其他资源