ubuntu部署supabase

安装supabse本地生产环境

git clone --depth 1 https://github.com/supabase/supabase

cdsupabase/docker目录,拷贝docker镜像的环境配置文件;
注意:.env.example通过ls命令查看不到,通过ll命令可以查看到

cp .env.example .env
docker compose pull
docker compose up -d

在这里插入图片描述

访问 Supabase Studio

在防火墙上打开8000端口.

您可以通过 port 上的 API 网关访问 Supabase Studio。http://your-ip:8000

系统将提示您输入用户名和密码。默认情况下,凭证为:

用户名:supabase
密码:this_password_is_insecure_and_should_be_updated

可以成功看到如下界面:
在这里插入图片描述

安装supabse本地开发环境

https://supabase.com/docs/guides/local-development/cli/getting-started?queryGroups=platform&platform=linux

brew install supabase/tap/supabase
supabase init
supabase start

需要使用brewuser进行安装:

brew安装参考链接:
https://blog.youkuaiyun.com/kingdom_java/article/details/147554921?spm=1001.2014.3001.5502

supabase start启动报错

brewuser@server-4090-85:~$ supabase start
failed to inspect service: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.49/containers/supabase_db_brewuser/json": dial unix /var/run/docker.sock: connect: permission denied

根据你遇到的错误信息,核心问题在于 当前用户 brewuser 缺乏访问 Docker 守护进程的权限。以下是分步解决方案:


1. 核心问题定位
• 权限不足:Docker 的 Unix 套接字 /var/run/docker.sock 默认仅允许 root 用户或 docker 用户组成员访问。

• 用户组配置缺失:当前用户 brewuser 未加入 docker 用户组,导致 supabase start 命令无法调用 Docker 服务。


2. 解决方案
步骤一:将用户加入 Docker 用户组

# 将当前用户加入 docker 组(需 root 权限)
sudo usermod -aG docker brewuser

# 刷新用户组权限(需重新登录或执行以下命令)
newgrp docker

步骤二:验证 Docker 权限

# 检查 docker.sock 的权限(组应为 docker)
ls -l /var/run/docker.sock
# 预期输出类似:srw-rw---- 1 root docker 0 May 13 10:00 /var/run/docker.sock

# 测试 Docker 命令权限
docker ps  # 应正常输出容器列表,而非报错

步骤三:重启 Docker 服务

# 重启 Docker 确保配置生效
sudo systemctl restart docker

步骤四:重新运行 Supabase

# 再次尝试启动本地开发环境
supabase start

3. 替代方案(若问题持续)
方案一:临时使用 sudo 提升权限

# 以 root 权限启动 Supabase
sudo supabase start

• 注意:长期使用 sudo 可能存在安全隐患。

方案二:手动修复套接字权限

# 强制修改套接字权限(谨慎操作)
sudo chmod 666 /var/run/docker.sock  # 允许所有用户读写

• 风险提示:此操作会降低安全性,仅建议临时测试使用。


4. 关键原理说明
• Docker 权限模型:Docker 默认通过 Unix 套接字通信,非 docker 组成员需 sudo 提权。

• Supabase 依赖关系:Supabase CLI 在本地启动时会调用 Docker 创建多个容器(如数据库、存储服务),需完整的 Docker 控制权限。


5. 扩展建议
• 生产环境部署:若用于服务器环境,建议通过 systemd 配置 Docker 服务并限制权限。

• 开发环境隔离:使用 Docker Compose 或 NVM 管理本地环境,避免全局依赖冲突。

完成上述步骤后,supabase start 应能正常启动服务。若仍存在问题,可通过 supabase start --debug 生成详细日志进一步排查。

supabase start正常启动界面:
在这里插入图片描述
启动成功,默认访问地址是Studio URL: http://127.0.0.1:54323,127的IP地址默认可以替换成本机对外的IP地址;
在这里插入图片描述
前端界面效果:
在这里插入图片描述

<think>好的,我现在需要帮助用户了解如何使用JavaScript构建个人博客网站的最佳实践和教程。首先,我得整理已有的信息。用户提供的引用内容中提到了JavaScript的技巧和测试最佳实践,这可能和构建博客相关,但需要更具体的指导。 首先,用户可能希望知道构建博客的步骤,包括前端和后端的选择。考虑到现代JavaScript框架的流行,我应该推荐一些常用的技术栈,比如React、Vue或Next.js,这些能帮助快速开发。同时,静态站点生成器如Hugo或Gatsby可能也是好的选择,尤其是对于博客这类内容为主的网站。 接下来,最佳实践方面,代码组织和模块化是关键。用户需要保持代码可维护,所以建议使用模块化的结构,比如组件化开发。另外,性能优化也很重要,包括代码分割、懒加载和图片优化,这些都能提升加载速度。SEO优化可能也是用户关心的,尤其是静态生成和SSR的应用。 安全性方面,用户输入验证和防止XSS攻击是必须提到的。比如使用DOMPurify来处理用户输入的内容,防止注入攻击。同时,HTTPS和CSP的设置可以增强网站的安全性。 测试部分,用户提供的引用[2]提到了单元测试和集成测试的最佳实践,所以需要建议用户编写测试用例,使用Jest、Cypress等工具,确保代码质量。持续集成可能也是一个好建议,可以自动化测试和部署流程。 部署方面,推荐一些常见的平台,比如Vercel、Netlify,或者传统的AWS、Heroku。同时,强调自动化部署的重要性,节省时间。 教程资源部分,官方文档和社区资源是基础,比如MDN、React官方文档,以及一些免费的教程网站如freeCodeCamp。实战项目推荐Next.js和Gatsby的教程,因为它们适合博客开发,并且有现成的模板可用。 用户可能还想知道如何管理内容,比如使用Headless CMS,或者Markdown文件,这部分需要简要提及。另外,评论系统和SEO工具也是博客常见的需求,可能需要推荐Disqus或自定义解决方案。 最后,确保整个回答结构清晰,分步骤说明,并引用提供的资料,比如在测试部分引用[2],在代码优化部分引用[1]。同时,生成的相关问题要围绕用户可能的后续疑问,比如性能优化、框架选择、安全性措施等。</think>以下是使用JavaScript构建个人博客网站的完整指南,结合最佳实践和推荐资源: ### 一、技术选型与架构设计 1. **前端框架选择** - 推荐使用现代框架如$React$、$Vue3$或$Svelte$,配合静态站点生成器如$Next.js$或$Gatsby$(基于React)实现SEO优化[^1] - 示例代码结构: ```javascript // Next.js页面组件示例 export default function PostPage({ post }) { return ( <article> <h1>{post.title}</h1> <div dangerouslySetInnerHTML={{ __html: post.content }} /> </article> ) } ``` 2. **后端方案** - 轻量级方案:使用无服务器架构(Serverless)如$Firebase$或$Supabase$ - 自托管方案:采用$Node.js + Express$或$NestJS$框架构建REST API ### 二、核心最佳实践 1. **代码组织规范** - 遵循模块化原则,按功能划分目录: ``` /src /components # 可复用UI组件 /lib # 工具函数 /pages # 路由页面 /styles # CSS模块 ``` 2. **性能优化措施** - 实现代码分割与懒加载: ```javascript // React动态导入示例 const Editor = React.lazy(() => import('./MarkdownEditor')); ``` - 图片优化:使用$sharp$库自动生成WebP格式,配合`<picture>`标签实现响应式图片 3. **SEO增强方案** - 使用`next-seo`等库管理元标签 - 生成结构化数据(Schema Markup): ```javascript const blogPostSchema = { "@context": "https://schema.org", "@type": "BlogPosting", "headline": "文章标题", "datePublished": "2023-07-20" } ``` ### 三、安全防护策略 1. **输入验证与消毒** - 使用$DOMPurify$处理用户提交的HTML内容: ```javascript import DOMPurify from 'dompurify'; const cleanHTML = DOMPurify.sanitize(userInput); ``` 2. **安全头部配置** 在服务器配置中添加安全头部: ```http Content-Security-Policy: default-src 'self'; X-Content-Type-Options: nosniff ``` ### 四、测试与部署 1. **自动化测试策略** - 单元测试:使用$Jest$验证核心逻辑 - E2E测试:使用$Cypress$模拟用户操作流程[^2] 2. **持续部署流程** - 推荐使用$GitHub Actions$或$Vercel$实现CI/CD - 部署配置示例: ```yaml # GitHub Actions 配置 name: Deploy on: [push] jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - run: npm ci && npm run build - uses: vercel/action@v1 with: vercel-token: ${{ secrets.VERCEL_TOKEN }} ``` ### 五、推荐学习资源 1. **官方文档** - [Next.js官方文档](https://nextjs.org/docs) - [React中文文档](https://zh-hans.react.dev/learn) 2. **实战教程** - [freeCodeCamp全栈开发教程](https://www.freecodecamp.org/) - [Gatsby博客构建指南](https://www.gatsbyjs.com/docs/tutorial/)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值