与前端(React)的完整落地流程)
后端前端【免费下载链接】flagsmithFlagsmith is an open-source feature flag platform with remote config, experimentation, and self-hosted or cloud deployment options.项目地址https://gitcode.com/gh_mirrors/fl/flagsmith点击查看免费下载本文围绕 Flagsmith 官方「Manual Installation手动安装」文档展开。当你需要比一键 Docker Compose 更灵活、可深度定制的自托管环境时可以选择不依赖容器镜像直接在当前仓库中分别手动安装Server-Side API基于 Python、Django 与 Django REST Framework和Frontend Website基于 React/JavaScript、运行于 Node.js。读完本文你将掌握从源码安装两套组件的完整命令链路、数据库与缓存依赖的配置要点、环境变量语义以及如何将它们接入生产环境。一、手动安装的整体视图手动安装的核心理念是把 Flagsmith 平台拆成两个独立可部署的组件各自按源码仓库的方式安装组件源码位置本仓库技术栈外部依赖Server-Side APIapi/Python、Django、Django REST FrameworkPostgreSQL数据存储、Redis缓存Frontend Websitefrontend/React / JavaScriptNode.js官方文档给出的定位是If you want a more configurable environment, you can manually install both the Frontend and the API.——也就是说手动安装的适用场景是希望获得更可配置、更可控的运行环境例如对启动命令、依赖版本、环境变量粒度有定制要求而不仅仅是拉取现成镜像。这一意图与本仓库中 api/Makefile 与 frontend/README.md 暴露出的完整开发/构建链路完全对应。在动手之前先明确两件事API 负责一切数据读写账户、组织、项目、环境、Feature Flag、Segment、审计日志等全部由 Django REST API 管理前端 Dashboard 与各类 SDK 都是通过 REST 接口与 API 通信。前端只是一个管理界面它需要通过网络访问 API 才能工作因此安装顺序上应先 API 后前端或者至少保证 API 在本地 8000 端口可用见 frontend/README.md 中The API must be running on localhost:8000的说明。二、前置条件与工具链2.1 API 侧工具根据 api/README.mdAPI 的本地开发假设以下工具已安装**uv 中的[tool.uv]配置与uv.lock锁文件。GNU Make仓库用 Makefile 封装了安装、迁移、测试、启动等全部常用操作。Docker或兼容的 OrbStack / Podman用于拉起开发所需的 PostgreSQL 等基础服务注意这一步仅用于基础服务并非强制要求 API 以容器方式运行。Python 版本要求为3.11, 3.14见 api/pyproject.toml 的requires-python字段依赖锁定范围示例Django5,6、djangorestframework3.17.2,3.18.0、gunicorn23.0.0,23.1.0。2.2 前端侧工具根据 frontend/README.mdNode.js 24.x注意版本有明确要求npm 11.x11.10 或更高随 Node 24 一并提供2.3 基础设施PostgreSQLAPI 的唯一主数据库所有业务数据都存于此。官方文档明确The server-side API relies on a PostgreSQL installation to store its data。Redis作为 API 的缓存层。官方文档明确a Redis installation as a cache。仓库根目录的 docker-compose.yml 使用postgres:15.5-alpine可作为本地基础设施的版本参考你也可以手动安装任意受支持的 PostgreSQL/Redis 版本并通过环境变量接入。三、Server-Side API 手动安装3.1 获取源码API 的全部源码位于本仓库的 api/ 目录安装说明的权威来源即 api/README.md。若你已克隆整个仓库直接进入该目录即可也可以只克隆仓库后按下面的步骤操作。3.2 安装依赖官方文档要求在项目根目录执行make install opts--extra dev该命令在 api/Makefile 中被定义为install: install-packages install-packages: uv sync --frozen $(opts)即调用uv sync --frozen依据uv.lock精确安装依赖并通过--extra dev附加开发依赖pytest、mypy、pre-commit 等见 api/pyproject.toml 的[project.optional-dependencies].dev。注意注释中说明只有 Flagsmith 维护者可以运行uv lock涉及私有依赖普通用户务必使用--frozen直接同步锁文件。3.3 准备 PostgreSQL 与 Redis你可以选择用仓库自带的 Compose 文件拉起基础服务推荐开发用make docker-up其对应docker compose up --force-recreate --remove-orphans -d见 api/Makefile。手动安装 PostgreSQL/Redis此时需要通过环境变量告知 API 连接信息见下文 3.5 节。3.4 执行数据库迁移官方开发流程为make docker-up django-migratedjango-migrate目标api/Makefile实际执行uv run python manage.py waitfordb uv run python manage.py migrate uv run python manage.py createcachetablewaitfordb等待 PostgreSQL 就绪也包含对 analytics 数据库的等待migrate应用全部 Django 迁移建出organisations、projects、environments、features、api_keys等应用所需的全部数据表createcachetable为部分基于数据库的缓存后端如 SAML 请求缓存建表。如果你不使用 Makefile也可以直接运行uv run python manage.py migrate。迁移文件分散在各 Django app 的migrations/目录中例如 api/organisations/migrations/、api/environments/migrations/升级时新迁移会自动应用。3.5 关键环境变量与底层语义手动安装的核心价值在于更可配置因此正确理解 API 的环境变量至关重要。API 的配置入口在 api/app/settings/common.py它使用environs从环境变量读取配置并依据DJANGO_SETTINGS_MODULE选择具体 settings 模块。仓库中提供了四套api/app/settings/local.py——默认开发环境api/manage.py 将默认值设为app.settings.localapi/app/settings/develop.pyapi/app/settings/production.pyapi/app/settings/test.py生产环境最常用的变量如下完整列表见 环境变量参考环境变量说明源码默认值/参考DATABASE_URLPostgreSQL 连接串postgres://与postgresql://均支持例如postgresql://postgres:passwordlocalhost:5432/flagsmith见 docker-compose.yml 的用法REDIS_URLRedis 连接串common.py 注释说明设置缓存后端为django_redis.cache.RedisCache并将 location 指向 Redis URLDJANGO_SECRET_KEY用于加密签名生产环境必须设置为长随机串common.py 默认get_random_secret_key()DJANGO_ALLOWED_HOSTS逗号分隔的允许访问域名或*允许任意common.py 默认空列表ENVIRONMENT环境标识合法值为local、dev、staging、productioncommon.py 默认localDJANGO_SETTINGS_MODULE选择 settings 模块默认app.settings.local见 api/manage.pyALLOW_ADMIN_INITIATION_VIA_CLI启用bootstrap管理命令自动创建默认 admin 用户、组织与项目环境变量参考ADMIN_EMAIL/ORGANISATION_NAME/PROJECT_NAME供上述 bootstrap 命令使用的默认账号信息同上一个值得注意的底层细节在开发默认配置下common.py 的CACHES使用LocMemCache进程内本地缓存unique-snowflake作为 location而生产部署应切换为django-redis的RedisCache缓存 location 指向REDIS_URL。同时DJANGO_REDIS_IGNORE_EXCEPTIONS默认为TrueRedis 故障时不抛出异常、只记录日志DJANGO_REDIS_LOG_IGNORED_EXCEPTIONS默认True——这意味着即使缓存暂时不可用API 也能降级运行这对手动安装环境中的排障非常友好。手动安装时建议至少设置DATABASE_URL、DJANGO_SECRET_KEY、DJANGO_ALLOWED_HOSTS。本地开发可暂不设置但生产环境不设置这三项将无法安全运行。3.6 启动 API 服务开发模式直接使用make serve该目标api/Makefile在执行docker-up wait-for-db后运行uv run flagsmith start --reload api即启动带热重载的开发服务器。如果你需要同时运行异步任务处理器用于 webhook、审计、工作流等后台任务可以使用make serve-with-task-processor它以TASK_RUN_METHODTASK_PROCESSOR并行启动 APImake serve与任务处理器make run-task-processor监听0.0.0.0:8001。任务处理器的运行模式同样可以通过环境变量TASK_RUN_METHOD选择SYNCHRONOUSLY/SEPARATE_THREAD/TASK_PROCESSOR见根目录 docker-compose.yml 中的注释更详细的说明见 异步任务处理器文档。3.7 生产运行方式GunicornAPI 依赖列表中包含gunicornapi/pyproject.toml仓库根目录的 Procfile 给出了经典的生产启动模式release: python manage.py migrate web: gunicorn --bind 0.0.0.0:${PORT:-8000} -w ${GUNICORN_WORKERS:-3} -w ${GUNICORN_THREADS:-2} app.wsgi先跑release迁移再启动web端口默认 8000可通过PORT覆盖Worker/Thread 数量默认 3/2可通过GUNICORN_WORKERS、GUNICORN_THREADS覆盖Docker 部署下另有GUNICORN_TIMEOUT、ACCESS_LOG_FORMAT、ACCESS_LOG_LOCATION等见 docker.md 的 Environment Variables 一节。四、Frontend Website 手动安装4.1 安装依赖前端源码位于 frontend/安装说明见 frontend/README.md。确认 Node.js 版本满足要求后cd frontend npm install4.2 环境配置project_*.js 体系这是手动安装前端时最重要的可配置点。前端的环境配置不是散落在多个环境变量中而是集中定义在project_*.js文件里构建时按目标环境选择复制到common/project.jsfrontend/env/project_dev.js——开发环境默认指向 staging APIfrontend/env/project_local.js——本地环境指向http://localhost:8000/api/v1/frontend/env/project_prod.js——生产环境frontend/env/project_staging.jsfrontend/env/project_selfhosted.js——自托管专用frontend/env/project_e2e.js以 frontend/env/project_local.js 为例关键配置项是Project.api即 API 地址const Project { api: http://localhost:8000/api/v1/, ... }环境选择机制见 frontend/README.mdnpm run dev→ 复制project_dev.jsstaging APIENVlocal npm run dev→ 复制project_local.jslocalhostENVprod npm run bundle→ 复制project_prod.jsproduction同时所有配置都支持运行时覆盖通过globalThis.projectOverrides在部署时注入配置而无需重新构建见 frontend/README.md 的 Environment configuration 一节以及 frontend/env/project_local.js 末尾的...(_globalThis.projectOverrides || {})。此外前端还支持FLAGSMITH_API_URL、PROXY_API_URL、USE_SECURE_COOKIES、BASE_URL等运行时环境变量完整清单见 环境变量参考 的 Frontend 部分。其中PROXY_API_URL会让前端 Node 服务代理/api/v1/请求此时FLAGSMITH_API_URL会被忽略。4.3 启动开发服务器在 frontend/ 目录下指向本地 APIENVlocal npm run dev指向 staging/远程 API 则直接npm run dev开发服务器启动后即可在浏览器中打开前端地址完成注册/登录后创建组织、项目与 Feature Flag若 API 开启了ALLOW_ADMIN_INITIATION_VIA_CLI则存在默认 admin 账号与初始化项目见 docker.md 中Superuser adminexample.com created successfully的引导流程。4.4 生产构建ENVprod npm run bundle该命令会将project_prod.js复制为common/project.js并产出生产 bundle。生产部署还需要配套反向代理与 HTTPS 配置将前端静态资源对外服务同时把 API 暴露在可被浏览器访问的域名下并保证DJANGO_ALLOWED_HOSTS覆盖该域名参考 docker.md 的Access Flagsmith Remotely一节。五、端到端验证清单手动安装完成后建议按以下顺序验证整条链路验证 API访问http://localhost:8000/api/v1/确认返回 JSON 响应而非连接错误验证数据库uv run python manage.py migrate --plan或uv run python manage.py showmigrations确认迁移状态为已应用[X]验证缓存检查 Redis 实例可达如redis-cli ping并在 common.py 的CACHES配置中将后端切换为RedisCache后重启 API观察请求正常且无异常堆栈验证前端ENVlocal npm run dev打开页面确认能注册/登录并看到 API 中已存在的数据如 bootstrap 生成的组织与项目验证 SDK 接入使用任意 Flagsmith SDK 将 API 地址指向本地http://localhost:8000/api/v1/客户端 SDK 使用环境 API Key。六、排障与运维提示端口被占用API 默认 8000 端口前端开发服务器默认端口不同若冲突可通过PORT或构建配置调整。迁移失败多数与 PostgreSQL 连接有关先检查DATABASE_URL是否指向正确的实例与库再运行uv run python manage.py waitfordb与uv run python manage.py migrate。前端无法登录/数据为空绝大多数情况是前端Project.api或FLAGSMITH_API_URL与 API 实际地址不一致或DJANGO_ALLOWED_HOSTS未包含当前访问域名。登录后被登出token 不持久在无 HTTPS 的内网部署时将USE_SECURE_COOKIES设为false并检查COOKIE_SAME_SITE默认none详见 环境变量参考。更多运维参考升级与回滚见 upgrades-and-rollbacks常见问题见 troubleshooting。七、总结手动安装 Flagsmith 的本质是把 api/Django/DRF 后端与 frontend/React 前端分别按源码方式部署并用 PostgreSQL 承载数据、Redis 承担缓存。相比一键 Docker Compose这种方式的收益在于完全掌控依赖版本Python、Node.js、Django、DRF 的具体约束见 api/pyproject.toml 与 frontend/package.json、启动命令Makefile / Gunicorn / npm scripts与配置粒度project_*.js 环境变量代价则是需要手动维护两套应用的生命周期与基础设施。掌握本文的安装链路后你既可以基于 Makefile 快速起步也可以按 Procfile 的生产模式将两套组件接入自己的 CI/CD 与反向代理体系中。赞分享后端前端【免费下载链接】flagsmithFlagsmith is an open-source feature flag platform with remote config, experimentation, and self-hosted or cloud deployment options.项目地址https://gitcode.com/gh_mirrors/fl/flagsmith点击查看免费下载相关推荐SciPhi-Triplex-4bit安装避坑指南从环境配置到首次推理的完整教程SciPhi Triplex 4bit安装避坑指南从环境配置到首次推理的完整教程 如果你是第一次接触 SciPhi Triplex 4bit 本地推理这篇文Flagsmith 自托管环境变量完全参考指南API 与前端配置速查手册Flagsmith 自托管环境变量完全参考指南API 与前端配置速查手册 本指南以 docs/docs/deployment self hosting/cor后端前端librdkafka插件系统自定义功能扩展的开发指南librdkafka插件系统自定义功能扩展的开发指南 概述 librdkafka作为Apache Kafka的C/C客户端库提供了强大的插件系统Plu上一篇Ghidra 12.1 深度解析调试器架构革新与多语言生态扩展下一篇GoCache企业级应用实践如何构建高可用分布式缓存系统创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考