如何使用密码将 Superset 连接到 Redis?
How to Connect Superset to Redis with Password?
我正在尝试在生产模式下设置 Apache Superset,在 Redis 连接之前一切顺利。我安装了 superset 和 redis,并在 superset_config.py
中进行了连接配置。当我在没有密码的情况下启动 Redis 服务器时,Superset 连接并运行良好,但是当我使用密码启动 Redis 时,我尝试在 Superset Web 服务器上执行的任何操作(例如更改数据库上的某些内容)都会出现错误:[“需要身份验证”]
我是如何安装的(我使用的是 Centos 6 和 Python 3.6):
sudo yum -y install redis
sudo sed -i 's/ENABLE_TIME_ROTATE = False/ENABLE_TIME_ROTATE = True/g' redis.conf
sudo sed -i '/# maxmemory <bytes>/a maxmemory 10gb\nmaxmemory-policy allkeys-lru' redis.conf
sudo sed -i 's/bind 127.0.0.1/bind 0.0.0.0/g' redis.conf
sudo sed -i '/# requirepass foobared/a requirepass redis_pass' redis.conf
sudo /path/to/my/pip3.6 install --upgrade setuptools pip
sudo /path/to/my/pip3.6 install apache-superset
sudo /path/to/my/pip3.6 install wheel
sudo /usr/local/bin/pip3.6 install impyla
sudo /usr/local/bin/pip3.6 install psycopg2-binary
sudo /path/to/my/pip3.6 install gevent
sudo /path/to/my/pip3.6 install redis
sudo /path/to/my/pip3.6 install werkzeug==0.16.0
sudo /path/to/my/pip3.6 install cachelib
sudo sed -i 's/null/redis/g' /usr/local/lib/python3.6/site-packages/superset/config.py
superset db upgrade
export FLASK_APP=superset && flask fab create-admin --username admin --firstname admin --lastname admin --email admin@admin.com --password admin
superset init
我的superset_config.py
:
import os
from werkzeug.middleware.proxy_fix import ProxyFix from cachelib.file import FileSystemCache from werkzeug.contrib.cache import RedisCache
MAPBOX_API_KEY = os.getenv('MAPBOX_API_KEY', '')
REDIS_SERVER_IP ='redis_ip'
REDIS_PASSWORD = 'redis_pass'
POSTGRES_SERVER_IP = 'psql_ip'
POSTGRES_USER = 'user'
POSTGRES_PASSWORD = 'psql_pass'
SUPERSET_CACHE_REDIS_URL = "".join(['redis://:', REDIS_PASSWORD, '@', REDIS_SERVER_IP, ':6379/1']) SUPERSET_BROKER_URL = "".join(['redis://:', REDIS_PASSWORD, '@', REDIS_SERVER_IP, ':6379/0']) SUPERSET_CELERY_RESULT_BACKEND = "".join(['redis://:', REDIS_PASSWORD, '@', REDIS_SERVER_IP, ':6379/0'])
CACHE_CONFIG = {
'CACHE_TYPE': 'redis',
'CACHE_DEFAULT_TIMEOUT': 300,
'CACHE_KEY_PREFIX': 'superset_',
'CACHE_REDIS_HOST': 'redis',
'CACHE_REDIS_PORT': 6379,
'CACHE_REDIS_DB': 1,
'CACHE_REDIS_URL': SUPERSET_CACHE_REDIS_URL }
SQLALCHEMY_DATABASE_URI = SUPERSET_SQLALCHEMY_DATABASE_URI SQLALCHEMY_TRACK_MODIFICATIONS = True
SECRET_KEY = 'secret_key'
class CeleryConfig(object):
BROKER_URL = SUPERSET_BROKER_URL
CELERY_IMPORTS = ('superset.sql_lab', )
CELERY_RESULT_BACKEND = SUPERSET_CELERY_RESULT_BACKEND
CELERY_ANNOTATIONS = {'tasks.add': {'rate_limit': '10/s'}} CELERY_CONFIG = CeleryConfig RESULTS_BACKEND = RedisCache(
host=REDIS_SERVER_IP,
port=6379,
key_prefix='superset_results',
password=REDIS_PASSWORD
)
使用的版本:
Superset 0.36.0(使用 Gunicorn 设置网络服务器),Redis 3.2.12,Flask 1.1.2
有人可以帮我解决这个错误吗?我认为发生这种情况是因为超集尝试在没有密码的情况下使用 redis,但在我的超集配置中我输入了 redis 密码。
Helm Chart 正式支持带密码的 Redis。
已经在官方Superset的Helm Chart中解决并发布。它是在此 MR and it is supported since superset-helm-chart-0.5.9 版本中添加的。
我正在尝试在生产模式下设置 Apache Superset,在 Redis 连接之前一切顺利。我安装了 superset 和 redis,并在 superset_config.py
中进行了连接配置。当我在没有密码的情况下启动 Redis 服务器时,Superset 连接并运行良好,但是当我使用密码启动 Redis 时,我尝试在 Superset Web 服务器上执行的任何操作(例如更改数据库上的某些内容)都会出现错误:[“需要身份验证”]
我是如何安装的(我使用的是 Centos 6 和 Python 3.6):
sudo yum -y install redis
sudo sed -i 's/ENABLE_TIME_ROTATE = False/ENABLE_TIME_ROTATE = True/g' redis.conf
sudo sed -i '/# maxmemory <bytes>/a maxmemory 10gb\nmaxmemory-policy allkeys-lru' redis.conf
sudo sed -i 's/bind 127.0.0.1/bind 0.0.0.0/g' redis.conf
sudo sed -i '/# requirepass foobared/a requirepass redis_pass' redis.conf
sudo /path/to/my/pip3.6 install --upgrade setuptools pip
sudo /path/to/my/pip3.6 install apache-superset
sudo /path/to/my/pip3.6 install wheel
sudo /usr/local/bin/pip3.6 install impyla
sudo /usr/local/bin/pip3.6 install psycopg2-binary
sudo /path/to/my/pip3.6 install gevent
sudo /path/to/my/pip3.6 install redis
sudo /path/to/my/pip3.6 install werkzeug==0.16.0
sudo /path/to/my/pip3.6 install cachelib
sudo sed -i 's/null/redis/g' /usr/local/lib/python3.6/site-packages/superset/config.py
superset db upgrade
export FLASK_APP=superset && flask fab create-admin --username admin --firstname admin --lastname admin --email admin@admin.com --password admin
superset init
我的superset_config.py
:
import os
from werkzeug.middleware.proxy_fix import ProxyFix from cachelib.file import FileSystemCache from werkzeug.contrib.cache import RedisCache
MAPBOX_API_KEY = os.getenv('MAPBOX_API_KEY', '')
REDIS_SERVER_IP ='redis_ip'
REDIS_PASSWORD = 'redis_pass'
POSTGRES_SERVER_IP = 'psql_ip'
POSTGRES_USER = 'user'
POSTGRES_PASSWORD = 'psql_pass'
SUPERSET_CACHE_REDIS_URL = "".join(['redis://:', REDIS_PASSWORD, '@', REDIS_SERVER_IP, ':6379/1']) SUPERSET_BROKER_URL = "".join(['redis://:', REDIS_PASSWORD, '@', REDIS_SERVER_IP, ':6379/0']) SUPERSET_CELERY_RESULT_BACKEND = "".join(['redis://:', REDIS_PASSWORD, '@', REDIS_SERVER_IP, ':6379/0'])
CACHE_CONFIG = {
'CACHE_TYPE': 'redis',
'CACHE_DEFAULT_TIMEOUT': 300,
'CACHE_KEY_PREFIX': 'superset_',
'CACHE_REDIS_HOST': 'redis',
'CACHE_REDIS_PORT': 6379,
'CACHE_REDIS_DB': 1,
'CACHE_REDIS_URL': SUPERSET_CACHE_REDIS_URL }
SQLALCHEMY_DATABASE_URI = SUPERSET_SQLALCHEMY_DATABASE_URI SQLALCHEMY_TRACK_MODIFICATIONS = True
SECRET_KEY = 'secret_key'
class CeleryConfig(object):
BROKER_URL = SUPERSET_BROKER_URL
CELERY_IMPORTS = ('superset.sql_lab', )
CELERY_RESULT_BACKEND = SUPERSET_CELERY_RESULT_BACKEND
CELERY_ANNOTATIONS = {'tasks.add': {'rate_limit': '10/s'}} CELERY_CONFIG = CeleryConfig RESULTS_BACKEND = RedisCache(
host=REDIS_SERVER_IP,
port=6379,
key_prefix='superset_results',
password=REDIS_PASSWORD
)
使用的版本: Superset 0.36.0(使用 Gunicorn 设置网络服务器),Redis 3.2.12,Flask 1.1.2
有人可以帮我解决这个错误吗?我认为发生这种情况是因为超集尝试在没有密码的情况下使用 redis,但在我的超集配置中我输入了 redis 密码。
Helm Chart 正式支持带密码的 Redis。
已经在官方Superset的Helm Chart中解决并发布。它是在此 MR and it is supported since superset-helm-chart-0.5.9 版本中添加的。