composer 完整路径才能访问_composer学习-使用satis构建私有仓库

526e89eb106f2fd18a700b0e5a84f62e.png

composer

  • composer说明

composer是PHP的依赖包管理工具,它类似于npm或者maven这样的,composer的出现对于规范php的使用及推广有很大作用。

composer 常用命令包括

# 在一个已经存在composer.json的项目中,install用来安装所声明的依赖composer install   # require用来安装某个包composer require packagename# update 用来更新所有依赖到最新版本,一般不要使用,可以单独更新某个包即可composer update # 移除某个依赖composer remove packagename# 当更新了composer.json之后可以执行这个命令composer dumpautoload
  • composer的原理:

一般我们编码完某个完整的功能之后,如提供了一个日志包,我们通常会托管到vcs,composer会通过读取composer.json配置获取源码包,如果我们不声明composer.json中repositories,则默为packagist.org这是官方的仓库,那当我们每次install的时候都会到这里拉取包,整个流程看起来是这样,客户端每次从仓库拉取下载依赖,仓库根据配置维护依赖信息,仓库可以从vcs获取包的源代码。

3025286e6d853afd9215b7ba5772f560.png

client-repostory

packagist.org有时因为网络原因可能导致很慢,我们可以配置阿里云的源来提高访问速度

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

但是每次install都需要去拉取还是需要一些网络消耗,另一方面如果自己私有包也不方便放到官方仓库中,这里我们可以搭建自己的私有仓库。

我们使用官方satis的方式来进行。https://github.com/composer/satis

  • 使用步骤
  1. 首先下载satis:
composer create-project composer/satis --stability=dev --keep-vcs

2.创建配置文件satis.json: 主要用来配置依赖、仓库、归档等

{  "name": "self-repository",  "homepage": "http://127.0.0.1:8099/",  // 源码仓库  "repositories": [// type可以是vcs 如填写一个git仓库地址// 也可以是composer代表是一个composer仓库,这里我们使用阿里云的仓库// 比git要快{ "type": "composer", "url": "https://mirrors.aliyun.com/composer/" }  ],  // 需要引入哪个包及版本 // 如果填写*的话,build的时间会比较长奥,因为他要拉取说有版本  "require":{  "guzzlehttp/guzzle":"*"  },          // 依赖的依赖是否要引入  "require-dependencies": true,  // 是否要缓存到本地  "archive": {  // 目录        "directory": "dist",7        // 打包的格式        "format": "tar",        // 访问url        "prefix-url": "http://127.0.0.1:8099/",        // 是否跳过dev依赖        "skip-dev": true    }}

3.build生成仓库文件:

 php -d memory_limit=-1 ./bin/satis build satis.json public/

4.现在就可以在客户端拉取了,编写客户端composer.json

{"require":{"guzzlehttp/guzzle":"~6.2.0"},"config": {        "secure-http": false  },"repositories": [        {            "type": "composer",            "url": "http://127.0.0.1:8099/"        }    ]}

执行composer install -vvv 可以看到依赖包是从127.0.0.1:8099直接下载来的。这样就节省了时间与网络连接,提高了启动速度

27666796a59b3e1ccda2decc8a0a6061.png

composer install -vvv

bd34a9c93a5b4a26e48a230924c8185f.png

composer.lock

我们从server的log也可以看到

PHP 7.3.11 Development Server started at Thu Sep 10 11:17:22 2020Listening on http://127.0.0.1:8099Document root is /Users/gaoz/project13/php_demo/satis/publicPress Ctrl-C to quit.[Thu Sep 10 11:35:07 2020] 127.0.0.1:59086 [200]: /[Thu Sep 10 11:35:08 2020] 127.0.0.1:59087 [404]: /favicon.ico - No such file or directory[Thu Sep 10 11:43:34 2020] 127.0.0.1:62717 [200]: /[Thu Sep 10 11:44:46 2020] 127.0.0.1:63187 [200]: //dist/guzzlehttp/guzzle/guzzlehttp-guzzle-d094e337976dff9d8e2424e8485872194e768662-zip-a8745d.tar[Thu Sep 10 11:46:28 2020] 127.0.0.1:63874 [200]: /[Thu Sep 10 11:46:29 2020] 127.0.0.1:63875 [200]: /[Thu Sep 10 11:46:30 2020] 127.0.0.1:63885 [200]: /[Thu Sep 10 11:46:30 2020] 127.0.0.1:63891 [200]: /[Thu Sep 10 11:47:35 2020] 127.0.0.1:64320 [404]: /composer.json - No such file or directory[Thu Sep 10 11:50:29 2020] 127.0.0.1:65227 [200]: /packages.json[Thu Sep 10 11:52:30 2020] 127.0.0.1:49905 [200]: /packages.json[Thu Sep 10 11:52:30 2020] 127.0.0.1:49906 [200]: /include/all%245aa070c74c1cb41e55a6d7017e066dec7b06f52f.json[Thu Sep 10 11:52:53 2020] 127.0.0.1:50057 [200]: /packages.json[Thu Sep 10 11:52:57 2020] 127.0.0.1:50086 [200]: //dist/ralouphie/getallheaders/ralouphie-getallheaders-120b605dfeb996808c31b6477290a714d356e822-zip-821645.tar[Thu Sep 10 11:52:57 2020] 127.0.0.1:50087 [200]: //dist/psr/http-message/psr-http-message-f6561bf28d520154e4b0ec72be95418abe6d9363-zip-7ab320.tar[Thu Sep 10 11:52:57 2020] 127.0.0.1:50088 [200]: //dist/guzzlehttp/psr7/guzzlehttp-psr7-239400de7a173fe9901b9ac7c06497751f00727a-zip-b3dac2.tar[Thu Sep 10 11:52:57 2020] 127.0.0.1:50089 [200]: //dist/guzzlehttp/promises/guzzlehttp-promises-a59da6cf61d80060647ff4d3eb2c03a2bc694646-zip-081b1f.tar[Thu Sep 10 11:52:57 2020] 127.0.0.1:50090 [200]: //dist/guzzlehttp/guzzle/guzzlehttp-guzzle-8d6c6cc55186db87b7dc5009827429ba4e9dc006-zip-fdc331.tar

启动服务或者nginx 配置访问目录, 这里我们使用PHP启动一个简单的server,公司项目最好使用Nginx代理一下, 通过web端可以看到私有库的包列表

gaoz@localhost satis % php -S 127.0.0.1:8099 -t public

访问8099

1d05dc47ececb307fbeda7258b2741f0.png

satis-web端

相关文档

satis使用方法:https://getcomposer.org/doc/articles/handling-private-packages-with-satis.md

相关代码:https://github.com/nobody05/composer_satis_demo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值