Metabase 部署与 Nginx 反向代理配置记录

Metabase 是一款开源免费的 BI 工具:连上一个数据库后,不懂 SQL 的同事也能点选出图表、看懂业务数据。这里记一次在 CentOS 上的完整部署,最后用 Nginx 反代去掉端口号。

它适合与不适合的场景

优点:开源免费、轻量、依赖和配置都简单、上手门槛低、支持对外共享和权限控制,Question 建图表方便,Dashboards 界面整洁。短板也要心里有数:Question 一次只能查一张表,切表后已有查询选项会重置;写过 SQL 的 Native query 模式转不回点选模式;不能在界面里改字段属性;图表类型偏单一。对比 Tableau:后者客户端和 Server 都要付费,viewer 按人头收费,如果只是给同事看几个图表,每月为此付上百美金不值。支持的数据库包括 Postgres、MySQL、Druid、SQL Server、Redshift、MongoDB、Google BigQuery、SQLite、H2、Oracle、Vertica、Presto、Snowflake、SparkSQL。

部署步骤

1. 装 JDK

JDK 版本必须不低于 1.8。

[root@metabase soft]# ls
jdk-8u231-linux-x64.rpm

[root@metabase soft]# rpm -ivh jdk-8u231-linux-x64.rpm

[root@metabase soft]# java -version
java version "1.8.0_231"
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)

2. 下载程序

[root@metabase soft]# wget http://downloads.metabase.com/v0.34.0/metabase.jar

3. 装 MySQL 做元数据库

Metabase 默认用 H2,生产环境不稳定,官方建议换成其他数据库,这里用 MySQL。先卸载系统自带的 MariaDB:

[root@metabase soft]# rpm -qa | grep mariadb
mariadb-libs-5.5.60-1.el7_5.x86_64

[root@metabase soft]# rpm -e mariadb-libs-5.5.60-1.el7_5.x86_64 –nodeps

安装 MySQL:

[root@metabase soft]# rpm -ivh mysql-community-*
image-349

启动并设置开机自启:

[root@metabase soft]# systemctl start mysqld
[root@metabase soft]# systemctl enable mysqld

初始 root 密码在 mysqld.log 里,拿到后改成自己的:

//查看默认密码
[root@metabase soft]# cat /var/log/mysqld.log |grep password

mysql> set global validate_password_policy=0;
mysql> set global validate_password_number_count=0; 
mysql> set global validate_password_special_char_count=0; 
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'dqz123456';
mysql> CREATE USER 'root'@'%' IDENTIFIED BY 'dqz123456';
mysql> grant all privileges on *.* to root@'%';

建库:

mysql> CREATE DATABASE `metabase` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

4. 让 Metabase 指向 MySQL

在 /etc/profile 里导出连接参数:

[root@metabase soft]# vim /etc/profile
export MB_DB_TYPE=mysql
export MB_DB_DBNAME=metabase数据库
export MB_DB_PORT=mysql端口
export MB_DB_USER=mysql用户
export MB_DB_PASS=mysql密码
export MB_DB_HOST=mysql机器ip
[root@metabase soft]# source /etc/profile
image-350

5. 启动与放行端口

[root@metabase soft]# nohup java -jar metabase.jar > metabase.log 2>&1 &

Metabase 默认监听 3000,防火墙放通:

//metabase默认监听端口是3000
[root@metabase soft]# firewall-cmd --permanent --zone=public --add-port=3000/tcp
[root@metabase soft]# firewall-cmd --reload

6. 初始化页面

浏览器访问 http://IP地址:3000,按引导填数据库连接、管理员账号,完成后如下:

image-351
image-352
image-353
image-354
image-355
image-356

配置 Nginx 反向代理

装 Nginx:

[root@metabase soft]# rpm -ivh nginx-1.16.1-1.el7.ngx.x86_64.rpm

把默认站点的 location / 指到 3000:

[root@metabase soft]# vim /etc/nginx/conf.d/default.conf
...
location / {
        proxy_pass    http://localhost:3000;
        proxy_set_header Host $host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_connect_timeout 60;
        proxy_read_timeout 600;
        proxy_send_timeout 600;
    }
...

启动:

[root@metabase ~]# systemctl start nginx
[root@metabase ~]# systemctl enable nginx

//放通80端口
[root@metabase ~]# firewall-cmd --permanent --zone=public --add-port=80/tcp
[root@metabase ~]# firewall-cmd --reload

之后用 IP 或域名直接访问,不用再带 3000 端口。

注意事项

这是当时用 v0.34.0 的部署记录,新版本的环境变量名和引导页可能不同;换元数据库后重启前记得 source 过 profile,否则 Metabase 还会去找 H2;反代上线后如果要对外,别忘了加认证或 HTTPS。

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容