老司机手把手教你如何搭建Composer私有仓库

现在网上到处充斥这各种搭建私有仓库文档,但对于新手来说,总是有那么多的坑。这里我把我的摸索历程写出来给大家参考,希望大家能少踩一些坑。

一,  安装 Composer

Composer 的安装已经有很完善的教程,这里我就不重复造轮子了。安装 Composer

安装好之后就能直接在命令行使用 composer命令,如果不是的话,请检查安装过程,后续步骤会直接使用 composer 来做演示。

二, Composer 配置国内镜像

这是使用全局方式:

composer config -g repo.packagist composer https://packagist.phpcomposer.com

为啥要配置国内镜像。原因大家都懂得。。。。

三,使用Git搭建代码仓库

自建Git仓库,github仓库, SVN 仓库 都可以用来做为我们的私有仓库。

这里我们选择 自建Git仓库。因为相对于 自建SVN仓库,自建Git仓库配合起来会更方便一些。

Github 与自建Git仓库功能大概是一样的,但既然需要私有化,就不希望代码让别人看到,所以我们这里选择自建Git仓库。当然GitHub私有项目也是可以的,但是需要收费,我们这里就不考虑了,有需要使用的可以尝试一下。

第一步: 安装Git

$ sudo apt-get install git

第二步:创建一个git用户,用来运行git服务:

$ sudo adduser git

第三步:客户端机器生成公钥

$ ssh-keygen

上面的命令可以直接在Linux上执行,但是在Windows上可能找不到命令。需要安装 Git客户端才能使用。点击下载 . 

查看公钥路径:

[Linux]: /Users/you/.ssh/id_rsa.pub 

[Windows]: C:\Users\[username]\.ssh\id_rsa.pub

第四步:创建证书登录

收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。如果文件或路径不存在,自行创建即可。

第五步:初始化Git仓库

先选定一个目录作为Git仓库,假定是/srv/sample.git,在/srv目录下输入命令:

$ sudo git init --bare sample.git

Git就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。然后,把owner改为git:

$ sudo chown -R git:git sample.git

第六步:禁用shell登录

出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:

$ git:x:1001:1001:,,,:/home/git:/bin/bash

改为:

$ git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。

第七步 : 克隆远程仓库

现在,可以通过git clone命令克隆远程仓库了,在各自的电脑上运行:

$ git clone git@server:/srv/sample.git

第八步:配置Git裸仓库HTTP克隆

$ cd /srv/sample.git

$ mv hooks/post-update.sample hooks/post-update

$ chmod a+x hooks/post-update

之后就可以使用 HTTP 方式克隆:

$ git clone http://example.com/sample.git

注意:上面步骤执行完毕之后,可能会不成功。需要在仓库根目录下执行:

$ git update-server-info

第九步:创建包代码并提交到Git仓库

$ composer init

按照提示一步一步输入,类型选择:library

配置完成后如下所示:


$ git add .

$ git commit -m "init" 

$ git push

$ git tag -a v0.1.2 -m 'add 0.1.2 version....'

$ git push origin v0.1.2

提交代码,添加 tag 并推送到服务器。tag 就是包的版本号

四:使用 Satis 搭建私有仓库

1. 建立项目

使用 Composer 自带的建项目功能,这个相当于git clone+composer install+ 运行 post-install 脚本。

$ composer create-project composer/satis my-satis --stability=dev --keep-vcs

2. 建立配置文件

在/path/to/my-satis目录下建立satis.json文件

name: 项目名称

homepage : 私有包主页,后续会用到。

repositories : 资源包来源,里面配置私有仓库url,就是上前面创建的私有Git仓库地址。

require : 配置 git仓库中存在的包。

3. 生成仓库列表

执行:

php bin/satis build satis.json ./web

就可以在path/to/my-satis/web/里生成仓库列表了。

可能会报协议错误,默认是禁止 http 方式获取代码。需要单独配置开启。


执行完毕后。会在项目根目录生成 web 目录。

4. 配置 webServer

将 web 目录配置 webServer 访问。虚拟域名就是之前我们配置的 homepage : packagist.example.com

5. 在其它项目中使用私有源

只需要在项目的 composer.json 文件的根上添加

这样便可以正常安装新添加好的包

还要记得配置:

否则项目安装的时候还是提示项目不是HTTPS。

五、安装测试

$ compser init

初始化项目,类型选择:project 

composer.json 示例:

安装私有包

compser require luopingping/test:*

如果不出意外,操作完成之后就能将私有Git仓库里的代码都下载下来了。

至此安装完成。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容

  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,412评论 9 163
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,099评论 18 139
  • 本文为 Git教程的学习笔记,教程源自廖雪峰的博客。这是一个由浅入深,学完后能立刻上手的Git教程。另,附上另一本...
    七弦桐语阅读 6,167评论 5 47
  • 转载 :作者 [zhangwang] @(前端开发)[Git|工具]以前也看过一些关于git的视频,可是觉得自己一...
    坚持编程_lyz阅读 610评论 0 2
  • 有没有一些事 别人看来无比幼稚 你却不以为然 @阿爽 我喜欢玩火,异常热爱。 天干气躁时,只需一丝引燃,便可干柴烈...
    6d697fbc3e6e阅读 355评论 1 1