使用 Satis 搭建私有的 Composer 包仓库
简述
iBrand 产品立项时是商业性质的项目,但是在搭建架构时考虑后续的通用性,因此每个模块都设计成一个 Package,作为公司内部用,因此这些包并不能提交到 packagist.org 上去。 所以就想是否能够搭建私有的包仓库,实现一个私有的 packagist 。
仔细翻阅 Composer 文档,发现官方有相应的解决方案:Handling private packages
这里推荐使用 Satis ,也正是我们目前使用的方案,目前运行一切良好。
Satis 是一个静态的 composer 资源库生成器。它像是一个超轻量级的、基于静态文件的 packagist 版本。
你给它一个包含 composer.json 的存储库,定义好 VCS 和 资源库。它会获取所有你列出的包,并打印 packages.json 文件,作为 composer 类型的资源库。
说明
服务器环境:
- centos7.2
- nginx
- php7.1
代码管理平台:码云
文章中尽量以一个真实的情况来撰写,但是文章的仓库地址,网页地址均是不可访问的,用虚拟信息替换了真实信息。
Create Private Git Project
既然为公司内部项目源码是不公开的,我们选择了码云,未选择 github,主要有两个原因:
- github 因为是国外服务器,国内偶尔会抽风。
- 国内也有比较优秀的 git 代码托管平台,免费支持 Private Project。比如:码云,Coding
github private project 是收费的,对于一个公司来说费用不高,但是加上以上两点原因后,所以未选择。
假设我们已经在码云上建立好了私有项目,并且已经编写好了所有的代码和单元测试。
ssh 地址: git@gitee.com:iBrand/test-private-composer.git
composer.json
{"name": "iBrand/test-private-composer","type": "library","description": "iBrand test private composer","keywords": ["iBrand crop","private composer",],"license": "MIT","authors": [{"name": "shjchen","email": "ibrand.shjchen@foxmail.com"}],"require": {"php": "^5.6|^7.0",},"autoload": {"psr-4": {"iBrand\\Prviate\\Composer\\": "src/"}},"minimum-stability": "dev","prefer-stable": true
}
Create Satis Server
Install
$ cd /data/www/
$ composer create-project composer/satis company-private-composer --stability=dev --keep-vcs
Setup
$ cd /data/www/company-private-composer
$ vi satis.json
{"name": "iBrand Private Composer Repository", "homepage": "http://packagist.iBrand.com","repositories": [{ "type": "vcs", "url": "git@gitee.com:iBrand/test-private-composer.git" }// more vcs url.],"require": {"ibrand/test-private-composer": "*",// you more package.},"archive": {"directory": "dist","format": "tar","prefix-url": "http://packagist.iBrand.com"}
}
解释下 satis.json
配置文件
- name:仓库名称,可以随意定义
- homepage:仓库主页地址
- repositories:指定包源
- require:指定包源版本,* 代码编译所有版本,如果想获取所有包,使用 require-all: true,
- directory: required, the location of the dist files (inside the output-dir)
- format: optional, zip (default) or tar
- prefix-url: optional, location of the downloads, homepage (from satis.json) followed by directory by default
Authentication
在进行 Build
前,我们需要解决代码权限问题,因为前面的项目源码是私有的,所以服务器上需要有读取源码的权限,依然以码云举例:
生成ssh公钥
你可以按如下命令来生成 sshkey:
$ ssh-keygen -t rsa -C "xxxxx@xxxxx.com"
# Generating public/private rsa key pair...
# 三次回车即可生成 ssh key
查看你的 public key,并把他添加到码云(Gitee.com) SSH key添加地址:https://gitee.com/profile/sshkeys)
$ cat ~/.ssh/id_rsa.pub
# ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....
Build
php bin/satis build satis.json public/
执行后会在 /data/www/company-private-composer/public
生成仓库列表
Setup Nginx
上一步已经生成了仓库列表,为了保证可访问需要通过 nginx
or apache
把服务暴露出去,我们使用的是 nginx ,因此以 nginx
举例。
server {listen 80;server_name packagist.iBrand.com;root /data/www/company-private-composer/public;index index.php index.html;access_log /data/logs/packages-access.log;error_log /data/logs/packages-error.log error;rewrite_log on;location ~* \.php$ {include fastcgi_params;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;}location = /favicon.ico {log_not_found off;access_log off;}
}
配置好后需要执行 service nginx reload
,然后就可以通过访问 http://packagist.iBrand.com
看到自己的仓库列表,如下图:
Usage
接下来就可以在项目中使用这个私有的 Composer 包仓库。
添加如下配置到项目中的 composer.json
文件中
"require": {"iBrand/test-private-composer": "~1.0"}
"config": {"preferred-install": "dist","secure-http": false},"repositories": [{"type": "composer","url": "http://packagist.iBrand.com/"}]
待续
- 实现 webhooks 源码更新时自动 Build
参考资料
- Handling private packages
- Hosting your own package
- 使用私有资源库
联系我
转载于:https://my.oschina.net/u/3786712/blog/2248142
使用 Satis 搭建私有的 Composer 包仓库相关推荐
- composer 安装dev包_「PHP编程」如何搭建私有Composer包仓库?
在前一篇文章「PHP编程」如何制作自己的Composer包?中,我们已经介绍了如何制作自己的 composer 包,以及如何使用 composer 安装自己制作的 composer 包.不过,这其中有 ...
- 使用 satis 搭建一个私有的 Composer 包仓库 在我们的日常php开发中可能需要使用大量的composer包,大部份都可以直接使用,但在公司内部总有一小部份包是不能公开的,这时候我们就需
使用 satis 搭建一个私有的 Composer 包仓库 在我们的日常php开发中可能需要使用大量的composer包,大部份都可以直接使用,但在公司内部总有一小部份包是不能公开的,这时候我们就需要 ...
- 使用 satis 搭建一个私有的 Composer 包仓库
使用 satis 搭建一个私有的 Composer 包仓库 在我们的日常php开发中可能需要使用大量的composer包,大部份都可以直接使用,但在公司内部总有一小部份包是不能公开的,这时候我们就需要 ...
- 使用 satis 搭建一个私有的 Composer 包仓库·精简实用版本
使用私有包的过程中遇到不少小问题,但是网上找的千篇一律基本上没有一个完整可以能将它用起来的,这里的用起来是实际项目中使用,基于个人这边使用踩坑过程做了个精简版的总结供大家参考-- 说明:私有包管理了解 ...
- 自己本地搭建svn仓库_「PHP编程」如何制作自己的Composer包?
PHP开发免不了要使用Composer,使用Composer有着明显的好处.一是可以很好的解决第三方包的相互依赖,二是可以方便进行代码的重用. 那如何制作自己的Composer包呢? 制作Compos ...
- 使用 satis 结合 gitlab 搭建 composer 私有包仓库
使用 satis 结合 gitlab 搭建 composer 私有包仓库 环境 centos 7.3 composer gitlab nginx 使用 安装 satis composer create ...
- 使用 satis 搭建 composer 本地仓库
环境 windows nginx php composer 安装 拉取 satis 项目包,并拉取项目依赖 composer create-project composer/satis --stabi ...
- 使用 Satis 搭建私有仓库
现在我们常用 Composer 进行依赖管理.和其它语言的包管理工具一样,Composer 使用 GitHub 托管代码,可以根据配置文件管理依赖,也可以建立各种脚本,执行特定任务.总之好处很多. 实 ...
- Composer Satis搭建
采坑记录中 描述 Satis 是一个静态的 composer 代码库生成器 安装satis composer.phar create-project composer/satis --stabilit ...
最新文章
- Appro DM8127 IPNC 挂载NFS遇到的问题及解决
- 工商企业管理对计算机水平的要求,对工商企业管理的分析
- Wildfly 8.0通过其JAXRS 2.0实现提供了无缝的JSON支持。
- input的属性AutoComplete——关闭浏览器文本框自动提示
- SIAMATIC S7-1200 中通过 Modbus RTU 如何读取地址范围 9999 到 65535 的输入字
- GCD API记录(二)
- 壳体花纹怎么设计_换热器设计大全
- 安装node.jsvue3.0脚手架
- Oracle的去重函数 distinct
- 4.大数据架构详解:从数据获取到深度学习 --- 数据获取
- 二叉树常见算法总结(java)
- IIS错误 ‘80040e21‘ ODBC 驱动程序不支持所需的属性
- Linux网络编程:libnet 移植及使用
- Qt显示调用dll库失败
- 关于计算机软件的研究生就业,计算机软件与理论研究生毕业就业方向
- Java8新特性之Stream流的使用
- Selenium键鼠事件_Sinno_Song_新浪博客
- [数字信号处理]IIR滤波器基础
- Maven基础简介+安装说明
- Android应届毕业生“过五关斩六将”,怒刷千题,让你面试一路畅通!
热门文章
- PHP ETH私链交易操作
- 【Grasshopper进阶】强制Grasshopper电池输入/输出参数数据结构扁平化 (i.e. Flatten/拍平/展开…)
- 人脸识别(摄像头)——基于face_recognition库
- 在阿里云镜像站下载blender
- 如何正确阅读互联网人的简历呢?
- 淘宝开放平台天猫国际订单关于价格的研究
- 小红书图文笔记怎么发?小红书笔记发布要添加话题吗
- PClint报错分析实战
- html文档以什么开头以什么结束,一个标准的HTML文件是以 html 标记开始,并以()标记结束。...
- Kali下的Web漏洞扫描工具汇总:OpenVAS、nessus、acunetix、w3af等