Установка SuperSet на Ubuntu 20.04
Установка docker и docker-compose на Ubuntu 20.04
Обновляем существующий список пакетов
sudo apt update
Далее устанавливаем пакеты, которые позволят apt использовать пакеты через HTTPS:
sudo apt install apt-transport-https ca-certificates curl software-properties-common
Далее добавим ключ GPG для официального репозитория Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Добавляем ремозиторий докер в источники apt
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
Обновляем базу данных пакетов и добавим в нее пакеты Docker из недавно добавленного репозитория
sudo apt update
Далее проверим, что установка будет выполняться из репозитория Docker, а не из репозитория Ubuntu по умолчанию
apt-cache policy docker-ce
Мы должны получить следующий ответ (номер версии Docker может отличаться):
# root@apache1superset:~# apt-cache policy docker-ce # docker-ce: # Installed: (none) # Candidate: 5:20.10.6~3-0~ubuntu-focal # Version table: # 5:20.10.6~3-0~ubuntu-focal 500 # 500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages # 5:20.10.5~3-0~ubuntu-focal 500 # 500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages # 5:20.10.4~3-0~ubuntu-focal 500 # 500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages # 5:20.10.3~3-0~ubuntu-focal 500 # ...
Далее устанавливаем докер командой (на доп.вопрос отвечаем "yes")
sudo apt install docker-ce
Проверить статус докера можно командой (что он running/active):
sudo systemctl status docker
Загружаем текущую стабильную версию Docker Compose (2.18.1)
sudo curl -L "https://github.com/docker/compose/releases/download/v2.18.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Применяем разрешения для исполняемого файла к двоичному файлу
sudo chmod +x /usr/local/bin/docker-compose
Чтобы протестировать docker-compose (установилась версия или нет), запустим команду
docker-compose --version
Установка Apache Nginx и SSL Let's Encrypt
Предварительно направляем домен на IP где устанавливается SuperSet
apt update
apt install nginx python3-certbot-nginx
Удалим ссылку nginx по умолчанию
unlink /etc/nginx/sites-enabled/default
nano /etc/nginx/sites-available/superset.conf
Меняем mydomain.com на ваш домен
server {
listen 80;
server_name mydomain.com;
large_client_header_buffers 4 16k;
location / {
proxy_buffers 16 4k;
proxy_buffer_size 2k;
proxy_set_header HTTP_PROXY_REMOTE_USER $1;
proxy_set_header Host $host:8088;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:8088;
}
}Создаем симлинк на конфигурацию
ln -s /etc/nginx/sites-available/superset.conf /etc/nginx/sites-enabled/superset.conf
sudo nginx -t
sudo nginx -s reload
sudo systemctl status nginx
Устанавливаем SSL по инструкции
certbot --nginx
Установка Apache Superset 2.1.0
git clone https://github.com/apache/superset.git
cd superset
Переключаемся на ветку релиза 2.1.0
git checkout 2.1.0
git status
Теперь нужно поставить версию образа для развертывания с помощью docker-compose.
Для этого в файле docker-compose-non-dev.yml (в корне проекта) изменяем строчку
x-superset-image: &superset-image apache/superset:${TAG:-latest-dev}x-superset-image: &superset-image apache/superset:2.1.0
superset_config.py
Из инструкции
# Superset specific config ROW_LIMIT = 5000 # Flask App Builder configuration # Your App secret key will be used for securely signing the session cookie # and encrypting sensitive information on the database # Make sure you are changing this key for your deployment with a strong key. # Alternatively you can set it with `SUPERSET_SECRET_KEY` environment variable. # You MUST set this for production environments or the server will not refuse # to start and you will see an error in the logs accordingly. SECRET_KEY = 'YOUR_OWN_RANDOM_GENERATED_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' # 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 = ''
SECRET_KEY = 'YOUR_OWN_RANDOM_GENERATED_SECRET_KEY'
YOUR_OWN_RANDOM_GENERATED_SECRET_KEY
openssl rand -base64 42
SECRET_KEY = 'VLQUOGB5DhYr62dAYafrLTxMzG+Z6FNF9hwzkSfFk0yXMqeZ1tlndJeI'
Строку закомментировал, так как она уже была в основном тексте конфига файла superset_config.py
# SQLALCHEMY_DATABASE_URI = 'sqlite:////path/to/superset.db'
docker-compose -f docker-compose-non-dev.yml pull
docker-compose -f docker-compose-non-dev.yml up
Ждем когда появится надпись что все задачи 4/4 выполнены
docker ps -a