深入浅出GitHub Top项目:Supabase在Red Hat Enterprise Linux 9的运行与调试

云信安装大师
90
AI 质量分
11 5 月, 2025
3 分钟阅读
0 阅读

深入浅出GitHub Top项目:Supabase在Red Hat Enterprise Linux 9的运行与调试

引言

Supabase是GitHub上最受欢迎的开源项目之一,它提供了一个开源的Firebase替代方案,包含数据库、身份验证、存储等功能。本文将带你从零开始在Red Hat Enterprise Linux 9 (RHEL9)上部署和调试Supabase。

准备工作

环境要求

  • Red Hat Enterprise Linux 9系统
  • 至少4GB内存(推荐8GB以上)
  • 20GB可用磁盘空间
  • root或sudo权限

安装必要依赖

首先更新系统并安装基础依赖:

代码片段
sudo dnf update -y
sudo dnf install -y curl git docker-ce docker-ce-cli containerd.io docker-compose-plugin

启动Docker服务并设置开机自启:

代码片段
sudo systemctl enable --now docker

验证Docker安装:

代码片段
docker --version
# 应输出类似:Docker version 20.10.17, build 100c701

Supabase部署步骤

1. 克隆Supabase仓库

代码片段
git clone --depth 1 https://github.com/supabase/supabase.git
cd supabase/docker

--depth 1参数表示只克隆最新提交,减少下载量。

2. 复制环境变量文件

代码片段
cp .env.example .env

这个.env文件包含了Supabase的所有配置选项,我们可以根据需要修改。

3. (可选)修改关键配置

编辑.env文件,常见修改项包括:

代码片段
# Postgres数据库密码
POSTGRES_PASSWORD=your_secure_password_here

# JWT密钥(用于身份验证)
JWT_SECRET=your_jwt_secret_here

# API URL(如果是本地开发可以保持默认)
SITE_URL=http://localhost:3000

4. 启动Supabase服务

代码片段
docker compose up -d

这个命令会:
1. 拉取所有必要的Docker镜像(PostgreSQL, Kong, Studio等)
2. 创建并启动所有容器
3. 在后台运行服务(-d参数)

首次运行可能需要5-10分钟下载镜像和初始化数据库。

5. 验证服务状态

检查运行的容器:

代码片段
docker compose ps

应该看到类似下面的输出:

代码片段
NAME                COMMAND                  SERVICE             STATUS              PORTS
supabase-kong       "/docker-entrypoint.…"   kong                running             0.0.0.0:8000->8000/tcp, :::8000->8000/tcp, 
                                                                                    0.0.0.0:8443->8443/tcp, :::8443->8443/tcp,
                                                                                    127.0.0.1:8001->8001/tcp, 
                                                                                    127.0.0.1:8444->8444/tcp  
supabase-postgres   "docker-entrypoint.s…"   postgres            running             0.0.0.0:5432->5432/tcp, :::5432->5432/tcp  
supabase-studio     "docker-entrypoint.s…"   studio              running             0.0.0.0:3000->3000/tcp, :::3000->3000/tcp  
...

Supabase基本使用

访问管理界面

打开浏览器访问:

代码片段
http://localhost:3000

你将看到Supabase Studio界面,这是管理数据库和API的可视化工具。

API端点说明

Supabase提供以下主要API端点:
– REST API: http://localhost:8000/rest/v1/
– GraphQL API: http://localhost:8000/graphql/v1
– Auth API: http://localhost:8000/auth/v1

常见问题解决

Q1: Docker compose命令报错”permission denied”

解决方案:

代码片段
sudo usermod -aG docker $USER && newgrp docker

退出并重新登录后重试。

Q2: Postgres容器无法启动,日志显示端口冲突

解决方案:
检查5432端口是否被占用:

代码片段
sudo ss -tulnp | grep 5432

如果被占用,可以修改.env文件中的端口配置:

代码片段
DB_PORT=5433 #改为其他可用端口号 

然后重建容器:

代码片段
docker compose down && docker compose up -d 

Q3: Studio界面加载缓慢或无法访问

可能是内存不足导致,尝试:
1. 增加系统交换空间(Swap)
2. Docker资源配置调整:docker stats查看资源使用情况
3. RHEL9上可能需要调整SELinux策略:sudo setenforce Permissive

Supabase调试技巧

查看特定容器日志

例如查看Postgres日志:

代码片段
docker compose logs postgres -f # -f参数实时跟踪日志 

API调试工具推荐

使用curl测试API端点:

代码片段
curl -X POST 'http://localhost:8000/auth/v1/signup' \
-H "apikey: your-anon-key" \
-H "Content-Type: application/json" \
-d '{
    "email": "user@example.com",
    "password": "securepassword"
}'

(替换your-anon-key为.env中的ANON_KEY值)

Supabase项目结构解析

了解关键目录和组件:

代码片段
/docker/
├── .env                  #环境变量配置文件  
├── docker-compose.yml    #主编排文件  
├── volumes/
│   ├── db/               #PostgreSQL数据持久化目录  
│   ├── storage/          #存储服务数据目录  
│   └── kong/             #API网关配置目录  
└── configs/
    ├── kong.yml          #Kong网关路由配置  
    └── postgres/         #PostgreSQL初始化脚本  

RHEL9特定优化建议

由于RHEL9采用较新的内核和安全策略,建议进行以下优化:

  1. SELinux策略调整(如果遇到权限问题):
代码片段
sudo setsebool -P httpd_can_network_connect on 
sudo semanage port -a -t http_port_t -p tcp <your_custom_port>
  1. 防火墙配置:
代码片段
sudo firewall-cmd --permanent --add-port=3000/tcp #Studio界面  
sudo firewall-cmd --permanent --add-port=8000/tcp #API网关  
sudo firewall-cmd --reload 
  1. 性能调优:
    编辑/etc/sysctl.conf添加:
代码片段
vm.swappiness =10       #减少交换空间使用  
fs.file-max =2097152    #增加文件描述符限制  
net.core.somaxconn=1024 #提高TCP连接队列大小  

应用更改:sudo sysctl -p

Supabase开发模式部署(适合频繁修改)

对于开发环境,可以使用热重载模式:

代码片段
docker compose down && \
docker compose up --build --force-recreate --remove-orphans 

这个命令会重建所有镜像并重新创建容器,适合代码修改后的快速迭代。

Supabase生产环境部署建议

对于生产环境部署,建议考虑以下增强措施:

1.数据备份:定期备份PostgreSQL数据和存储卷

2.HTTPS配置:通过Nginx或Traefik添加TLS加密

3.监控告警:集成Prometheus+Grafana监控栈

4.高可用性:考虑Kubernetes集群部署

5.安全加固:定期更新镜像版本和安全审计

Supabase生态系统扩展

Supabase支持丰富的扩展功能:

1.启用PostGIS地理空间扩展:
在SQL编辑器中执行:

代码片段
create extension postgis; 
select postgis_version(); --验证安装结果  

2.添加自定义函数:
volumes/db/init-scripts/目录下添加.sql文件,
它们会在数据库初始化时自动执行。

3.集成第三方认证:
在Studio界面的Auth→Providers中可配置Google/GitHub等OAuth提供商。

Supabase CLI工具使用

安装官方CLI工具进行更高级的管理:

代码片段
npm install -g supabase-cli || yarn global add supabase-cli 

#登录你的项目(本地或远程)  
supabase login 

#链接到本地开发实例  
supabase init && supabase start 

#查看状态信息  
supabase status 

CLI工具特别适合自动化脚本和CI/CD流程集成。

RHEL9性能监控工具推荐

针对RHEL9上的Supabase性能分析:

1.Podman/Docker资源监控:
podman statsdocker stats

2.系统级监控:
使用Cockpit Web控制台或命令行工具:

代码片段
dnf install cockpit-pcp      #安装性能插件   
systemctl enable --now cockpit.socket   

#命令行替代方案   
top                           #实时进程监控   
htop                          #增强版top   
nmon                          #综合性能分析器   
iotop                         #磁盘I/O监控   
iftop                         #网络流量分析   

这些工具能帮助你识别瓶颈所在。

Supabse升级与维护最佳实践

保持Supabse健康运行的维护技巧:

1.定期升级步骤:

代码片段
cd /path/to/supabse/docker   
git pull origin master        #获取最新代码   
docker compose pull           #拉取最新镜像   
docker compose down && docker compose up -d --remove-orphans    
                             ##平滑升级实例    

2.数据库维护操作:
通过Studio的SQL编辑器执行常规维护命令:

代码片段
--分析表统计信息优化查询计划器    
ANALYZE VERBOSE;    

--定期清理死元组防止膨胀    
VACUUM FULL VERBOSE ANALYZE;    

--重建索引提高查询速度    
REINDEX DATABASE postgres;    

这些操作可以安排在低峰期通过pg_cron自动执行。

3.存储卷清理策略:
设置日志轮转和过期数据清理规则,
防止磁盘被日志占满。


通过本教程,你应该已经掌握了在RHEL9上部署和管理Supabse的核心技能。
从基础安装到生产级优化,
这套开源BaaS平台能够为你的应用提供强大的后端支持。
随着不断深入探索,
你会发现更多高级功能和定制可能性。

原创 高质量