官方帮助文档: https://redash.io/help/
redash在CentOS下的安装 https://note.abeffect.com/note/articles/2018/02/23/1519351936006.html
Redash 安装部署 https://www.cnblogs.com/shhnwangjian/p/8417748.html
[Redash] 权限机制 https://ithelp.ithome.com.tw/articles/10208456?sc=iThelpR
Redash汉化(Redash实现国际化) https://blog.csdn.net/weixin_42273374/article/details/84949963
配置邮箱: 官网的配置教程: https://redash.io/help/open-source/setup
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
vim /opt/redash/current/.env export REDASH_MAIL_SERVER="smtp.163.com" export REDASH_MAIL_PORT="25" export REDASH_MAIL_USE_TLS="false" export REDASH_MAIL_USE_SSL="false" export REDASH_MAIL_USERNAME="pandy_test@163.com" export REDASH_MAIL_PASSWORD="pandy" export REDASH_MAIL_DEFAULT_SENDER="pandy_test@163.com" export REDASH_HOST="http://192.168.0.10:8080" #测试: cd /opt/redash/current supervisorctl restart all bin/run ./manage.py send_test_mail |
配置日志:
1 2 3 4 5 6 7 8 9 10 |
mkdir /opt/redash/current/logs chown redash /opt/redash/current/logs vim /etc/supervisord.d/redash.ini ------------------------加入 [program:redash_server] stdout_logfile=/opt/redash/current/logs/api.log stderr_logfile=/opt/redash/current/logs/api_error.log [program:redash_celery] stdout_logfile=/opt/redash/current/logs/celery.log |
需要重启服务器,才生效
关于权限
Reash是一个数据查询平台,必定会涉及权限管理。主要由3个概念:组(group),用户(user), 数据源(data source)。
group在最上层,一个group对应多个user 和 data source。反之也可行,但不利于权限的管理。
权限功能主要基于组(group)和所属数据源(data source)来控制。一个用户(user)必须属于一个或多个组,当新用户进入时,该用户默认在“default组”。在新增一个数据源时,该数据源默认归属于”default组”。
数据源 数据源有两个权限设置:
Full access,即:该组的用户可操作被保存的查询(可以改SQL源码),创建一个新的查询
View Only access,即:该组的用户只能阅读被保存的查询(看不到SQL源码)及其结果
对于不需要写SQL取结果的用户群来说,应该与需要写SQL取结果的用户群体区分在不同组(group)中。比如:基础架构查看报表组,基础架构制作报表组。
如果想对一个组的用户做table级别的查询限制,官方提供的方案:
在建立数据源时,配置一个带有权限控制的数据库用户即可。比如,连接mysql时,用一个只能查询测试db/table的用户名进行连接。把这个数据源赋给某个组,然后该组的所有用户,只能看到这个数据源里的测试db/table。
组 组可设置的权限有:
admin/super_admin,管理员/超级管理员,可用所用功能
create_dashboard,创建dashboard
create_query,创建SQL查询
edit_dashboard,编辑自己/别人的dashboard
edit_query,编辑自己/别人的SQL查询
view_query,查看已经存在的SQL
view_source,查看SQL源码
execute_query,执行SQL
list_users,看到所有用户
schedule_query,设置定时刷新
list_dashboards,看到所用的dashboard
list_alerts,看到所有的提醒任务
list_data_sources,看到所有的数据源
将以上权限赋给不同的组,每个组的用户就可以实现不同的功能。Redash不强调对用户做太多的权限控制,因为一个用户必须要归属于一个组。所以,对组做现在即可。
我的创建例子:
对同一个数据库,
1. 创建两个数据源: datasource_a,datasource_b
2. 创建分组 group_a, group_b,group_b_view,分别使用数据源datasource_a,datasource_b,datasource_b, 都用于所有访问权限!
3. 创建user_a用户,使用 group_a, 都用于所有访问权限!
4. 创建user_b_admin用户,使用 group_b, 都用于所有访问权限!
5. 创建user_b_01用户,使用 group_b_view, 拥有仅仅视图权限!
6. 创建user_b_02用户,使用 group_b_view, 拥有仅仅视图权限!
———————
这样能保证仪表盘等信息, 不会被其他组看到,以此类推
删除用户:
1 2 |
delete from events where user_id=10 ; delete from users where id=10 ; |
安装详细步骤
简单来说就是:(Fedora28安装的话,需要转成dnf命令安装,不同的地方做标记)
安装 redis
安装 PostgreSQL 数据库(估计也可以使用其它数据库)
安装 nodejs相关
安装 nginx 做请求转发(不是必需)
#加入永久开放端口:
1 2 3 4 5 6 |
firewall-cmd --list-all firewall-cmd --permanent --zone=public --add-port=80/tcp firewall-cmd --permanent --zone=public --add-port=8080/tcp firewall-cmd --permanent --add-port=5432/tcp firewall-cmd --reload firewall-cmd --list-all |
If SELinux is enabled, you might need to change your SELinux Setting.
httpd_can_network_connect flag is for Allowing HTTPD scripts and modules to connect to the network.
1 |
setsebool httpd_can_network_connect on -P |
安装必要软件
1 2 3 4 |
#CentOS yum -y install epel-release wget libffi-devel gcc gcc-c++ cyrus-sasl-devel make pwgen python-devel python-pip supervisor nginx curl redis mariadb-devel postgres-devel openssl-devel #Fedora dnf -y install wget libffi-devel gcc gcc-c++ cyrus-sasl-devel make pwgen python-devel python-pip supervisor nginx curl redis mariadb-devel openssl-devel |
安装redis
1 2 3 |
yum -y install redis systemctl enable redis systemctl start redis |
测试确认安装正常
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
redis-cli 127.0.0.1:6379> SET mykey abeffect OK 127.0.0.1:6379> GET mykey "abeffect" 127.0.0.1:6379> keys * 1) "mykey" 127.0.0.1:6379> 127.0.0.1:6379> EXISTS mykey (integer) 1 127.0.0.1:6379> EXISTS mykeys (integer) 0 127.0.0.1:6379> TYPE mykey string |
安装postgresql 9.5
1 2 3 4 5 6 7 |
#CentOS yum -y install https://yum.postgresql.org/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-3.noarch.rpm yum -y install postgresql95-server postgresql95-contrib #Fedora wget https://download.postgresql.org/pub/repos/yum/9.5/fedora/fedora-28-x86_64/pgdg-fedora95-9.5-5.noarch.rpm sudo rpm -Uvh pgdg-fedora95-9.5-5.noarch.rpm sudo dnf install postgresql95-server postgresql95-contrib |
安装后,可执行文件在 /usr/pgsql-9.5/bin/, 数据和配置文件在 /var/lib/pgsql/9.5/data/
初始化数据:
1 |
/usr/pgsql-9.5/bin/postgresql95-setup initdb |
★★初始化或者修改密码:
1 |
vim /var/lib/pgsql/9.5/data/postgresql.conf |
1 2 3 |
#修改配置 listen_addresses = '*' port = 5432 |
1 |
vim /var/lib/pgsql/9.5/data/pg_hba.conf |
1 2 3 |
#修改配置 local all all trust host all all 0.0.0.0/0 trust |
重启数据库,并修改postgresql密码,注意,这个密码下面使用到的
1 2 3 |
systemctl restart postgresql-9.5.service psql -U postgres postgres=# ALTER USER postgres WITH PASSWORD '123456'; |
操作完成的,执行:\q命令回车退出。
恢复pg_hba.conf设置为md5并重启服务
1 |
vim /var/lib/pgsql/9.5/data/pg_hba.conf |
1 2 3 4 |
#修改配置 local all all md5 host all all 0.0.0.0/0 md5 host all all ::1/128 md5 |
重启数据库:
1 |
systemctl restart postgresql-9.5.service |
启动服务:
1 |
systemctl start postgresql-9.5.service |
开机自动启动:
1 |
systemctl enable postgresql-9.5.service |
★★创建表空间
1 2 3 |
cd /var/lib/pgsql/9.5 mkdir tb_spance chown postgres:users /var/lib/pgsql/9.5/tb_spance |
然后可以使用pgadminIII来创建表空间了: tb_spance ==> /var/lib/pgsql/9.5/tb_spance
安装redash, 版本看这里: https://github.com/getredash/redash/releases
1 2 3 4 5 6 7 8 9 10 11 12 13 |
mkdir -p /opt/redash adduser --system --no-create-home -s /sbin/nologin redash chown redash /opt/redash cd /opt/redash sudo -u redash wget https://github.com/getredash/redash/archive/v4.0.1.tar.gz #最新正式版本 sudo -u redash tar xvf v4.0.1.tar.gz mv redash-4.0.1 redash #sudo -u redash wget https://raw.githubusercontent.com/repertory/docker-redash/master/redash-3.0.0.tar.gz 汉化版本 # mv redash-3.0.0.tar.gz v3.0.0.tar.gz #sudo -u redash wget https://github.com/getredash/redash/archive/v3.0.0.tar.gz #sudo -u redash tar xvf v3.0.0.tar.gz #mv redash-3.0.0 redash ln -nfs /opt/redash/redash /opt/redash/current |
pwgen -1s 32 获取值:Ah5CBpYjWoPCEbgjy39wwEKpKcD6TIS9(看情况而定,没次安装都不一样) ,用于REDASH_COOKIE_SECRET
翻译处理
由于我不知道怎么做翻译替换,安装完成后翻译再替换,也无法生效,所以决定在这里替换,把已经翻译好的app文件夹,替换到 /opt/redash/redash/client/app ,然后再往下安装。
1 2 3 4 5 |
#已经翻译的前台代码位置: /home/pandy/workspace/idea/redash mv /opt/redash/redash/client/app /opt/redash/redash/client/app_bak mkdir -p /opt/redash/redash/client/app sudo cp -r /home/pandy/workspace/idea/redash/* /opt/redash/redash/client/app chown -R redash:redash /opt/redash/redash/client/app |
设定环境变量
1 |
vim /opt/redash/.env |
1 2 3 4 |
export REDASH_LOG_LEVEL="INFO" export REDASH_REDIS_URL=redis://localhost:6379/0 export REDASH_DATABASE_URL=postgresql://redash:123456@localhost/redash export REDASH_COOKIE_SECRET=Ah5CBpYjWoPCEbgjy39wwEKpKcD6TIS9 |
创建连接:
1 |
ln -nfs /opt/redash/.env /opt/redash/current/.env |
设定环境变量
1 |
vim /root/.bash_profile |
1 |
PATH=$PATH:$HOME/bin:/usr/pgsql-9.5/bin |
使环境变量生效
1 |
source /root/.bash_profile |
pip安装
1 2 3 4 5 6 7 8 9 |
cd /opt/redash/current pip install --upgrade pip pip install setproctitle #pip install setuptools==3.4.4 #v3.0.0版本的时候使用 pip install setuptools==40.0.0 #v4.x版本的时候使用 #Fedora 多出的命令 pip install git+https://github.com/PyMySQL/mysqlclient-python.git #Fedora 多出的命令 sed '/st_mysql_options options;/a unsigned int reconnect;' /usr/include/mysql/mysql.h -i.bkp |
1 |
vim requirements.txt #当执行后面pip install -r requirements.txt有错误的时候,需要做这里 |
修改版本: #版本到:https://pypi.org/ 去查询,查找比较接近的
1 2 |
psycopg2==2.7.5 cryptography==2.3 |
1 |
vim requirements_all_ds.txt #当执行后面pip install -r requirements_all_ds.txt有错误的时候,需要做这里 |
修改版本:
1 |
botocore==1.10.76 |
#下面安装碰到版本问题,请按照上面方法解决
1 2 |
pip install -r requirements.txt pip install -r requirements_all_ds.txt |
如果已经安装过,强制重新安装:
1 2 |
pip install --force-reinstall -r requirements.txt pip install --force-reinstall -r requirements_all_ds.txt |
npm安装
1 2 3 4 5 |
curl --silent --location https://rpm.nodesource.com/setup_6.x | bash - yum install -y nodejs npm install -g cnpm --registry=https://registry.npm.taobao.org cnpm install cnpm run build |
1 |
cd /opt/redash/current |
postgresql方式
数据库创建
#会提示先输入新账户的密码:123456
1 |
sudo PGPASSWORD="123456" -u postgres createuser redash --no-superuser --no-createdb --no-createrole --pwprompt |
1 |
sudo PGPASSWORD="123456" -u postgres createdb redash --owner=redash |
1 |
sudo PGPASSWORD="123456" -u redash bin/run ./manage.py database create_tables |
#创建用户(这步会报错,因为还没有用户组,可以不执行. 下面会从页面再执行的. ) 输入上面创建新账户的密码
#sudo PGPASSWORD=”123456″ -u redash bin/run ./manage.py users create –admin –password admin “Admin” “admin”
supervisord配置
1 |
cp /opt/redash/redash/setup/ubuntu/files/supervisord.conf /etc/supervisord.d/redash.ini |
1 |
systemctl enable supervisord |
查看日志: 必要的时候
1 2 3 |
systemctl status supervisord tail -f /var/log/supervisor/supervisord.log tail -f /opt/redash/logs/api_error.log |
Nginx配置
1 |
systemctl enable nginx |
1 2 |
cp /opt/redash/redash/setup/ubuntu/files/nginx_redash_site /etc/nginx/conf.d/nginx_redash_site.conf vim /etc/nginx/conf.d/nginx_redash_site.conf #中端口为8080 |
最后启动
1 2 3 4 5 6 7 8 9 10 |
#Fedora28 sudo systemctl start postgresql-9.5.service sudo systemctl start redis #CentOS和Fedora28公用 sudo systemctl restart supervisord # sudo supervisorctl restart all #修改配置后重新启动 sudo systemctl restart nginx #一次性命令 sudo systemctl restart postgresql-9.5.service && sudo systemctl restart redis && sudo systemctl restart supervisord && sudo systemctl rerestart nginx && sudo supervisorctl restart all |
页面IP访问: http://ip:8080 本地Nginx: http://localhost:8080 不启动Nginx访问: http://localhost:5000/
supervisor控制台: http://localhost:9001
第一次登陆,会创建admin账号,后面就不需要了,创建账户的话,需要使用admin进入系统创建
重新部署: 方便对代码进行翻译
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
su root --------------------- systemctl stop supervisord rm -rf /opt/redash/redash/client/dist rm -rf /opt/redash/redash/client/app_bak mv /opt/redash/redash/client/app /opt/redash/redash/client/app_bak mkdir -p /opt/redash/redash/client/app cp -r /home/pandy/workspace/idea/redash/client/app/* /opt/redash/redash/client/app chown -R redash:redash /opt/redash/redash/client/app rm -rf /opt/redash/current/redash/templates_bak mv /opt/redash/current/redash/templates /opt/redash/current/redash/templates_bak mkdir -p /opt/redash/current/redash/templates cp -r /home/pandy/workspace/idea/redash/client/app/templates/* /opt/redash/current/redash/templates chown -R redash:redash /opt/redash/current/redash/templates rm -rf /opt/redash/redash/client/app/templates cd /opt/redash/current cnpm run build systemctl restart supervisord #以上命令用于修改代码和测试 |