CentOS7にSupersetを構築する方法


構築要件

  • Supersetは、VirtualEnvを使用して/var/superset配下に構築する。
  • Supersetで通常使用されるデータベースはsqliteだが、MySQLに変更する。

    MySQL5.7をインストール&初期設定済みであるものとする。

  • 使用するポートはデフォルトのままの8088。

インストール

関連ライブラリなど

  • ライブラリ群をインストール

    terminal
    yum -y install git gcc gcc-c++ libffi-devel sqlite-devel openssl-devel cyrus-sasl-devel openldap-devel readline-devel
    

PyEnv & VirtualEnvインストール

  • python環境はpyenv/virtualenvを通して構築する。

    terminal
    git clone https://github.com/yyuu/pyenv.git             /usr/local/src/pyenv
    git clone https://github.com/yyuu/pyenv-virtualenv.git  /usr/local/src/pyenv/plugins/pyenv-virtualenv   
    
    cat << \EOS > /etc/profile.d/pyenv.sh
    export PYENV_ROOT=/usr/local/src/pyenv
    export PATH=${PYENV_ROOT}/bin:${PATH}
    eval "$(pyenv init -)"
    eval "$(pyenv virtualenv-init -)"
    EOS
    
    source /etc/profile.d/pyenv.sh
    

pythonインストール

  • PyEnvを通して、Version 2.x.x/3.x.x(最新版はpyenv install --listで確認)をインストール。デフォルトは3.x.xにする。

    terminal
    source /etc/psourofile.d/pyenv.sh
    pyenv install --list
    pyenv install 2.7.13
    pyenv install 3.5.2
    pyenv install 3.6.0
    pyenv rehash
    pyenv global 3.6.0
    
  • 確認

    terminal
    python --version
    
    Python 3.6.0
    

VirtualEnv環境構築

  • /var/superset配下にVirtualEnv環境を構築

    terminal
    mkdir -p /var/superset
    cd /var/superset
    pyenv virtualenv 3.5.2 superset
    pyenv local superset
    

依存パッケージのインストール

  • 必要なパッケージをインストール & 更新

    terminal
    cd /var/superset
    pip install --upgrade pip setuptools
    

supersetインストール

  • pipからインストール

    terminal
    cd /var/superset
    pip install superset
    

初期設定

(スキップ可) 使用するDBをMariaDBに切り替える

以降の[...]は任意の値に置き換えること。

  • MySQL develインストール

    terminal
    yum -y install mysql-community-devel --enablerepo=mysql57-community
    
  • ドライバインストール

    terminal
    cd /var/superset
    pip install mysqlclient
    
  • データベース作成

    terminal
    mysql -u root -p -e "DROP DATABASE IF EXISTS [database];CREATE DATABASE [database] DEFAULT CHARACTER SET utf8mb4;"
    
  • ユーザー作成

    mysql -u root -p -e "GRANT ALL PRIVILEGES ON [database].* TO '[username]'@'[hostname]' IDENTIFIED BY '[password]' WITH GRANT OPTION;"
    
  • 確認

    terminal
    mysql -u root -p -e "SHOW DATABASES;USE mysql;SELECT User,Host,Password FROM user";
    
  • superset設定変更

    terminal
    cat << \EOS > /usr/local/src/pyenv/versions/3.5.2/envs/superset/bin/superset_config.py
    SQLALCHEMY_DATABASE_URI = 'mysql://[username]:[password]@[hostname]/[database]'
    EOS
    

adminユーザー作成

  • 管理者ユーザーを作成する

    terminal
    cd /var/superset
    fabmanager create-admin --app superset --username admin --firstname admin --lastname user --email [email protected] --password admin
    

データベースの初期化

  • データベース初期化コマンドを実行

    terminal
    cd /var/superset
    superset db upgrade
    

(スキップ可) サンプルデータインポート

  • サンプルデータ取込

    terminal
    cd /var/superset
    superset load_examples
    

ロール/パーミッション作成

  • コマンド実行

    terminal
    cd /var/superset
    superset init
    

動作確認

起動

  • 下記コマンドで実行する

    terminal
    cd /var/superset
    superset runserver -p 8088
    

確認

  • ブラウザで http://[hostname]:8088 へアクセスし、下記画面が表示されればOK。

サービス化

  • systemdで制御するよう設定する。

systemd設定

  • Unit定義ファイルを作成

    cat << \EOS > /etc/systemd/system/superset.service
    [Unit]
    Description=superset
    After=network.target
    
    [Service]
    Type=simple
    EnvironmentFile=/etc/sysconfig/superset.conf
    WorkingDirectory=/var/superset
    ExecStart=/usr/local/src/pyenv/shims/superset runserver -p $PORT -w $WORKERS
    ExecReload=/bin/kill -HUP $MAINPID
    Restart=on-failure
    
    KillSignal=SIGINT
    
    [Install]
    WantedBy=multi-user.target
    EOS
    
  • 設定ファイルを作成

    terminal
    cat << \EOS > /etc/sysconfig/superset.conf
    PORT=8088
    WORKERS=2
    EOS
    
  • 確認

    terminal
    systemctl list-unit-files --type=service | grep superset
    
    superset.service                            disabled
    
  • 自動起動設定

    terminal
    systemctl enable superset
    
    Created symlink from /etc/systemd/system/multi-user.target.wants/superset.service to /etc/systemd/system/superset.service.
    

サービス起動

起動

  • systemctlで起動する

    terminal
    systemctl start superset
    

確認

  • ブラウザで http://[hostname]:8088 へアクセスし、下記画面が表示されればOK。