搭建redash(版本4.0.x)时不使用Docker
首先
在没有使用Docker构建的redash上遇到了需要重新构建的场景。
随着redash版本的更新,不使用Docker构建的方法从redash文档中消失了。
在redash的构建中,需要使用设置脚本,但最新的设置脚本是从Ubuntu 18.04开始支持的。而我的情况是需要在Ubuntu 16.04上进行构建。
redash的文档还没有完全整理,经过不断尝试和探索,我完成了redash的构建。
本文总结了我在那时的构建步骤。
参考文献:redash文档
https://redash.io/help/参考文献:关于redash设置脚本
https://github.com/getredash/redash/tree/master/setup
红色驮是什么?
-
- OSSで提供されているダッシュボードツール
-
- RDBやBigQuery、Prestoといった様々なデータソースとの連携が可能。
- Active Directoryとの連携が可能で、LDAPによりシングルサインオンも実現可能。
请注意
-
- 本手順は2018年11月時点で正常に動作した手順である。
- 最新以外のバージョンを入れる手順は非公式であるため、急にできなくなってしまうことも考えられるので本手順は参考程度に見てもらえると良い。
版本信息
-
- redash
4.0.x
OS
Ubuntu 16.04
Python
2.7.12
准备好
在使用Redash之前,需要预先安装以下5个最低必要的东西。
-
- Python(2.7)
-
- npm(3.10.10)
-
- Node.js(v6以上)
-
- PostgreSQL(9.3以上)
- Redis(2.8.3以上)
這是如何安裝Python。
虽然推荐使用 virtualenv,但这次我正常安装了。
- インストール
sudo apt-get install python-dev python-dev
- 確認
$ python -V
Python 2.7.12
$ pip -V
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)
安装npm
为了安装Node.js,先安装npm。
由于Ubuntu 16.04官方仓库中的npm版本不够,故故意指定版本来进行安装。
- インストール
sudo apt-get install -y build-essential
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs
- 確認
$ npm --version
3.10.10
$ node --version
v6.14.4
安装PostgreSQL
- インストール
sudo sh -c "echo 'deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main' > /etc/apt/sources.list.d/pgdg.list"
wget --quiet -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install postgresql
- 確認
$ which psql
/usr/bin/psql
$ ps aux | grep postgres | grep -v grep
postgres 14271 0.1 1.2 310900 26088 ? S 16:42 0:00 /usr/lib/postgresql/11/bin/postgres -D /var/lib/postgresql/11/main -c config_file=/etc/postgresql/11/main/postgresql.conf
postgres 14273 0.0 0.1 310900 3932 ? Ss 16:42 0:00 postgres: 11/main: checkpointer
postgres 14274 0.0 0.1 310900 3932 ? Ss 16:42 0:00 postgres: 11/main: background writer
postgres 14275 0.0 0.4 310900 8952 ? Ss 16:42 0:00 postgres: 11/main: walwriter
postgres 14276 0.0 0.3 311328 6628 ? Ss 16:42 0:00 postgres: 11/main: autovacuum launcher
postgres 14277 0.0 0.1 165816 3424 ? Ss 16:42 0:00 postgres: 11/main: stats collector
postgres 14278 0.0 0.2 311192 4896 ? Ss 16:42 0:00 postgres: 11/main: logical replication launcher
安装Redis
在Ubuntu 16.04的官方软件源中提供的Redis版本较旧(2.3.0.6-1),因此需要注册新的软件源。
- リポジトリ登録
sudo add-apt-repository ppa:chris-lea/redis-server
sudo apt update
- リポジトリ確認
$ sudo apt show redis-server
Package: redis-server
Version: 5:4.0.11-1chl1~xenial1
Priority: optional
Section: database
Source: redis
Maintainer: Chris Lamb <lamby@debian.org>
Installed-Size: 162 kB
Depends: adduser, lsb-base (>= 3.2-14), redis-tools (= 5:4.0.11-1chl1~xenial1), init-system-helpers (>= 1.18~)
Download-Size: 90.9 kB
APT-Sources: http://ppa.launchpad.net/chris-lea/redis-server/ubuntu xenial/main amd64 Packages
Description: Persistent key-value database with network interface
Redis is a key-value database in a similar vein to memcache but the dataset
is non-volatile. Redis additionally provides native support for atomically
manipulating and querying data structures such as lists and sets.
.
The dataset is stored entirely in memory and periodically flushed to disk.
N: There is 1 additional record. Please use the '-a' switch to see it
- インストール
sudo apt install redis-server
- インストール確認
$ redis-cli --version
redis-cli 5.0.0
$ redis-server --version
Redis server v=5.0.0 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=12e155be0a2852d9
- 起動
sudo systemctl start redis-server
- 起動確認
$ ps aux | grep redis
redis 16358 0.1 0.4 53328 8432 ? Ssl 16:48 0:00 /usr/bin/redis-server 127.0.0.1:6379
ubuntu 16363 0.0 0.0 14192 1020 pts/0 S+ 16:48 0:00 grep --color=auto redis
创建红莓搭建
安装材料下载
由于最新版本只能在Docker中进行构建,所以需要下载一个较旧版本的材料。
cd /usr/local/
sudo git clone -b release/4.0.x https://github.com/getredash/redash.git
- ダウンロード確認
$ cd /usr/local/redash
$ git branch
* release/4.0.x
rdash的设置
-
- セットアップ前の準備
今回の手順でダウンロードしたsetupスクリプトではかなり古いバージョンのredashがダウンロードされてしまうため、setupスクリプトを修正し、比較的新しいバージョンのものがダウンロードされるようにする。
スクリプトの上段にあるREDASH_BRANCHとREDASH_VERSIONを下記に変更する
REDASH_BRANCH="${REDASH_BRANCH:-release/4.0.x}" # Default branch/version to master if not specified in REDASH_BRANCH env var
REDASH_VERSION=${REDASH_VERSION-4.0.1.b4038} # Install latest version if not specified in REDASH_VERSION env var
- setupスクリプト実行
sudo sh bootstrap.sh
安装Python软件包
cd /opt/redash/current
sudo pip install -r requirements.txt -r requirements_dev.txt
安装Node.js包。
cd /opt/redash/current
sudo npm install
建筑
- ビルドする前に一部コードに手を加える。
sudo vi /opt/redash/redash.4.0.1.b4038/client/app/pages/dashboards/dashboard-list.js
- 以下の行(最上段あたり)を
const TAGS_REGEX = /(^([\w\s]|[^\u0000-\u007F])+):|(#([\w-]|[^\u0000-\u007F])+)/ig;
- 以下のように変更する。
/* eslint-disable no-control-regex */
const TAGS_REGEX = /(^([\w\s]|[^\u0000-\u007F])+):|(#([\w-]|[^\u0000-\u007F])+)/ig;
/* eslint-enable no-control-regex */
- 上記対応後に下記コマンドでビルドする。
sudo npm run build
参考资料:
关于 no-control-regex
https://code.i-harness.com/ja/docs/eslint/rules/no-control-regex
在 redash 的源代码中,部分内容包含控制字符,由于我们使用的 npm 默认启用了 no-control-regex,因此如果直接构建会导致错误发生。
为了解决这个问题,本步骤通过修改源代码,在只使用控制字符的部分临时允许控制字符。
PostgreSQL的配置
在redash中,我们使用Postgre来管理用户等。在本次步骤中,由于已经单独安装了Postgre,因此需要在redash的设置中指定已安装的Postgre。
- redashの設定ファイルを編集
sudo vi /opt/redash/.env
- 設定ファイル内に下記の設定値があるので、正しいものに変更する(ユーザ名、ホスト名、ポート番号等)
export REDASH_DATABASE_URL="postgresql://postgres:postgres@localhost:5432/postgres"
创建数据库。
- データベースにpostgresユーザでログイン
sudo su postgres
psql -U postgres
- DBにログイン後、下記コマンドにてpostgresユーザのパスワードを変更
alter role postgres with password '新規パスワード';
- ログイン確認
psql postgresql://postgres:postgres@localhost:5432/postgres
- データベースの作成を行う
cd /opt/redash/current
bin/run ./manage.py database create_tables
启动redash web服务器。
sudo supervisorctl start all
Web用户界面的设置
http://[ホストIP]にアクセスする。
Adminユーザの作成を促されるため、作成する。作成後、通常利用が可能となる。
最终
这次的步骤是在没有使用Docker的情况下安装redash,但是由于官方推荐安装Docker,除非有特殊情况,我认为最好还是使用Docker。
但是,如果类似于我的情况,需要安装相同版本的话,希望这个步骤能够作为参考。