简介
Metabase 提供了一个简单易用的界面,让你能够轻松地对数据进行探索和分析。通过本文的指导,你将能够在 Ubuntu 22.04 系统上安装并配置 Metabase,并通过 Nginx 进行反向代理以提高安全性。本教程假设你已经拥有了一个非 root 用户,并具有 sudo 权限。
功能特点:
- 易于使用的界面:Metabase 提供了一个简洁直观的用户界面,使得即使是没有技术背景的用户也能轻松地创建和理解复杂的数据查询和可视化。
- 开源和社区支持:作为一个开源工具,Metabase 拥有一个活跃的社区,用户可以从中获得帮助。
- 多数据库支持:Metabase 支持连接多种数据库,包括但不限于 PostgreSQL、MySQL、SQL Server 等。
- 交互式仪表板和报告:用户可以创建包含多个图表和数据视图的交互式仪表板,并且能够通过电子邮件定期发送报告,使得数据分享和沟通更加便捷。
- 数据权限和安全性:Metabase 提供了细致的数据权限管理功能,允许管理员控制不同用户对数据的访问权限,确保数据的安全性和合规性。
接下来,我将一步一步教大家如何进行安装和部署!!
准备工作
服务器准备
必要前提:
- 一个充满求知欲的大脑。
- 一台 Linux 服务器(推荐腾讯云、阿里云或雨云等)。
我将以 雨云 为例,带大家创建一台自己的云服务器,以便学习本篇文章的内容。
注册链接: https://rainyun.ivwv.site
创建雨云服务器
以下步骤仅供参考,请根据实际需求选择配置。
- 点击 云产品 → 云服务器 → 立即购买。
- 选择距离你较近的区域,以保证低延迟。
- 按照自己需求选择配置,选择Ubuntu 22.04 版本,按照自己需求是否预装Docker。
- 最后按照提示进行购买。
- 购买后等待机器部署完毕,点击刚刚创建好的服务器,进入管理面板,找到远程连接相关信息。
- 我们使用
PowerShell
进行SSH
远程连接到服务器,Win+R
打开运行窗口,输入powershell
后点击确定。
- 输入
ssh root@你的服务器IP
例如ssh root@154.9.227.239
回车后,首次需要输入yes
,再次回车后即可登录服务器。
- 到此为止,我们的云服务器就远程连接上了。
开始部署
1. 系统更新
首先,确保你的系统是最新的:
sudo apt update
sudo apt upgrade
2. 安装 Java
Metabase 需要 Java 来运行。安装 OpenJDK 包:
sudo apt install openjdk-17-jdk -y
验证安装:
java -version
你应该看到类似以下的输出:
openjdk version "17.0.11" 2024-04-16
OpenJDK Runtime Environment (build 17.0.11+9-Ubuntu-1)
OpenJDK 64-Bit Server VM (build 17.0.11+9-Ubuntu-1, mixed mode, sharing)
3. 下载并安装 Metabase
访问 Metabase 的下载页面,复制最新版本的链接。使用 wget 下载 Metabase jar 文件:
wget https://downloads.metabase.com/v0.50.8/metabase.jar
将 jar 文件移动到 /opt/metabase
并创建目录(如果不存在):
sudo mkdir /opt/metabase
sudo mv metabase.jar /opt/metabase/
4. 创建 Metabase 服务文件
为了使用 systemd 管理 Metabase,创建一个服务文件:
sudo nano /etc/systemd/system/metabase.service
添加以下内容:
[Unit]
Description=Metabase server
After=syslog.target
After=network.target
[Service]
WorkingDirectory=/opt/metabase
ExecStart=/usr/bin/java -jar /opt/metabase/metabase.jar
User=metabase
Type=simple
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=metabase
[Install]
WantedBy=multi-user.target
保存并关闭文件。
创建 Metabase 用户:
sudo useradd -r -s /bin/false metabase
sudo chown -R metabase: /opt/metabase
5. 启动并启用 Metabase 服务
重新加载 systemd 以识别新服务:
sudo systemctl daemon-reload
启动 Metabase 服务:
sudo systemctl start metabase
启用 Metabase 服务以在启动时自动运行:
sudo systemctl enable metabase
检查服务状态以确保正确运行:
sudo systemctl status metabase
6. 配置 PostgreSQL
安装 PostgreSQL:
sudo apt install postgresql postgresql-contrib
确保 PostgreSQL 服务正在运行:
sudo systemctl status postgresql
在 PostgreSQL 中创建数据库和用户:
切换到 PostgreSQL 用户:
sudo -i -u postgres
访问 PostgreSQL 提示符:
psql
为 Metabase 创建一个新数据库:
CREATE DATABASE metabase;
为 Metabase 创建一个新用户,并设置一个安全的密码:
CREATE USER metabaseuser WITH ENCRYPTED PASSWORD 'secure_password';
授予用户对 Metabase 数据库的访问权限:
GRANT ALL PRIVILEGES ON DATABASE metabase TO metabaseuser;
退出 PostgreSQL 提示符:
\\q
退出 PostgreSQL 用户 shell:
exit
7. 配置防火墙
如果你启用了防火墙,需要添加 HTTP 和 HTTPS:
ufw allow 80/tcp
ufw allow 443/tcp
ufw reload
8. 保护你的 Metabase 安装
对于生产环境,建议使用反向代理和 SSL 来保护 Metabase。你可以使用 Nginx 来实现这一点。
安装 Nginx:
sudo apt install nginx
配置 Nginx:
sudo nano /etc/nginx/sites-available/your_domain
注意: 将 your_domain
替换为你的域名。
添加以下内容:
server {
listen 80;
server_name your_domain;
location / {
proxy_pass <http://localhost:3000>;
proxy_set_header Host $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;
}
}
注意: 将 your_domain
替换为你的域名。
启用配置:
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
测试并重启 Nginx 服务:
sudo nginx -t
sudo systemctl restart nginx
使用 Let’s Encrypt 获取 SSL 证书:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d your_domain
注意: 将 your_domain
替换为你的域名。
9. 访问 Metabase
Metabase 默认运行在 3000 端口。打开浏览器并导航到 https://your_domain
。你将被引导至 Metabase 的设置向导。按照提示设置初始用户并连接到你的数据库。
故障排除
如果你遇到 Nginx 502 Bad Gateway 错误,使用以下命令检查 Metabase 服务状态:
sudo systemctl status metabase
如果服务不活跃,使用以下命令重启服务:
sudo systemctl restart metabase
等待一段时间,服务将启动。如果需要检查日志,执行以下命令:
sudo journalctl -u metabase
现在你可以开始创建仪表板和可视化,以交互式地探索你的数据。对于更高级的配置和功能,请参考 Metabase 官方文档。
相关链接
雨云 - 新一代云服务提供商: https://rainyun.ivwv.site
我的博客:https://blog.ivwv.site