在我们的日常php开发中需要使用大量的第三方包和类库, 怎么管理是一个问题,

我们用的Yii2框架, 但是并没有把composer用起来, 由于最近更换为docker部署项目, 于是想起来用composer来管理包并降低部署代码的时间

安装composer(在你当做私有库的服务器上以及开发环境)

  参考  https://www.phpcomposer.com/   (有国内镜像使用方法)

安装satis (在你当做私有库的服务器上)

  • mkdir /data      #我是在根目录下
    cd data/
    mkdir satis
    cd satis/
    composer create-project composer/satis --stability=dev --keep-vcs
    mv satis mypackages.com
    cd mypackages.com/
    vim satis.json #配置文件需要手动创建

    satis.json文件内容如下, 可以复制后修改成你的参数

  • {
    "name": "MyRepository",
    "homepage": "http://mydandan.wang",
    "repositories": [
    { "type": "vcs", "url": "https://github.com/LIzheng1993/test.git"},
    { "type": "vcs", "url": "https://git.oschina.net/1129103472/ceshi.git"}
    ],
    "require-all" : true,
    "archive":{
    "directory":"dist",
    "format":"tar",
    "prefix-url":"http://mydandan.wang",
    "skip-dev":true
    }
    }

    其中部分配置的含义

  • repositories: 包的存储路径,这里可以是内网, 为了演示, 我用github来存储代码
    require:具体的包的名称,后面的版本号实际就是git里的tag 。也可以直接使用 require-all:true 的配置获取全部。
    archive:下载远端项目到本地存储,会自动生成tar包保存在dist里,可以加快后续composer的速度。
PS:如果git使用的是ip访问,需要设置

composer config -g secure-http false

再PS:如果设置了archive,对于nginx用户请注意nginx用户与php-fpm的执行用户相同,否则会导致下载tar包无效

生成(类似于build)    一般出问题的话都是目录的权限问题

php bin/satis build satis.json public/

配置Nginx

server {
listen 80;
server_name mydandan.wang;
root /data/satis/mypackages.com/public;
index index.php index.html;
access_log /var/log/nginx/mypackages.com.log;
error_log /var/log/nginx/mypackages.com.log.err debug;
rewrite_log on;
location ~* \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/var/run/php-cgi.sock;
fastcgi_index index.php; }
location = /favicon.ico {
log_not_found off;
access_log off;
}
}

成功后进入mydandan.wang  会出现这样的页面

使用

在自己的项目中添加composer.json文件

{
"repositories": [
{
"type": "composer",
"url": "https://packagist.phpcomposer.com"
},
{
"type": "composer",
"url": "http://mydandan.wang"
}
],
"require": {
"sapolang/ceshi": "*",
"test/helloworld": "*"
}, "config": {
"secure-http": false
} }

"secure-http": false  是检查是否https, 设置false就可以使用http地址作为仓库了, 否则会报错

然后执行composer install 或 composer update 
也可以添加 -vvv选项来观察运行的详情

自定义路径

在这里我仅说明作为一个包使用者时如何把包下载到我们想安装的任何位置

仅需要在composer.json文件中的 requires 中添加这个包 "composer/installers": "*" 并在 extra 下设置 installer-paths 属性。(extra和require是同级别的)

Drupal 的多站点设置就是一个很好的例子,其中的资源包应该被安装到各自网站的子目录。

在这里我们使用 composer/installers 来覆盖安装路径:

{
"extra": {
"installer-paths": {
"sites/example.com/modules/{$name}": ["vendor/package"]
}
}
}

上面的  "sites/example.com/modules/{$name}": ["vendor/package"] 中 sites/example.com/modules/  可以是你项目中的任何目录,  {$name}  会被 : 后面的["vendor/package"]  替换掉

至此,可以用于公司内部的私有仓库就搭建完成了

总结

本地 : 只需配置composer.json使用就行, 最多设置下目录, 设置下https检查为false

用作私有库的服务器 :  主要是起了一个packagist的作用, 但是它是我们自己私有的, 而packagist是公开的, 如不理解可以看下packagist网站 https://packagist.org/

          需要做也很简单, 安装satis, 配置satis.json文件, 配置Nginx, 然后Build生成代码库

真正代码存放的地方:

          可以是github也可以是你们公司本地的gitlab,应该也可以直接存到私有库的服务器上(这里笔者没尝试)

          

Satis搭建composer私有库(自定义下载目录)的更多相关文章

  1. satis 搭建 Composer 私有库的方法

    安装 satis 命令行下执行: php create-project composer/satis --stability=dev --keep-vcs . 配置 创建 satis.json 文件, ...

  2. 在 Docker 搭建 Maven 私有库

    在 Docker 搭建 Maven 私有库 小引 If you are developing software without a repository manager you are likely ...

  3. docker学习---搭建Docker私有库及删除库内镜像

    环境准备系统: cat /etc/redhat-release CentOS Linux release (Core) 主机两台,分别是docker私有库服务器(IP 192.168.121.121) ...

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

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

  5. 创业公司十分钟简单搭建GIT私有库

    欢迎关注老码农的微信公共账号,与CSDN博客同步 一.背景 小公司.协同开发的人不多,建gitlab比較麻烦,仅仅须要在Server端建立一个简单的git共享库就OK. 二.建立仓库 Server端: ...

  6. maven私有库搭建

    一.在企业中基本上都会有自己的maven私有库,主要的目的就是方便依赖包的下载.如果采用远程的方式来实现的话,很多时候会考虑网速问题.如果自己活着公司搭建的私有库,这一样在使用上面会效率更高. 二.私 ...

  7. Dubbo入门到精通学习笔记(四):持续集成管理平台之Maven私有库和本地库的安装与配置

    文章目录 介绍 Maven私有库和本地库的安装与配置 Nexus安装 Nexus 配置(登录后) 介绍 如果构建的Maven项目本地仓库没有对应的依赖包,那么就会去Nexus私服去下载, 那么如果Ne ...

  8. 安装Maven并搭建Maven私有仓库

    一.说明 Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具.我们在进行Java代码开发的时候,Eclipse+Maven+Jetty是一个十 ...

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

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

随机推荐

  1. Ubuntu 12.04上安装 MongoDB并运行

    Ubuntu 12.04上安装 MongoDB并运行 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 在Terminal输入 sudo apt-key ...

  2. Metasploit渗透测试梗概

    1.渗透测试基础内容 https://blog.csdn.net/Fly_hps/article/details/79492646 2.Metasploit基础 https://blog.csdn.n ...

  3. 《Java大学教程》—第11章 案例研究--第1部分

    自测题:1.    图11-1的UML设计中各个类之间的关系.Hostel与TenantList是关联关系:TenantList和PaymentList与ObjectList是泛化关系.TenantL ...

  4. 《Java大学教程》—第7章 类的实现

    统一建模语言(UML)用方框代表类.方框被分成3部分,第一部分是类名,第二部分是类的属性,第三部分是类的方法.类的属性(属性名称:属性类型):类的方法(方法名称(参数类型):返回值类型).静态的类的属 ...

  5. shopkeep/spark Dockerfile示例

    FROM java:openjdk- ENV HADOOP_HOME /opt/spark/hadoop- ENV MESOS_NATIVE_LIBRARY /opt/libmesos-.so ENV ...

  6. Python中的Numpy入门教程

    1.Numpy是什么 很简单,Numpy是Python的一个科学计算的库,提供了矩阵运算的功能,其一般与Scipy.matplotlib一起使用.其实,list已经提供了类似于矩阵的表示形式,不过nu ...

  7. centos7下安装docker(21docker swarm集群创建)

    创建swarm集群: 实验环境:盗图 swarm-manager是manager node,swarm-worker1和swarm-worker2是worker node. 所有节点的docker版本 ...

  8. 【vue】vue中ref用法

    1.获取当前元素: 例子: <div class="pop pos-a" :style="{ left: pop_x + 'px' ,top: pop_y + 'p ...

  9. PHP交互数据库

    教程 图形化界面访问自己的服务器上数据库 http://ip/phpmyadmin php文件 运行 <?php $servername = "localhost"; $us ...

  10. BZOJ3199 SDOI2013 逃考 半平面交、最短路

    传送门 如果我们对于每一个点能找到与其相邻的点(即不经过其他点监视范围能够直接到达其监视范围的点)和是否直接到达边界,就可以直接BFS求最短路求出答案. 所以当前最重要的问题是如何找到对于每一个点相邻 ...