Satis是开源的静态仓库生成器,适合小型团队自建私有包服务;Private Packagist为商业化方案,支持自动同步与细粒度权限管理,适用于中大型企业。

在使用 Composer 管理 PHP 项目依赖时,有时需要托管私有包,比如公司内部的组件库。由于这些包不能公开发布到 Packagist.org,就需要搭建私有包仓库。Satis 和 Private Packagist 是两种常见方案,下面介绍它们如何帮助你搭建 Composer 私服。
什么是 Satis?
Satis 是一个静态的 Composer 仓库生成器,由 Composer 官方团队维护。它本质上是一个“轻量级的 Packagist”,可以从指定的 VCS(如 Git)源抓取私有包信息,然后生成一个可供 Composer 使用的 packages.json 文件。
核心特点:
- 开源免费,可自行部署
- 生成静态文件,适合搭配 Nginx/Apache 托管
- 支持 Git、SVN、Mercurial 等版本控制系统
- 可以包含私有和公开包的混合镜像
- 全局安装 Satis:
composer global require composer/satis - 创建
satis.json配置文件,定义仓库和包:
{
"name": "My Private Repository",
"homepage": "https://packages.example.com",
"repositories": [
{ "type": "vcs", "url": "git@gitlab.com:company/private-lib.git" },
{ "type": "vcs", "url": "https://github.com/company/another-private-package" }
],
"require-all": true
}
- 生成静态仓库:
satis build satis.json public/ - 将
public/目录通过 Web 服务器暴露(如 https://packages.example.com) - 在项目
composer.json中添加仓库:
"repositories": [
{
"type": "composer",
"url": "https://packages.example.com"
}
]
- 正常执行
composer require company/private-lib即可安装
Private Packagist 是什么?
Private Packagist 是一个商业化的私有包托管服务,也提供自托管版本(Enterprise)。它功能更全面,适合中大型团队或企业。
主要优势:
- 支持自动同步 GitHub、GitLab、Bitbucket 的私有仓库
- 提供细粒度权限控制(用户、组织、团队)
- 支持私有包依赖私有包的完整解析
- 提供 Web UI 管理包、查看构建日志
- 支持镜像 Packagist.org 公共包,实现统一出口
- 注册账号并登录 packagist.com
- 添加你的 Git 服务(GitHub/GitLab 等),授权访问私有仓库
- 在界面上添加私有包,或设置自动发现规则
- Private Packagist 会自动拉取代码并解析
composer.json - 在本地项目中配置仓库地址和认证信息:
"repositories": [
{
"type": "composer",
"url": "https://your-domain.packagist.com/packages/"
}
],
"config": {
"http-basic": {
"your-domain.packagist.com": {
"username": "your-email@example.com",
"password": "your-api-token"
}
}
}
- 运行
composer install即可下载私有包
如何选择:Satis vs Private Packagist
根据团队规模和需求选择合适的方案:
- 用 Satis 如果:预算有限、团队小、不需要复杂权限管理、能接受手动或定时构建仓库
- 用 Private Packagist 如果:需要自动化同步、多团队协作、权限隔离、高可用性、更好的用户体验
Private Packagist 虽然是付费服务,但节省了运维成本和开发时间,对于企业来说性价比更高。
安全与认证建议
无论使用哪种方式,都要注意安全性:
- 使用 SSH 或 HTTPS + 个人访问令牌(PAT)克隆私有仓库
- 在 CI/CD 环境中使用专用机器账户和最小权限令牌
- 避免将敏感凭证硬编码在
composer.json中,可通过环境变量注入 - 定期轮换 API 密钥
基本上就这些。Satis 适合轻量自建,Private Packagist 提供更完整的私有包管理体验。根据实际场景选择即可。不复杂但容易忽略的是权限和自动化同步机制的设计。










