搭建私有包仓库可安全高效共享composer包,常用方案为Satis(自建)和private Packagist(托管)。1. Satis需安装并配置satis.json,指定VCS仓库与输出目录,生成静态packages.json并通过Web服务部署,团队在composer.json中添加仓库URL即可使用;2. Private Packagist为商业服务,注册后绑定代码平台账号,自动同步私有包,配置http-basic认证后可在项目中引入。建议启用https、限制访问权限、定期维护,并根据团队规模选择方案。

搭建私有包仓库的核心目标是让团队能安全、高效地共享和管理内部的 Composer 包。常用方案有两种:Satis(开源免费)和 Private Packagist(商业服务)。下面分别介绍如何部署这两种方式,供团队使用。
Satis:自建开源私有仓库
Satis 是 Composer 官方推荐的静态包列表生成器,适合中小型团队自建私有仓库。它通过扫描指定的 VCS(如 git)地址,生成一个可被 Composer 使用的 packages.json 文件。
步骤如下:
1. 安装 Satis
全局安装 Satis:
composer global require composer/satis
或使用项目方式安装:
composer create-project composer/satis --stability=dev --no-interaction
2. 配置 satis.json
在项目根目录创建 satis.json,示例配置:
{ “name”: “My Private Package Repository”, “homepage”: “https://satis.example.com”, “repositories”: [ { “type”: “vcs”, “url”: “https://gitlab.company.com/user/package-a” }, { “type”: “vcs”, “url”: “https://github.com/company/package-b” } ], “require-all”: true, “output-dir”: “web/” }
说明:
-
repositories列出所有需要收录的私有包 Git 地址 -
require-all: true表示自动包含所有分支和标签(按 semver) -
output-dir指定生成静态文件的目录,建议设为 Web 可访问路径
3. 生成静态仓库
运行命令生成 packages.json:
php bin/satis build satis.json
输出后会在 web/ 目录下生成 packages.json 和相关 html 页面。
4. 部署 Web 服务
将 web/ 目录配置为 Web 根目录,例如 nginx:
server { listen 80; server_name satis.example.com; root /path/to/satis/web; index index.html; }
确保 HTTPS(推荐)并设置访问权限(如 Basic Auth 或 IP 白名单)。
5. 团队使用私有仓库
在项目 composer.json 中添加仓库:
{ “repositories”: [ { “type”: “composer“, “url”: “https://satis.example.com” } ] }
然后即可正常 require 私有包:
composer require company/package-a
注意:需确保团队成员有权限访问 Git 仓库(可通过 ssh 公钥或 HTTPS Token)。
Private Packagist:企业级托管方案
Private Packagist 是官方提供的商业私有仓库服务,支持自动同步、权限管理、审计日志等,适合中大型团队。
1. 注册账号
访问 https://www.php.cn/link/1fd1df658a0a3d7f385185db7c9c5029 注册企业账号,选择合适套餐。
2. 创建组织与仓库
登录后台,创建组织(Organization),添加成员和权限角色。
3. 添加私有包源
支持多种来源:
添加后,Private Packagist 会自动抓取版本并生成可用的 Composer 源。
4. 配置客户端访问
在本地或 CI 环境中配置认证:
运行:
composer config http-basic.packagist.company.com username token
或手动编辑 auth.json:
{ “http-basic”: { “packagist.company.com”: { “username”: “your-email@example.com”, “password“: “your-api-token” } } }
5. 在项目中使用
添加仓库地址:
{ “repositories”: [ { “type”: “composer”, “url”: “https://www.php.cn/link/1fd1df658a0a3d7f385185db7c9c5029pany.com” } ] }
之后即可安装私有包,如同使用 Packagist.org。
安全与维护建议
无论使用哪种方案,都应注意以下几点:
- 私有仓库必须启用 HTTPS,防止中间人攻击
- 限制仓库访问权限(IP、Auth、OAuth)
- 定期更新 Satis 或检查 Private Packagist 同步状态
- 敏感包避免硬编码凭证,使用环境变量
- CI/CD 中配置
auth.json以自动拉取私有包
基本上就这些。Satis 灵活可控但需自行维护,Private Packagist 功能完整省心但有成本。根据团队规模和技术能力选择即可。
以上就是composer如何搭建自己的私有包仓库(Satis/Private Packagist)_部署私有仓库供团队使用的详细内容,更多请关注php中文网其它相关文章!


