写Java的同学,基本都听过Maven私服一词,而对于不熟悉Java的同学来说,可能会以为这是某个网游私服。的确,私服这个由历史原因传下来的概念,字面意思并不是太好理解,而且近年也有逐渐扩散到其他技术中的迹象。
包管理器
我们说的私服,其实指的是企业局域网内的软件包依赖库。
说到软件库,就会牵扯出另一个概念——包管理器。
包管理器是在电脑中自动安装、配置、卸载和升级软件包的工具组合。包管理器由于其便捷性,被越来越多的新技术所采纳,从老一代的rpm、dpkg、maven,到中生代的npm、pypi、nuget,再到新生代的helm chart等,都属于包管理器。
包管理器为了实现软件包的自动升级和安装配置,一般会有几种类型的仓库:本地仓库、远程仓库/代理仓库、虚拟仓库。
仓库类型
01 本地仓库
本地仓库是在需要使用包管理工具的电脑上产生,一般会由包管理工具自动生成,需要注意的是,我们下文指的本地仓库是服务器本地,跟开发者电脑的本地不同。
02 远程仓库/代理仓库
远程仓库/代理仓库一般指中央仓库、大型机构搭建的中央仓库镜像站,比如:清华镜像站、中科大镜像站,或叠加多个仓库内容的聚合型仓库,比如:阿里的maven仓库。虚拟仓库即聚合型仓库,把多个仓库的内容聚合在一起对外提供服务。
私服就是在企业内部搭的至少包含一个本地仓库和一个远程仓库的虚拟仓库。
本地仓库的作用是实现企业内部的包发布,发布后才能给其他团队共享;远程仓库/代理仓库的作用则是可以拉取到互联网上完整的依赖包。
一般的私服工具还具备缓存功能,同一个包的第二次拉取会直接从私服上拿,避免频繁的低速互联网访问(很多中央仓库都是国外的网站)。
03 虚拟仓库
虚拟仓库的作业则是统一提供给开发人员使用,通过虚拟仓库的地址,不仅可以获取互联网上完整的依赖包,还可以获取企业内其他团队开发的组件。对于网络隔离比较严格的企业来说,私服一般需要搭建在DMZ区才能满足以上的需求。
搭建Maven私服
接下来介绍基于Artifactory搭建Maven私服,其他类型的仓库比如NPM、PyPI等,依此类推。
用管理员权限的账号登录Artifactory之后,可以看到Admin菜单下Repositories有Local、Remote、Virtual三种仓库类似,分别对应前面介绍的三种仓库。
进入Local仓库,New一个Maven类型的仓库,编辑页面有不少字段,必填的就一个Repository Key,为了好区分多个仓库,名字取maven-local,其他字段采用默认的即可。
接着切到Remote仓库,New一个Maven类型的远程仓库,必填的字段是Repository Key和RUL,Repository Key根据远程仓库标准进行命名,URL填一个中央仓库或国内的镜像站(网上都可以搜到),点击Test按钮确保网络是通的且远程仓库是正确的,保存即可。
最后切到Virtual仓库,New一个Maven类型的虚拟仓库,需要做的事情就是填一个Repository Key,同时把前面建的两个仓库加入到该虚拟仓库中。
最后切到Virtual仓库,New一个Maven类型的虚拟仓库,需要做的事情就是填一个Repository Key,同时把前面建的两个仓库加入到该虚拟仓库中。
至于如何发布包,Artifactory提供手工上传的功能,即上图的Deploy按钮,但是这种做法并不常见,更多的时候我们还是通过代码或指令来发布包。
那么问题来了,如何通过代码或指令来发布包呢?其实,私服只是个工具,它并不会影响包管理器的使用方式,原来怎么发布的,用上私服后还是一样的发布方式,变化的只是目标地址而已,过程不变。
作者:张坚欣
其他优质文章
从我们多年项目实践中,告诉您企业为什么要做IT运维管理转型?
来源:oschina
链接:https://my.oschina.net/u/4026796/blog/3196788