官术网_书友最值得收藏!

Explaining the setup.sh script

The setup.sh script is the core of all the cloud based installation options. Regarding an image-based installation, you don't have to dive into the details of this script, but if you want to install Redash manually (or are just curious about the internals), it's better to take a quick look at it.

In case you intend to use the setup.sh script for production environment:

For small scale deployments you can use it as is.

But for large scale deployments where Redash is mission critical, and needs to be Highly Available, it's recommend that you set up a separate server for PostgreSQL and Redis, as well as set up at least 2 servers for Redash for redundancy.

The number of celery workers can be modified based on your usage patterns.

Let's break the script into parts while going over it.

At first, we set Redash base installation path, and start defining helper functions.

The following is the definition of helper function, which installs the docker compose as well as surrounding components:

#!/usr/bin/env bash
# This script setups dockerized Redash on Ubuntu 18.04.
set -eu

REDASH_BASE_PATH=/opt/redash

install_docker(){
    # Install Docker
    sudo apt-get update 
    sudo apt-get -yy install apt-transport-https ca-certificates curl software-properties-common wget pwgen
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    sudo apt-get update && sudo apt-get -y install docker-ce

    # Install Docker Compose
    sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose

    # Allow current user to run Docker commands
    sudo usermod -aG docker $USER
    newgrp docker
}

The following is a helper function that creates the directories for Redash installation: 

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
}

The following is a helper function that creates and persists Environment Variables used in Redash:

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)
    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_DATABASE_URL=$REDASH_DATABASE_URL" >> $REDASH_BASE_PATH/env
}

The following helper function fetches the latest docker image, as well as docker-compose file, and runs it:

setup_compose() {
    REQUESTED_CHANNEL=stable
    LATEST_VERSION=`curl -s "https://version.redash.io/api/releases?channel=$REQUESTED_CHANNEL"  | json_pp  | grep "docker_image" | head -n 1 | awk 'BEGIN{FS=":"}{print $3}' | awk 'BEGIN{FS="\""}{print $1}'`

    cd $REDASH_BASE_PATH
    REDASH_BRANCH="${REDASH_BRANCH:-master}" # Default branch/version to master if not specified in REDASH_BRANCH env var
    wget https://raw.githubusercontent.com/getredash/redash/${REDASH_BRANCH}/setup/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_FILE=/opt/redash/docker-compose.yml" >> ~/.profile
    source ~/.profile
    docker-compose run --rm server create_db
    docker-compose up -d
}

The following code invokes all the previously defined functions (the order here is important):

install_docker
create_directories
create_config
setup_compose
主站蜘蛛池模板: 巴彦淖尔市| 云浮市| 辰溪县| 清水河县| 茌平县| 中卫市| 大竹县| 安吉县| 永修县| 金塔县| 南皮县| 邹平县| 金溪县| 邯郸县| 民权县| 商南县| 忻州市| 安溪县| 武威市| 胶南市| 松阳县| 威宁| 仪征市| 平和县| 大方县| 靖西县| 山阴县| 息烽县| 庆云县| 汝南县| 察雅县| 平乡县| 扎囊县| 贵溪市| 西青区| 黑龙江省| 榆林市| 灵山县| 华安县| 嵊州市| 阳泉市|