redash 8.0 在 debian 10.3 下的安装

  |   0 评论   |   0 浏览

背景

本文简要记录一下在 debian 中从头安装 redash。

简单来说就是:

  1. 安装 Redis
  2. 安装 PostgreSQL 数据库
  3. 安装 nodejs 相关
  4. 安装 nginx 做请求转发

准备环境

安装Redis

apt-get install redis

安装PostgreSQL数据库

安装

apt-get install postgresql-11

初始化数据库

sudo mkdir /var/lib/pgsql
sudo chown admin.admin /var/lib/pgsql -R

切换至admin账号下
export PGDATA=/var/lib/pgsql/data
/usr/lib/postgresql/11/bin/initdb

启动数据库

/usr/lib/postgresql/11/bin/pg_ctl -D /var/lib/pgsql/data -l logfile start

进入数据库

sudo su postgres

# 创建数据库test
createdb test

# 进入数据库
$ psql test
psql (11.7 (Debian 11.7-0+deb10u1))
Type "help" for help.

创建数据库用户(不需要)

修改认证方式为md5,编辑文件 /etc/postgresql/11/main/pg_hba.conf

将METHOD由 trust改为 md5

然后创建用户

create user username with SUPERUSER password 'password';
createuesr username -s # 创建管理员用户
dropuser username # 删除用户方法

reload后生效

sudo /etc/init.d/postgresql reload

安装Redash

下载

wget https://github.com/getredash/redash/archive/v8.0.0.zip

安装依赖

redash 8.0不支持python3,所以需要整个python2.x环境。

pip install setuptools wheel -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com
pip install -r requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com
pip install MySQL-python -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com

安装MySQL-python时会遇到错误 _mysql.c:2005:41: **error: ‘MYSQL’ has no member named ‘reconnect’**,原因为:MariaDB没有reconnect方法,解决:修改文件 /usr/include/mysql/mysql.h,在st_mysql结构中增加一行:

my_bool reconnect; /* set to 1 if automatic reconnect by mimvp.com */

创建数据库

sudo createdb redash

设置环境变量 .env文件,如下:

REDASH_DATABASE_URL=postgresql://root:password@localhost/redash

创建数据表

$ ./bin/run python manage.py database create_tables
[2020-04-09 01:02:17,964][PID:24678][INFO][alembic.runtime.migration] Context impl PostgresqlImpl.
[2020-04-09 01:02:17,967][PID:24678][INFO][alembic.runtime.migration] Will assume transactional DDL.
[2020-04-09 01:02:18,084][PID:24678][INFO][alembic.runtime.migration] Running stamp_revision  -> e5c7a4e2df4d

安装前端

sudo apt-get install nodejs npm

更新npm

npm install -g npm  --registry=http://registry.npm.taobao.org

进入client目录,执行

npm install --registry=http://registry.npm.taobao.org
npm install bower --registry=http://registry.npm.taobao.org

npm run bower install --registry=http://registry.npm.taobao.org

# 这步比较慢,要有耐心
npm run build --registry=http://registry.npm.taobao.org 

启动服务

./bin/run python manage.py run

这时可以打开页面了。

但是查询会一直处理等待状态,因为没有启动celery。

启动celery

$ celery worker --app=redash.worker --beat -Qscheduled_queries,queries,celery -c2

 -------------- celery@aml v4.3.0 (rhubarb)
---- **** -----
--- * ***  * -- Linux-5.3.0-aml-g12-aarch64-with-debian-10.3 2020-04-11 20:00:32
-- * - **** ---
- ** ---------- [config]
- ** ---------- .> app:         redash:0xffff8f22c090
- ** ---------- .> transport:   redis://localhost:6379/0
- ** ---------- .> results:     redis://localhost:6379/0
- *** --- * --- .> concurrency: 2 (prefork)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** -----
 -------------- [queues]
                .> celery           exchange=celery(direct) key=celery
                .> queries          exchange=queries(direct) key=queries
                .> scheduled_queries exchange=scheduled_queries(direct) key=scheduled_queries

参考