本文是对redash的官方文档中关于开发者如何安装项目 Developer Installation Guide 的复现和自己的一些理解
环境:
- ubuntu 18.04
- redash alpha 9.0.0 (dev)
包括后面的一些记录都是基于这个环境的
一、获取项目
git clone https://github.com/getredash/redash.git
如果这个方法太慢也可以直接去github网站下载项目
二、(可选)激活虚拟环境
推荐使用conda管理虚拟环境
安装anaconda3 linux版 可以去清华镜像站下载
conda create -n redash python=3.7
source activate redash
三、安装依赖
1.安装Redis
sudo apt-get install redis-server
redis暂时不需要进行复杂的配置
2.postgreSQL 安装与配置
主要用到的命令有:
安装 sudo apt-get install postgresql
引用https://blog.csdn.net/mimicoa/article/details/79090930中的一段话
在初次安装完成后,pg默认已经进行了如下的操作:创建了一个名为postgres的数据库用户和一个名为postgres的数据库,同时还创建了一个名为postgres的Linux系统用户。实际上,这里创建的postgres数据库用户拥有超级管理员身份,可以访问我们后面所创建的所有数据库,同时可以进行创建新数据库用户和修改用户密码等操作。
打开控制台sudo -u postgres psql
先给postgres用户设置一下密码postgres=# \password postgres
创建一个新的用户CREATE USER njuszj WITH PASSWORD 'passwd'
这里必须建立一个与当前linux用户同名的psql用户,因为创建表要用到
以下内容为拓展:
创建一个新的数据库CREATE DATABASE dbname OWNER njuszj;
以新用户身份登陆psql -U njuszj -d dbname
注意:
- psql的数据库名称是小写字母,就算设置的时候是大写字母,实际上仍是小写字母,使用大写字母是无法登陆的。
- 暂时只要把用户建立好就可以啦
参考https://blog.csdn.net/mimicoa/article/details/79090930
psql控制台常用操作
\password 设置密码
\q 退出
\h 查看SQL命令的解释,比如\h select
? 查看psql命令列表
\l 列出所有数据库
\c [database_name] 连接其他数据库
\d 列出当前数据库的所有表格
\d [table_name] 列出某一张表格的结构
\x 对数据做展开操作
\du 列出所有用户
3.python相关库安装
python库依赖在 requirements.txt
、requirements_dev.txt
两个文件中有描述,但是不需要一个一个手动pip,运行以下命令安装依赖:
pip install -r requirements.txt -r requirements_dev.txt
部分包可能安装失败,请搜索报错信息, 安装、升级相关依赖,然后重新运行上述命令。或者从txt中移除报错的库,最后再单独pip安装解决。
我在安装的过程中补充安装了两个缺失的库以解决报错
sudo apt-get install libpq-dev
sudo apt-get install gcc
4. Node.js Packages
- 执行
npm install
命令安装需要的包 - 执行
npm run build
构建素材
注:这两个命令主要跟package.json配置文件中的依赖配置相关
四、创建数据库/数据表
./manage.py database create_tables
五、开启服务
必需要运行的进程是Web server和RQ调度,官方推荐以下几个命令
- 开启 Web server:
./manage.py runserver --debugger --reload
- RQ:
./manage.py rq worker
- RQ Scheduler:
./manage.py rq scheduler
- Frontend watch process to rebuild changes:
npm run watch
关于以上命令的作用,贴一段原文
This will result in a Flask web server listening on port 5000, Webpack rebuilding changes to the frontend, RQ worker ready to run queries and RQ scheduler to enqueue periodic tasks.