Centos 7 一鍵安裝Redash (Centos7 + Docker)

最近一段時間,運營找我們要報表的數據頻率越來越高。 我們就使用之前搭建的報表系統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。

執行方法:

  1. 將源碼保存到~/setup.sh。

  2. 在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`

如果出現中斷退出,可以再執行該腳本。

最後執行成功如下
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章