redash 10.1.0 在 CentOS 7.6 docker 下的安装
背景
之前记录过两篇《redash 8.0 在 debian 10.3 下的安装》和《redash 在 CentOS 下的安装》。这次基本流程是一样的,只是操作系统环境和版本有些区别。
准备环境
各依赖为:
- Python (3)
- PostgreSQL (9.6 or newer)
- Redis (3 or newer)
- Node.js (14.16.1 or newer)
安装Redis
yum install redis
版本为 redis 3.2.12
准备配置文件 redis.conf
,内容为:
bind 127.0.0.1
运行
redis-server redis.conf
安装PostgreSQL数据库
yum install postgresql postgresql-server-9.2.24-1.el7_5.x86_64
docker下安装的PostgreSQL,需要自己初始化。
初始化目录
mkdir -p ConfigDir
initdb -D ConfigDir
chmod 0700 ConfigDir
初始化配置文件
cp /usr/share/pgsql/postgresql.conf.sample postgresql.conf
然后编辑其中的两行:
data_directory = 'ConfigDir'
hba_file = 'ConfigDir/pg_hba.conf'
ident_file = 'ConfigDir/pg_ident.conf'
# 禁用IPV6
listen_addresses = '127.0.0.1'
创建数据库
createdb abeffect # 我这里的用户名为abeffect
创建数据库用户
默认已经是md5
了,所以这步可跳过。
修改认证方式为md5,编辑文件 /etc/postgresql/13/main/pg_hba.conf
将METHOD由 trust
改为 md5
然后创建用户
create user username with SUPERUSER password 'password';
或者
createuesr username -s # 创建管理员用户
dropuser username # 删除用户方法
启动服务
postgres --config-file=postgresql.conf
测试
psql --host=127.0.0.1 --username=root test
安装Python3
yum源中的版本为3.6.8
yum install python3-devel
安装其它依赖
yum install libpqxx-devel python36-bcrypt
安装redash
下载
wget https://github.com/getredash/redash/archive/refs/tags/v10.1.0.zip
安装依赖
升级setuptools到setuptools-57.5.0, 安装需要root权限的包。
sudo python3 -m pip install setuptools==57.5.0 setuptools_rust wheel click -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com
sudo python3 -m pip install -r requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com
创建数据库
环境准备:
export REDASH_COOKIE_SECRET=自己生成一个字符串
将数据库连接信息放在 .env
中,如:
REDASH_DATABASE_URL=postgresql://xxx:xxx@ip:port/redash
建表:
./bin/run python3 manage.py database create_tables
[2022-09-21 10:29:48,695][PID:544452][INFO][alembic.runtime.migration] Context impl PostgresqlImpl.
[2022-09-21 10:29:48,696][PID:544452][INFO][alembic.runtime.migration] Will assume transactional DDL.
[2022-09-21 10:29:48,714][PID:544452][INFO][alembic.runtime.migration] Running stamp_revision -> 89bc7873a3e0
安装前端
注:V10开始,使用yarn来替换掉了npm。
package.json中指定了 nodejs版本为12.0.0,npm版本为6.0.0
wget https://nodejs.org/dist/v12.0.0/node-v12.0.0-linux-x64.tar.xz
ln -sf bin/npm ~/bin
ln -sf bin/node ~/bin
安装包
npm install -g [email protected] --registry=http://registry.npm.taobao.org
npm install --global [email protected] --registry=http://registry.npm.taobao.org
ln -sf bin/yarn ~/bin
yarn使用淘宝镜像:
yarn config set registry http://registry.npm.taobao.org/
下载安装依赖包
npm install --registry=http://registry.npm.taobao.org
yarn --frozen-lockfile
yarn build
最后没过,各种版本node, npm,依赖包的冲突。转而使用镜像方式。
遇到的坑
ENOENT
error An unexpected error occurred: "ENOENT: no such file or directory, lstat '/home/amy/share/redash/redash-10.1.0/node_modules/@redash/viz/node_modules/follow-redirects/node_modules'".
临时解决方案:
手动创建这个路径。
Property 'defaultProps' is used before being assigned
**npm** i --save-dev @types/debug
**npm** i --save-dev @types/enzyme
**npm** i --save-dev @types/jest
**npm** i --save-dev @types/plotly.js
**npm** i --save-dev @types/d3
**npm** i --save-dev @types/d3-cloud
**npm** i --save-dev @types/chroma-js
**npm** i --save-dev @types/numeral
**npm** i --save-dev @types/dompurify
**npm** i --save-dev @types/leaflet