最近一段時間,運營找我們要報表的數據頻率越來越高。 我們就使用之前搭建的報表系統CBoard,讓運營自己去導。
用了一段時間後,運營反饋說導大數據量的時候導不出來,結果發現是服務器超時,經過一翻折騰,最多還是隻能導六萬多條就報錯了。
不想通過修改java源碼,老大就說再找找其他開源的報表系統。
最後找到Redash,因爲要進行調研,研究Redash報表系統是否滿足我們的要求,就需要進行搭建演示系統。
剛開始,想着直接用Centos 7系統,直接使用Redash源碼安裝,結果在搭建Python 3環境,安裝pip依賴環境,編譯Redash源碼這幾個步驟卡了好久,環境各種報錯,各種安裝失敗。
折騰了2天,還是沒搞定環境。😂😂😂😂😂😂
好吧,我的目的是搭建演示系統,進行研究。
官方文檔,推薦用Docker。
Centos源碼安裝不來,就放棄直接用Centos7安裝,直接在我Mac電腦上使用Docker鏡像進行嘗試。
Mac電腦上的Docker跑起來了,結果連接不上數據庫。
再去看官方文檔,官方文檔推薦Ubuntu+docker,我就用Ubuntu再搭建一個。
最後,根據官方文檔的Ubuntu+docker,跑起來了。
隨着之前的研究,對Redash的認識更深一步了。
我網上找了Centos+Docker的腳本,進行了修改,終於可以在Centos上運行Redash。
執行方法:
-
將源碼保存到~/setup.sh。
-
在centos 7命令行執行:
source ~/setup.sh
源碼
#!/usr/bin/env bash
# This script sets up dockerized Redash on CentOS 7
set -u
REDASH_BASE_PATH=/opt/redash
COMPOSE_PATH=/usr/local/bin/docker-compose
COMPOSE_VERSION="1.25.5"
distro=centos7
install_docker(){
# Install Docker
sudo yum -y update
sudo yum -y install https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
sudo curl -L -o /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
sudo chown root:root /etc/yum.repos.d/docker-ce.repo
sudo restorecon -Fv /etc/yum.repos.d/docker-ce.repo
sudo yum -y install docker-ce pwgen yajl
sudo systemctl start docker
# Install Docker Compose
#sudo curl -L https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
# 改成國內鏡像
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x ${COMPOSE_PATH}
sudo restorecon -Fv ${COMPOSE_PATH}
# Allow current user to run Docker commands
sudo usermod -aG docker $USER
}
create_directories() {
if [[ ! -e $REDASH_BASE_PATH ]]; then
sudo mkdir -p $REDASH_BASE_PATH
sudo chown $USER:$USER $REDASH_BASE_PATH
fi
if [[ ! -e $REDASH_BASE_PATH/postgres-data ]]; then
mkdir $REDASH_BASE_PATH/postgres-data
fi
}
create_config() {
if [[ -e $REDASH_BASE_PATH/env ]]; then
rm $REDASH_BASE_PATH/env
touch $REDASH_BASE_PATH/env
fi
COOKIE_SECRET=$(pwgen -1s 32)
SECRET_KEY=$(pwgen -1s 32)
POSTGRES_PASSWORD=$(pwgen -1s 32)
REDASH_DATABASE_URL="postgresql://postgres:${POSTGRES_PASSWORD}@postgres/postgres"
echo "PYTHONUNBUFFERED=0" >> $REDASH_BASE_PATH/env
echo "REDASH_LOG_LEVEL=INFO" >> $REDASH_BASE_PATH/env
echo "REDASH_REDIS_URL=redis://redis:6379/0" >> $REDASH_BASE_PATH/env
echo "POSTGRES_PASSWORD=$POSTGRES_PASSWORD" >> $REDASH_BASE_PATH/env
echo "REDASH_COOKIE_SECRET=$COOKIE_SECRET" >> $REDASH_BASE_PATH/env
echo "REDASH_SECRET_KEY=$SECRET_KEY" >> $REDASH_BASE_PATH/env
echo "REDASH_DATABASE_URL=$REDASH_DATABASE_URL" >> $REDASH_BASE_PATH/env
}
setup_compose() {
REQUESTED_CHANNEL=stable
LATEST_VERSION=`curl -s "https://version.redash.io/api/releases?channel=$REQUESTED_CHANNEL" | json_reformat | grep "docker_image" | head -n 1 | awk 'BEGIN{FS=":"}{print $3}' | awk 'BEGIN{FS="\""}{print $1}'`
cd $REDASH_BASE_PATH
GIT_BRANCH="${REDASH_BRANCH:-master}" # Default branch/version to master if not specified in REDASH_BRANCH env var
wget https://raw.githubusercontent.com/getredash/setup/${GIT_BRANCH}/data/docker-compose.yml
sed -ri "s/image: redash\/redash:([A-Za-z0-9.-]*)/image: redash\/redash:$LATEST_VERSION/" docker-compose.yml
echo "export COMPOSE_PROJECT_NAME=redash" >> ~/.profile
echo "export COMPOSE_PROJECT_NAME=redash" >> ~/.bashrc
echo "export COMPOSE_FILE=/opt/redash/docker-compose.yml" >> ~/.profile
echo "export COMPOSE_FILE=/opt/redash/docker-compose.yml" >> ~/.bashrc
export COMPOSE_PROJECT_NAME=redash
export COMPOSE_FILE=/opt/redash/docker-compose.yml
/usr/local/bin/docker-compose run --rm server create_db
/usr/local/bin/docker-compose up -d
}
install_docker
create_directories
create_config
setup_compose
# Make the new docker user group effective, so the user doesn't need to re-login
exec sg docker newgrp `id -gn`
如果出現中斷退出,可以再執行該腳本。
最後執行成功如下