redash在CentOS下的安装

  |   4 评论   |   6,705 浏览

背景

redash官方仅提供了ubuntu的安装脚本,没有提供centos的安装脚本。

根据最下方附上的github链接,本文一步一步的在centos下从头安装上了redash.

简单来说就是:

  1. 安装 redis
  2. 安装 PostgreSQL 数据库(估计也可以使用其它数据库)
  3. 安装 nodejs相关
  4. 安装 nginx 做请求转发

记录的比较详细, 细节比较多. 有问题欢迎留言探讨.

步骤

切换到root权限

安装redis

安装redis

yum install redis

启动

    systemctl enable redis
    systemctl start redis

或者

    bin/redis-server conf/redis.conf

确认安装正常

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

安装

yum install postgresql postgresql-server postgresql-devel (devel包在的`pg_config`文件在安装redash的依赖时会用)

[CentOS 6]
初始化数据库

$sudo /etc/init.d/postgresql initdb
Initializing database:                                     [  OK  ]

启动

$sudo /etc/init.d/postgresql start
Starting postgresql service:                               [  OK  ]

[CentOS 7]

建立数据目录

    export PGDATA=/var/lib/pgsql/data

初始化数据库

    initdb

启动数据库

推荐使用

    systemctl enable postgresql
    systemctl start postgresql

或者

    postgres -D /var/lib/pgsql/data

或者

    pg_ctl -D /var/lib/pgsql/data -l logfile start

测试

# su postgres

创建数据库test
$ createdb test

$ psql test
psql (8.4.20)
Type "help" for help.

创建新用户

$ psql

# create user username with SUPERUSER password 'password';

如果报错 could not connect to database postgres: FATAL: Ident authentication failed,则需要把验证方式从ident改为MD5

修改文件 /var/lib/pgsql/data/pg_hba.conf

将ident改为md5

新的内容为

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         all                               md5
# IPv4 local connections:
host    all         all         127.0.0.1/32          md5
# IPv6 local connections:
host    all         all         ::1/128               md5

重启服务生效

[CentOS 6]

$sudo /etc/init.d/postgresql reload

[CentOS 7]


$pg_ctl -D /var/lib/pgsql/data -l logfile restart

登录

$psql -Upostgres
Password for user postgres:
psql (8.4.20)
Type "help" for help.

下面的pg相关,不是必须的,可以跳过.

修改默认用户的密码

$ psql

# ALTER USER postgres WITH PASSWORD '`new_password`';
# select * from `pg_shadow`;

安装redash

下载

官方下载最新的稳定版安装包,目前是 3.0.0。这是一个nodejs工程。

创建python隔离环境

sudo yum install python-virtualenv
virtualenv -p /usr/bin/python2.7 current

进入python隔离环境

source current/bin/activate

备用: 停用隔离环境

. current/bin/deactivate

安装libffi-devel

确认安装了libffi-devel包

安装python依赖

pip-2.7 install --upgrade pip
pip-2.7 install --upgrade setuptools
pip-2.7 install setproctitle

pip-2.7 install -r requirements.txt
pip-2.7 install -r requirements_dev.txt

安装requirements时可能会遇到的问题:

  • 下载慢
    A: 使用国内镜像

  • 提示找不到:pg_config
    A: 安装包 postgres-devel

  • 提示找不到:ffi.h
    A: 安装包 libffi-devel

  • 提示找不到:openssl.h
    A: 安装包 openssl-devel

  • 提示:setuptools版本低.
    A: 升级setuptools, pip-2.7 install --upgrade setuptools

创建数据库

创建数据库

createdb redash
  • 提示SQLALCHEMY_DATABASE_URI不对
    A: 编辑 .env文件,内容如下
REDASH_DATABASE_URL=postgresql://username:password@localhost/redash

创建数据表

./bin/run python manage.py database create_tables

创建用户(这步会报错,因为还没有用户组,可以不执行. 下面会从页面再执行的. )

./bin/run python manage.py users create --admin --password admin "Admin" "admin"

安装前端

安装nodejs,其中包含npm

yum install nodejs

进入client目录,执行

/path/to/bin/npm install

也可以使用国内镜像

/path/to/bin/npm install --registry=http://registry.npm.taobao.org
  • 提示缺少文件:sass/context.h
    A: 单独安装 node-sass
npm i node-sass@4.5.3 -g --registry=http://registry.npm.taobao.org
然后再复制到 `redash-3.0.0/node_modules/`目录下

继续执行

# 文档中建立这样执行,但是实践中可以跳过. 
npm run bower install --registry=http://registry.npm.taobao.org

npm run build --registry=http://registry.npm.taobao.org

bower已经不推荐使用了,没有继续跟了.

启动测试服务

./bin/run python manage.py run

启动正式服务

编辑文件 /etc/supervisord.d/redash.ini,模板见附件

    systemctl start supervisord
  • 启动失败
    A: 使用 systemctl status supervisord来查看日志

我这里因为使用了virtualenv,所以在模板的基础上增加了两行环境变量

environment=PATH="/opt/redash/redash-4.0.0-beta/current/bin:/sbin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/X11R6/bin"
redirect_stderr=true

nginx

安装nginx,转发80端口的请求到nodejs.

安装nginx

yum install nginx

配置nginx做端口转发. 配置文件见附录

高级步骤

使用supervisor守护服务

TBD

supervisor支持进程挂了后,自动重启服务,重新恢复功能。

安装supervisor

sudo yum install supervisor

使用celery管理服务

TBD

使用Gunicorn部署Flask项目

TBD

附录

env配置文件

.env配置文件完整内容

REDASH_LOG_LEVEL="INFO"
REDASH_REDIS_URL=redis://localhost:6379/0
REDASH_DATABASE_URL=postgresql://username:password@localhost/redash

nginx配置文件

nginx_redash_site

upstream rd_servers {
  server 127.0.0.1:5000;
}

server {

  server_tokens off;

  listen 80 default;

  access_log /var/log/nginx/rd.access.log;

  gzip on;
  gzip_types *;
  gzip_proxied any;

  location / {
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_pass       http://rd_servers;
  }
}

supervisord.conf

/etc/supervisord.d/redash.conf

[inet_http_server]
port = 127.0.0.1:9001

[program:redash_server]
command=/opt/redash/current/bin/run gunicorn -b 127.0.0.1:5000 --name redash -w 4 --max-requests 1000 redash.wsgi:app
directory=/opt/redash/current
process_name=redash_server
user=redash
numprocs=1
autostart=true
autorestart=true

# There are two queue types here: one for ad-hoc queries, and one for the refresh of scheduled queries
# (note that "scheduled_queries" appears only in the queue list of "redash_celery_scheduled").
# The default concurrency level for each is 2 (-c2), you can increase based on your machine's resources.

[program:redash_celery]
command=/opt/redash/current/bin/run celery worker --app=redash.worker --beat -c2 -Qqueries,celery --maxtasksperchild=10 -Ofair
directory=/opt/redash/current
process_name=redash_celery
user=redash
numprocs=1
autostart=true
autorestart=true

[program:redash_celery_scheduled]
command=/opt/redash/current/bin/run celery worker --app=redash.worker -c2 -Qscheduled_queries --maxtasksperchild=10 -Ofair
directory=/opt/redash/current
process_name=redash_celery_scheduled
user=redash
numprocs=1
autostart=true
autorestart=true

参考来源

评论

  • alanfans 回复»

    请升级pip,请学好英文

  • psxiaoyao 回复»

    亲能帮帮我嘛…………

  • alanfans 回复»

    …..

  • psxiaoyao 回复»

    您好,我在centos7安装下出现了问题,
    [root@bogon redash-setup-centos]# pip-2.7 install –upgrade pip
    -bash: pip-2.7: 未找到命令

发表评论

validate