Přeskočit obsah

Rozběhnutí aplikace Superset bez Dockeru

Cíl

Mám Ubuntu 24.04 a chci rozběhnout aplikaci Apache Superset.

Postup

Vycházím z oficiální dokumentace obohacené o pár triků:

  • Metadatabáze je uložená přímo ve složce projektu a ne v ~/.superset/superset.db.
  • Tajnosti typu SUPERSET_SECRET_KEY jsou uloženy v souboru .env.
  • Pro instalaci závislostí použiju nástroj uv.
  • V souboru pyproject.toml definuji, že se má použít Python ve verzi 3.11, protože novější verze zatím nejsou podporované.

Připravil jsem skript, který výše uvedené zařídí. Takhle je možné ho spustit:

curl -sSL https://gist.githubusercontent.com/fertek/53a90e275c08cae5a406a6649df5b7af/raw/ | bash

Kromě závislostí typu build-essential zmíněných v dokumentaci je nutné ještě:

sudo apt install clang

Bez něj končil build Python balíčku python-geohash chybou.

Následně:

# Instalace balíčku apache-superset a závislostí do virtuálního prostředí ve složce .venv
uv sync

# Aktivace virtuálního prostředí
source .venv/bin/activate

A dál už je to shodné s dokumentací:

# define mandatory configurations
export FLASK_APP=superset SUPERSET_CONFIG_PATH=./superset_config.py

# initialize the metadata database
superset db upgrade

# create an admin user in your metadata database
superset fab create-admin

# create default roles and permissions
superset init

# start a development web server
superset run -p 8088 --with-threads --reload --debugger

Hotovo. Na http://localhost:8088/ je možné se přihlásit.

systemd a nginx

Může se hodit.

/etc/systemd/system/superset.service:

[Unit]
Description=Apache Superset
After=network.target

[Service]
Type=simple
User=web
Group=web
WorkingDirectory=/home/web/p/superset/
ExecStart=/home/web/p/superset/.venv/bin/gunicorn -w 10 -k gevent --worker-connections 1000 --timeout 120 -b 0.0.0.0:8089 --limit-request-line 0 --limit-request-field_size 0 "superset.app:create_app()"
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target

/etc/nginx/sites-available/superset.example.com:

server {
    listen 80;
    server_name superset.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443;
    server_name superset.example.com;

    location / {
        proxy_pass http://0.0.0.0:8089;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Následně certbot, atd.

Víc tu:

Závěr

Úvodní konfigurace je za námi, opětovné spuštění aplikace už je snadné:

source .venv/bin/activate
export FLASK_APP=superset SUPERSET_CONFIG_PATH=./superset_config.py
superset run -p 8088 --with-threads --reload --debugger