PHP私有composer搭建
说明:
实现方式比较简单,本质上,只要找到composer包的所在位置的目录即可完成构建, 那么这个目录可以是远程目录,也可以是本机目录.
实现的关键点,是怎么去构建自己的项目包,以及把项目包托管到哪里
实现步骤:
编辑自己的包,构建好composer.json
demo如下:
1.新建目录demo, 并在里面新建composer.json文件,填入以下代码:
{ "name": "bookan/config", "description": "私有composer测试所用", "version": "1.0.0", "type": "library", "homepage": "http://bookan.com", "require": { "php": ">=7.0" }, "license": "MIT", "authors": [ { "name": "xxxx", "email": "test@test.com", "role": "Developer" } ], "minimum-stability": "stable", "autoload": { "psr-4": { "bookan\\": "src/bookan" } } }
代码中的字段意义可以去官网查看,官网地址
https://docs.phpcomposer.com/04-schema.html#JSON-schema
比较重要的,需要注意的字段为:
name
包名
version
版本
autoload
以及包在使用的时候的所在位置
type
包类型,我们自己的项目中恒定为默认的 library
即可
2.构建完composer.json后,即可编写自己的包提供的内容,我的demo如下:
在项目根目录新建src/bookan/config, 然后新建文件mysql.php,填入如下代码
<?php namespace bookan\config; class Mysql { public function hello() { echo "hello"; } public function getConfig() { return array( "bkuser"=>["username"=>"xxx","host"=>"yyy","port"=>444], "appserver"=>["username"=>"appserver","host"=>"appserver","port"=>555], ); } }
自己的composer包已构建完成, 此包一共提供了2个方法, 即 (mysql::hello) 与 (mysql::getconfig).
-
包在构建完成以后, 即可上传远程仓库,否则只能自身使用了.
将构建好的包托管到远程服务器,可以是git,也可以是svn,甚至可以是ftp,sftp等.
上传方式非常简单, 在我司所使用的是gitlab, 那么就只需要提交到gitlab的主分支即可,如果使用其他分支,需要额外的配置,这里不做详解
在其他项目构建好composer.json的依赖关系,即可投入生产
其他项目,在使用私有包的时候,需要添加好依赖, 以及私有包的镜像地址. 添加方式比较简单,如下:
{ "require": { "bookan/config" : "*" }, "minimum-stability": "dev", "repositories": { "localconfig": { "type": "path", "url": "E:\\code\\mytest\\localconfig" }, "gitlab":{ "type": "vcs", "url" : "git@xxxx:xxxx/composer.git" } } }
字段意义:
require
即为包名依赖包,以及依赖的版本, 在里面添加我们私有包的包名即可, 即与私有包的composer.json里面的name字段相对应
repositories
为所有的镜像集合, 在其中添加一个配置即可, 当前项目中命名为gitlab.
添加完成以后即可使用命令:
composer install -vvv
composer update -vvv
来下载使用依赖包了.
项目实践:
可以用私有包管理项目中的配置文件,比如mysql 链接配置等....
线上目录可以使用 gitlab 的仓库
本地的测试环境可以走 local环境, 即用本地的composer仓库取代gitlab仓库.
实现方式比较简单,上述demo里面已经实现,上述demo里面的composer.json->repositories->localconfig
配置
注意:
使用gitlab方式的时候, 需要鉴权, 必须要能"一键"走通整个git clone流程, 即不能使用输入账号密码等模式, 必须使用ssh -rsa 的键值对..
添加ssh key的方式如下:
-
生成ssh key 使用命令:
ssh-keygen -t rsa -C "xxxxxxx"
然后一直回车即可.
-
windows 打开文件夹
%USERPROFILE%/.ssh
目录,(linux目录为用户目录), 找到里面的 id_rsa.pub ,将文件内容复制到 gitlab 的用户->设置->ssh秘钥
, 保存即可 -
如有端口问题,如ssh默认非22,需要添加配置文件, 文件所在路径为
%USERPROFILE%/.ssh/config
内容为:
Host 219.140.xxx.xxx Port xxx