2021年10月7日木曜日

Ubuntu 20.04にApache SupersetとPostgreSQL 14をインストールする

Apache SupersetはPython製のBIツールです。

〇Apache Supersetの画面

インストール方法

1.PostgreSQL14のインストール
以下のコマンドを実行します。
sudo localedef -i ja_JP -c -f UTF-8 -A /usr/share/locale/locale.alias ja_JP.UTF-8
※ locale -aでja_JP.UTF-8が表示されれば実行する必要なし

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

sudo apt-get update

sudo apt-get -y install postgresql-14

echo "listen_addresses='*'" | sudo tee -a /etc/postgresql/14/main/postgresql.conf

sudo sed -i 's/host.*all.*all.*127.0.0.1/#host    all             all             127.0.0.1/g' /etc/postgresql/14/main/pg_hba.conf

sudo sed -i 's|^host.*all.*all.*::1/128|#host    all             all             ::1/128|g' /etc/postgresql/14/main/pg_hba.conf

echo "host    all         all         127.0.0.1/32          password" | sudo tee -a /etc/postgresql/14/main/pg_hba.conf

echo "host    all         all         ::1/128          password" | sudo tee -a /etc/postgresql/14/main/pg_hba.conf

echo "host    all         all         192.168.1.0/24          password" | sudo tee -a /etc/postgresql/14/main/pg_hba.conf
※ネットワークアドレスは適宜変更してください

sudo systemctl restart postgresql.service

sudo su - postgres << EOF
psql -c "
alter user postgres with password 'postgres';
create user superset with password 'superset';
"
psql -c "
create database superset owner superset encoding 'UTF8' lc_collate 'ja_JP.UTF-8' lc_ctype 'ja_JP.UTF-8' template 'template0';
"
EOF
※パスワードは適宜変更してください

2.pipenvのインストール
sudo apt-get -y install python3-pip python3-distutils python3-dev python3-testresources

sudo pip3 install --upgrade setuptools

sudo pip3 install pipenv

echo "export PIPENV_VENV_IN_PROJECT=true" >> ~/.bashrc

echo "export PYTHONPATH=/home/ubuntu/superset" >> ~/.bashrc
※この例ではubuntuユーザのホームディレクトリ下のsupersetディレクトリにsuperset_config.pyを配置することを想定しています。適宜パスを変更してください。

source ~/.bashrc

3.Apache Supersetのインストール
sudo apt-get -y install build-essential libssl-dev libffi-dev libsasl2-dev libldap2-dev

mkdir -p ~/superset

cd ~/superset

pipenv --python 3

pipenv install apache-superset

pipenv install psycopg2-binary

SECRET_KEY=`echo -e "import os; print(os.urandom(24).hex())" | python3`

cat << EOF > superset_config.py
# Superset specific config
ROW_LIMIT = 5000

BABEL_DEFAULT_LOCALE='ja'

SUPERSET_WEBSERVER_PORT = 8088

# Flask App Builder configuration
# Your App secret key
#SECRET_KEY = '\2\1thisismyscretkey\1\2\e\y\y\h'
SECRET_KEY = '#####'

# The SQLAlchemy connection string to your database backend
# This connection defines the path to the database that stores your
# superset metadata (slices, connections, tables, dashboards, ...).
# Note that the connection information to connect to the datasources
# you want to explore are managed directly in the web UI
#SQLALCHEMY_DATABASE_URI = 'sqlite:////path/to/superset.db'
SQLALCHEMY_DATABASE_URI = 'postgresql://superset:superset@localhost/superset?sslmode=require'

# Flask-WTF flag for CSRF
WTF_CSRF_ENABLED = True
# Add endpoints that need to be exempt from CSRF protection
WTF_CSRF_EXEMPT_LIST = []
# A CSRF token that expires in 1 year
WTF_CSRF_TIME_LIMIT = 60 * 60 * 24 * 365

# Set this API key to enable Mapbox visualizations
MAPBOX_API_KEY = ''
EOF
※データベースのパスワードなど、適宜変更してください。

sed -i "s/#####/$SECRET_KEY/" superset_config.py

pipenv shell

superset db upgrade

superset fab create-admin --username admin --firstname admin --lastname user --email admin@localhost.localdomain --password admin
※管理者のユーザ名やパスワードなど適宜変更してください。

superset load_examples

superset init

superset run -h 0.0.0.0 -p 8088 --with-threads --reload
※動作の確認。Ctrl+Cで止めます。

4. サービス化
cat << EOF | sudo tee /etc/systemd/system/superset.service
[Unit]
Description=superset
[Service]
Type=simple
Environment=PYTHONPATH=/home/ubuntu/superset
ExecStart=/home/ubuntu/superset/.venv/bin/superset run -h 0.0.0.0 -p 8088 --with-threads --reload
User=ubuntu
Group=ubuntu
WorkingDirectory=/home/ubuntu/superset
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
※この例ではubuntuユーザでサービスを実行し、supersetをインストールした仮想環境は/home/ubuntu/supersetにあることを想定しています。適宜変更してください。

sudo systemctl enable superset.service

sudo systemctl start superset.service

ブラウザでhttp://<サーバ名またはIPアドレス>:8088/ にアクセスします。adminユーザ、パスワードadminでログインします。

関連情報

・Apache Supersetのインストール方法、ダッシュボードやチャートの作成方法は以下のページを参照してください。
Apache Supersetのまとめ

0 件のコメント:

コメントを投稿