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:
Kromě závislostí typu build-essential
zmíněných v dokumentaci je nutné ještě:
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:
- https://superset.apache.org/docs/configuration/configuring-superset/#running-on-a-wsgi-http-server
- https://github.com/apache/superset/blob/8960db4132409d563483cadd7311a30bf3f7b6d7/docker/entrypoints/run-server.sh#L22
- https://gaurav1999.medium.com/deploying-superset-to-the-cloud-from-source-bfba7a19c9ae
Závěr
Úvodní konfigurace je za námi, opětovné spuštění aplikace už je snadné: