选Satis还是private Packagist取决于团队规模与需求:中小团队、成本敏感、包少更新少→选开源轻量的Satis;中大型企业、需权限控制、审计、CI/CD集成→选商业版Private Packagist。

直接用 Satis 或 Private Packagist 搭建企业内网 composer 镜像,核心目标就一个:让公司内部项目能稳定、快速、安全地安装和更新私有及公开的 php 包,不依赖外网 Composer 官方仓库(packagist.org)。
选 Satis 还是 Private Packagist?
Satis 是开源、轻量、纯静态生成的方案,适合中小团队或对成本敏感、包数量不多、更新频率不高、不需要实时同步的场景。它本质是生成一个本地 mirror 网站 + packages.json 文件,靠定时脚本拉取和重建。
Private Packagist 是商业服务(也支持私有部署),提供 Web 管理界面、实时同步、权限控制、审计日志、Webhook、自动扫描漏洞等功能,适合中大型企业、有合规要求、需要精细化管控的环境。
简单判断:要省钱、能接受手动/定时同步、运维愿意写点脚本 → 选 Satis;要省心、要权限分级、要审计、要和 CI/CD 深度集成 → 直接上 Private Packagist 私有版。
用 Satis 搭建内网镜像(精简实操步骤)
假设你有一台内网 linux 服务器(如 192.168.10.50),已装好 PHP 7.4+ 和 git。
- 全局安装 Satis:
composer global require composer/satis(确保~/.composer/vendor/bin在 PATH 中) - 新建配置文件
satis.json,例如:
{ "name": "My Company internal Mirror", "homepage": "https://packagist.internal", "repositories": [ { "type": "composer", "url": "https://packagist.org" }, { "type": "vcs", "url": "https://git.internal/company/package-a" }, { "type": "vcs", "url": "https://git.internal/company/package-b" } ], "require-all": true, "archive": { "directory": "dist", "format": "tar", "skip-dev": true } }
- 运行构建:
satis build satis.json web/,生成静态文件到web/目录 - 用 nginx 或 apache 托管
web/(根目录设为web/,确保packages.json可通过https://packagist.internal/packages.json访问) - 在项目
composer.json中配置:
"repositories": [ { "type": "composer", "url": "https://packagist.internal" } ], "minimum-stability": "stable", "prefer-stable": true
- 加个定时任务每天凌晨更新镜像:
0 3 * * * /usr/bin/satis build /path/to/satis.json /path/to/web/ >> /var/log/satis-build.log 2>&1
Private Packagist 私有部署要点
它基于 docker,官方提供一键部署脚本。关键动作包括:
- 准备一台内存 ≥8GB、磁盘 ≥100GB 的内网服务器(推荐 ubuntu 20.04+)
- 申请私有部署许可证(官网购买后获取 license key)
- 下载并运行部署脚本:
curl -sS https://get.privatepackagist.com | bash,按提示填入 license、域名(如packagist.internal)、管理员邮箱 - 配置反向代理(Nginx/Apache)支持 HTTPS,证书可用内网 CA 或 Let’s Encrypt(若出口可控)
- 首次登录后,添加源:可镜像 packagist.org 全量或按命名空间过滤(如
mycompany/*),也可直接添加公司 Git 仓库(支持 github/gitlab/Bitbucket 自托管) - 创建组织、团队、用户,并分配包访问权限(比如 dev 团队只能读 public 包,security 组可审核所有包)
内网使用必须注意的几件事
- HTTPS 强制启用:Composer 默认拒绝 HTTP 包源,内网也要配有效证书(哪怕自签,但需把 CA 加入服务器信任链)
- DNS 或 hosts 统一解析:确保所有开发机和 CI 机器都能解析
packagist.internal到镜像服务器 IP - 认证方式统一:Satis 无认证,靠网络隔离;Private Packagist 支持 API Token、OAuth、LDAP 同步,建议对接公司统一身份系统
- 缓存清理策略:Satis 不自动清理旧 dist 包,需定期清理
web/dist/;Private Packagist 后台可设自动过期时间 - Composer 全局配置(可选):在 CI 或基础镜像中运行
composer config -g repos.packagist.org false,彻底禁用官方源,避免误触发外网请求
基本上就这些。Satis 上手快但后期维护略费神;Private Packagist 前期部署稍重,但长期看省时省力还更稳。不复杂但容易忽略的是 HTTPS 和 DNS 这两环——只要它们通了,后面基本不会卡住。
以上就是如何使用Satis或Private Packagist搭建自己的Composer镜像?(企业内网方案)的详细内容,更多请关注php中文网其它相关文章!