如何使用Laravel Forge部署Metabase?求完整教程
Laravel Forge 部署 Metabase 详细步骤
以下是基于Laravel Forge + DigitalOcean服务器部署Metabase的实操流程,针对你已能SSH连接服务器、创建目录并下载Metabase的情况,补全后续核心部署环节:
1. 确认并安装Java环境
Metabase依赖Java 11及以上版本,先检查服务器是否已安装:
java -version
若未安装,以Ubuntu系统为例,执行以下命令安装OpenJDK 17(推荐稳定版):
sudo apt update && sudo apt install openjdk-17-jre-headless -y
2. 配置Metabase运行参数
假设你已将Metabase jar包放在/opt/metabase目录下,进入该目录:
cd /opt/metabase
创建环境变量配置文件.env,存储Metabase的数据库连接等核心配置(建议用PostgreSQL作为元数据库,可提前在Laravel Forge面板创建对应数据库和用户):
MB_DB_TYPE=postgres MB_DB_DATABASE=metabase_db MB_DB_USER=metabase_user MB_DB_PASS=your_secure_password MB_DB_HOST=localhost MB_DB_PORT=5432 MB_JETTY_PORT=3000 MB_ENCRYPTION_SECRET_KEY=your_encryption_key # 可通过`openssl rand -base64 32`生成
给jar包添加执行权限:
chmod +x metabase.jar
3. 配置Systemd服务实现后台运行
为让Metabase在服务器重启后自动启动,创建Systemd服务文件:
sudo nano /etc/systemd/system/metabase.service
粘贴以下配置内容:
[Unit] Description=Metabase Analytics Server After=network.target postgresql.service [Service] User=forge WorkingDirectory=/opt/metabase ExecStart=/usr/bin/java -jar metabase.jar EnvironmentFile=/opt/metabase/.env Restart=always RestartSec=5 TimeoutStopSec=30 [Install] WantedBy=multi-user.target
保存退出后,重载Systemd并启动服务:
sudo systemctl daemon-reload sudo systemctl start metabase sudo systemctl enable metabase
检查服务运行状态:
sudo systemctl status metabase
确保服务显示为active (running)状态。
4. 通过Laravel Forge配置Nginx反向代理
在Laravel Forge面板中完成以下操作:
- 添加新站点(建议使用独立域名,如
metabase.yourdomain.com) - 进入站点的Nginx Configuration页面,替换默认配置为:
server { listen 80; server_name metabase.yourdomain.com; 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; proxy_connect_timeout 300s; proxy_send_timeout 300s; proxy_read_timeout 300s; } location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ { proxy_pass http://localhost:3000; proxy_cache_valid 200 30d; expires 30d; add_header Cache-Control "public, immutable"; } # 处理websocket连接(Metabase实时功能需要) location /api/websocket { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }
- 点击Save保存配置,然后在面板中重启Nginx
- 最后在站点的SSL选项卡中,用Let's Encrypt一键申请并启用HTTPS
5. 完成Metabase初始化
访问你配置的域名(如https://metabase.yourdomain.com),按照页面引导完成管理员账号创建、数据源连接等初始化操作即可。
常见问题排查
- Metabase服务启动失败时,查看日志定位问题:
sudo journalctl -u metabase.service -f - Nginx配置报错时,先验证语法:
sudo nginx -t,再查看错误日志:sudo tail -f /var/log/nginx/error.log - 确保PostgreSQL服务正常运行:
sudo systemctl status postgresql
内容的提问来源于stack exchange,提问作者Timothy Soladoye
相关产品推荐
相关产品推荐

