配置本地缓存服务器(一)

配置本地缓存服务器(一)

绝大多数系统管理员都遇到过开发部门抱怨软件包下载慢,严重影响工作效率的问题。对此问题,系统管理员也很无奈,无论接入带宽是10M、100M还是1G光纤,都不能解决这个问题。原因是很多时候下载慢并不是因为接入带宽不够,而是因为去源库的路上要翻越千山万水,克服重重困难,才能取到我们需要的真经。尽管分布在各地的各种镜像,缓解了部分问题,真正能解决问题的方式是建立本地镜像或缓存。

解决这个问题在最好办法是在本地建立镜像,但这种做法并不现实,资源要求太大,系统维护要求太高。我们采用了本地缓存方法来解决这个问题,原因是这种方式能解决绝大部分的问题,又没有大的资源和维护要求,完全能满足企业开发部门的需求。

本文将介绍如何使用多种缓存软件组合为完整的缓存服务器,满足企业软件开发部分的需求。

我们使用的免费缓存软件分别为:

Nexus Repository Manager 3 OSS:用于缓存 Bower、Docker、Git LFS、Maven、npm、NuGet、PyPI和Ruby Gems。

Apt-cacher-ng:该软件开发的目的是用于缓存Debian系的APT包,但实际上也能用于缓存YUM、RPM、BSD等的软件库。

SQUID:可缓存任意想缓存的内容,但配置复杂。我们将用它缓存其他软件库,如CPAN、CRAN、PECL等等。

下面我们将分别介绍它们的安装、配置和使用。


基于Nexus Repository Manager 3 OSS的缓存服务

这是由Sonatype公司开发的一款软件库管理软件,我们只介绍使用其缓存功能。我们可以从其下载页面获取该软件。

安装Nexus Repository Manager 3 OSS

安装Oracle Java 8
注意:NXRM 3 OSS 和 OpenJDK 有兼容性问题,所以安装Oracle的Java。

添加Oracle Java APT库

更新APT

安装Java

检查已安装的Java

将Nexus Repository 解压、安装到 /opt下

链接 /opt/nexus-3.14.0-04 到 /opt/nexus

设置 Nexus Repository 启停
在链接 /opt/nexus/bin/nexus 到 /etc/init.d/nexus

设置自动启动和自动停止

启动Nexus命令:service nexus start
停止Nexus命令:service nexus stop
重启Nexus命令:service nexus restart
显示Nexus状态:service nexus status
重新加载配置文件: /etc/init.d/nexus reload

Nexus Repository Manager已安装完成。重启系统,Nexus Repository Manager 将随系统自动启动。

设置Nexus Repository Manager 3 OSS

本文只介绍和缓存相关的内容。

配置本地缓存服务器(一)
NXRM OOS是一个功能非常丰富的Repository管理系统,本文只涉及其中的一小部分:Repository缓存。
就是Repository部分,我们也只关心Repositories部分,其他三部分采用默认设置。

点击【Repositories】

配置本地缓存服务器(一)
这个库是用于缓存Maven的Central Repositoray,下面是一些参数介绍。
  • Name:必须在NXRM OSS中是唯一的,这里用的是。
  • Type:这是缓存Central库,所以是。
  • URL:URL能操作到这个缓存库,这个链接是系统自动产生的。
  • Remote Repository:这是我们要缓存的库,这里是Central库,URL是
  • Maximum Metadata Age:我们把数字从一天延长为一个月,目的是减少检查meta数据的频率,降低因获取metadata失败造成的build失败几率。
    在建立缓存库是,真正需要输入的只用和。其他的采用默认值即可,默认值能满足绝大多数的需求。

maven-imagej缓存库
这个库是用于缓存ImageJ的Maven Repository。其他的设置和maven-central完全一样,除了和。
Name:maven-imagej
Remote Repository:http://maven.imagej.net/content/groups/public

maven-public缓存库

这个库和上面二个完全不一样,不是一个缓存库,它的作用是把该系统上的其他maven库集合成一个Maven总库,其他maven库中的artifacts都可以通过它来获取,它就是您的本地Central库。当增加新的Maven库时,开发者的本地Maven配置并不需要修改,这给开发人员提供了很大方便。

配置本地缓存服务器(一)

配置NXRM OSS就是这么方便,这是我们选用它来做 Bower、Docker、Git LFS、Maven、npm、NuGet、PyPI和Ruby Gems 的缓存服务器的一个重要原因。

使用Nexus Repository Manager 3 OSS

首先需要设置本地的Maven的配置,新建立的maven-public库将成为配置文件中的唯一Maven库。

现在让我们运行一个简单的项目,看看我们的配置是否按我们的要求工作。
首先建立文件,然后执行给项目打包。

这是一个空项目,我们只定了三个dependencies,分别是junit(版本4.10)、hamcrest-library(版本:1.2.1)和imagej-ui-swing(版本:0.21.4)。junit和hamcrest-library这二个版本都已经在Maven Central Repository中,imagej-ui-swing(版本:0.21.4)还没提交到Central Library,只能在ImageJ的Maven Repository中找到,这是为测试我们的缓存服务而特意安排的。

运行数次后,完成了打包。

配置本地缓存服务器(一)
如遇到下载pom文件出错,在再执行时可加上 -U标志,否则的活有可能立刻再次出错,原因是缓存会把没有资源的文件暂时屏蔽。-U 标志会忽略暂时标志,强制在指定的外部Maven库搜索资源。

让我们检查我们的缓存库资源,是否从不同的Maven库上缓存了资源。

配置本地缓存服务器(一)
很显然,我们成功地从不同的Maven库缓存了不同的资源。

到此为止我们的Maven缓存服务器已经可以投入生产了。

Bower、Docker、npm、NuGet、PyPI和Ruby Gems在此不做介绍,它们的配置方式和配置Maven缓存非常类似,可参照实施。

注意,Git LFS并不是缓存,是用于支持Git LFS(Large File Storage),Git服务器上只需要存放一个文件指针,指向这个文件即可,无需将大文件上传到Git服务器。

因为Nexus Repository Manager采用了特殊机制(下载-存储-提供服务),它可以缓存采用TLS/SSL加密传输的存储仓库内容。而其他缓存采用了下载/服务/缓存同时进行的技术,无法对采用TLS/SSL加密传输进行缓存。我们的建议是能采用NXRM OSS的,就用它进行缓存。


基于APT-CACHER-NG的缓存服务

该软件开发的目的是用于缓存Debian系的APT包,安装配置非常简单。

安装 APT-CACHER-NG

在Ubuntu上直接使用即可。

root@appcache:~# apt install apt-cacher-ngReading package lists... DoneBuilding dependency tree       Reading state information... DoneSuggested packages:  doc-base avahi-daemonThe following NEW packages will be installed:  apt-cacher-ng0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.Need to get 486 kB of archives.After this operation, 1,435 kB of additional disk space will be used.Get:1 http://us.archive.ubuntu.com/ubuntu bionic/universe amd64 apt-cacher-ng amd64 3.1-1build1 [486 kB]Fetched 486 kB in 4s (136 kB/s)       Preconfiguring packages ...Selecting previously unselected package apt-cacher-ng.(Reading database ... 102870 files and directories currently installed.)Preparing to unpack .../apt-cacher-ng_3.1-1build1_amd64.deb ...Unpacking apt-cacher-ng (3.1-1build1) ...Processing triggers for ureadahead (0.100.0-20) ...Processing triggers for systemd (来源:码场老农
                                                        

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年10月8日
下一篇 2018年10月8日

相关推荐