在我们的日常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. June 16. 2018, Week 24th. Saturday

    Success is the ability to go from one failure to another with no loss of enthusiasm. 成功,就是即使经历过一个又一个 ...

  2. February 15th, 2018 Week 7th Thursday

    Every orientation presupposes a disorientation. 迷失过方向,才能找到方向. Not until we are lost do we begin to u ...

  3. 2.04-proxy-handler

    import urllib.request def create_proxy_handler(): url = "https://blog.csdn.net/m0_37499059/arti ...

  4. git 冲突解决的方法

    版权声明:本文为博主原创文章,未经博主同意不得转载. 新博客地址:www.atomicdevelop.com https://blog.csdn.net/believer123/article/det ...

  5. Problem UVA11134-Fabled Rooks(贪心)

    Problem UVA11134-Fabled Rooks Accept: 716  Submit: 6134Time Limit: 3000mSec Problem Description We w ...

  6. re库

    一.Re库的主要功能: 函数 功能 re.search() 在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象 re.match() 在一个字符串的开始位置匹配正则表达式,返回match ...

  7. WPF 样式(定义样式、引用样式、样式作用域、Trigger触发器)

    1.定义 资源字典   <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presenta ...

  8. 转载 (三)surging 微服务框架使用系列之我的第一个服务(审计日志)

    (三)surging 微服务框架使用系列之我的第一个服务(审计日志)   前言:前面准备了那么久的准备工作,现在终于可以开始构建我们自己的服务了.这篇博客就让我们一起构建自己的第一个服务---审计日志 ...

  9. SSH远程SOLARIS11时被拒绝

    在虚拟机中新安装的solaris11,安装过程中配置了静态IP地址用以方便ssh连接,使用root用户ssh连接时,密码没有错,但总是提示密码被拒绝,连接established 代表是通的,telne ...

  10. CSS的插入和选择器介绍

    一.认识CSS样式 1.定义 CSS全称:层叠样式表(Cascading Style Sheets) 主要作用:定义HTML内容在浏览器内的显示样式,比如文字大小.颜色.字体加粗等 优点:通过定义某个 ...