简述

iBrand 产品立项时是商业性质的项目,但是在搭建架构时考虑后续的通用性,因此每个模块都设计成一个 Package,作为公司内部用,因此这些包并不能提交到 packagist.org 上去。 所以就想是否能够搭建私有的包仓库,实现一个私有的 packagist 。

仔细翻阅 Composer 文档,发现官方有相应的解决方案:Handling private packages

这里推荐使用 Satis ,也正是我们目前使用的方案,目前运行一切良好。

Satis 是一个静态的 composer 资源库生成器。它像是一个超轻量级的、基于静态文件的 packagist 版本。

你给它一个包含 composer.json 的存储库,定义好 VCS 和 资源库。它会获取所有你列出的包,并打印 packages.json 文件,作为 composer 类型的资源库。

说明

服务器环境

  1. centos7.2
  2. nginx
  3. php7.1

代码管理平台:码云

文章中尽量以一个真实的情况来撰写,但是文章的仓库地址,网页地址均是不可访问的,用虚拟信息替换了真实信息。

Create Private Git Project

既然为公司内部项目源码是不公开的,我们选择了码云,未选择 github,主要有两个原因:

  1. github 因为是国外服务器,国内偶尔会抽风。
  2. 国内也有比较优秀的 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/"}]

待续

  1. 实现 webhooks 源码更新时自动 Build

参考资料

  1. Handling private packages
  2. Hosting your own package
  3. 使用私有资源库

联系我

转载于:https://my.oschina.net/u/3786712/blog/2248142

使用 Satis 搭建私有的 Composer 包仓库相关推荐

  1. composer 安装dev包_「PHP编程」如何搭建私有Composer包仓库?

    在前一篇文章「PHP编程」如何制作自己的Composer包?中,我们已经介绍了如何制作自己的 composer 包,以及如何使用 composer 安装自己制作的 composer 包.不过,这其中有 ...

  2. 使用 satis 搭建一个私有的 Composer 包仓库 在我们的日常php开发中可能需要使用大量的composer包,大部份都可以直接使用,但在公司内部总有一小部份包是不能公开的,这时候我们就需

    使用 satis 搭建一个私有的 Composer 包仓库 在我们的日常php开发中可能需要使用大量的composer包,大部份都可以直接使用,但在公司内部总有一小部份包是不能公开的,这时候我们就需要 ...

  3. 使用 satis 搭建一个私有的 Composer 包仓库

    使用 satis 搭建一个私有的 Composer 包仓库 在我们的日常php开发中可能需要使用大量的composer包,大部份都可以直接使用,但在公司内部总有一小部份包是不能公开的,这时候我们就需要 ...

  4. 使用 satis 搭建一个私有的 Composer 包仓库·精简实用版本

    使用私有包的过程中遇到不少小问题,但是网上找的千篇一律基本上没有一个完整可以能将它用起来的,这里的用起来是实际项目中使用,基于个人这边使用踩坑过程做了个精简版的总结供大家参考-- 说明:私有包管理了解 ...

  5. 自己本地搭建svn仓库_「PHP编程」如何制作自己的Composer包?

    PHP开发免不了要使用Composer,使用Composer有着明显的好处.一是可以很好的解决第三方包的相互依赖,二是可以方便进行代码的重用. 那如何制作自己的Composer包呢? 制作Compos ...

  6. 使用 satis 结合 gitlab 搭建 composer 私有包仓库

    使用 satis 结合 gitlab 搭建 composer 私有包仓库 环境 centos 7.3 composer gitlab nginx 使用 安装 satis composer create ...

  7. 使用 satis 搭建 composer 本地仓库

    环境 windows nginx php composer 安装 拉取 satis 项目包,并拉取项目依赖 composer create-project composer/satis --stabi ...

  8. 使用 Satis 搭建私有仓库

    现在我们常用 Composer 进行依赖管理.和其它语言的包管理工具一样,Composer 使用 GitHub 托管代码,可以根据配置文件管理依赖,也可以建立各种脚本,执行特定任务.总之好处很多. 实 ...

  9. Composer Satis搭建

    采坑记录中 描述 Satis 是一个静态的 composer 代码库生成器 安装satis composer.phar create-project composer/satis --stabilit ...

最新文章

  1. Appro DM8127 IPNC 挂载NFS遇到的问题及解决
  2. 工商企业管理对计算机水平的要求,对工商企业管理的分析
  3. Wildfly 8.0通过其JAXRS 2.0实现提供了无缝的JSON支持。
  4. input的属性AutoComplete——关闭浏览器文本框自动提示
  5. SIAMATIC S7-1200 中通过 Modbus RTU 如何读取地址范围 9999 到 65535 的输入字
  6. GCD API记录(二)
  7. 壳体花纹怎么设计_换热器设计大全
  8. 安装node.jsvue3.0脚手架
  9. Oracle的去重函数 distinct
  10. 4.大数据架构详解:从数据获取到深度学习 --- 数据获取
  11. 二叉树常见算法总结(java)
  12. IIS错误 ‘80040e21‘ ODBC 驱动程序不支持所需的属性
  13. Linux网络编程:libnet 移植及使用
  14. Qt显示调用dll库失败
  15. 关于计算机软件的研究生就业,计算机软件与理论研究生毕业就业方向
  16. Java8新特性之Stream流的使用
  17. Selenium键鼠事件_Sinno_Song_新浪博客
  18. [数字信号处理]IIR滤波器基础
  19. Maven基础简介+安装说明
  20. Android应届毕业生“过五关斩六将”,怒刷千题,让你面试一路畅通!

热门文章

  1. PHP ETH私链交易操作
  2. 【Grasshopper进阶】强制Grasshopper电池输入/输出参数数据结构扁平化 (i.e. Flatten/拍平/展开…)
  3. 人脸识别(摄像头)——基于face_recognition库
  4. 在阿里云镜像站下载blender
  5. 如何正确阅读互联网人的简历呢?
  6. 淘宝开放平台天猫国际订单关于价格的研究
  7. 小红书图文笔记怎么发?小红书笔记发布要添加话题吗
  8. PClint报错分析实战
  9. html文档以什么开头以什么结束,一个标准的HTML文件是以 html 标记开始,并以()标记结束。...
  10. Kali下的Web漏洞扫描工具汇总:OpenVAS、nessus、acunetix、w3af等