Nexus 是一个强大的 Maven 仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问。通常在公司内部会搭建私有的maven仓库, 来存储java编译过程中需要的依赖包. 初次编译时, maven仓库会从官网下载依赖包到本地, 这样经过几次编译后, 本地就会存储大部分的依赖包, 如果本地没有, 那么maven仓库会去官网进行下载.
一般来说, 在公司内部会有专门的编译服务器, 这些服务器的内存和cpu都是配置很高的, 在代码上线时, 开发把代码提交到gitlab, 再由运维人员在jenkins触发编译和代码上线的任务. 编译过程中, 编译服务器会去本地的maven仓库下载依赖包, 如果本地没有, 再去官网下载, 以此来加速编译的速度
maven 官方仓库: http://repo.maven.apache.org
Nexus官方下载页面: https://help.sonatype.com/repomanager3/download/download-archives---repository-manager-3

环境:
Ubuntu-1804 10.0.0.139 8G 4C, 官方提示最少4个CPU
Maven 3.6.3 二进制
Nexus 3.31.1
root@Nexus:~# apt -y install openjdk-8-jdk
root@Nexus:~# mkdir /apps
root@Nexus:~# cd /apps
root@Nexus:/apps# ls
nexus-3.31.1-01-unix.tar.gz
root@Nexus:/apps# tar xf nexus-3.31.1-01-unix.tar.gz
root@Nexus:/apps# ln -sv nexus-3.31.1-01 nexus
'nexus' -> 'nexus-3.31.1-01'
root@Nexus:/apps# ll
total 188388
drwxr-xr-x 4 root root 4096 Jun 30 15:59 ./
drwxr-xr-x 25 root root 4096 Jun 30 15:58 ../
lrwxrwxrwx 1 root root 15 Jun 30 15:59 nexus -> nexus-3.31.1-01/
drwxr-xr-x 10 root root 4096 Jun 30 15:59 nexus-3.31.1-01/
-rw-r--r-- 1 root root 192890245 Jun 30 15:56 nexus-3.31.1-01-unix.tar.gz
drwxr-xr-x 3 root root 4096 Jun 30 15:59 sonatype-work/
root@Nexus:~# cd /apps/nexus
root@Nexus:/apps/nexus# ./bin/nexus --help
WARNING: ************************************************************
WARNING: Detected execution as "root" user. This is NOT recommended!
WARNING: ************************************************************
Usage: ./bin/nexus {start|stop|run|run-redirect|status|restart|force-reload}
root@Nexus:/apps/nexus# vim /lib/systemd/system/nexus.service
[Unit]
Description=nexus service
After=network.target
[Service]
Type=forking
LimitNOFILE=65536
ExecStart=/apps/nexus/bin/nexus start
ExecStop=/apps/nexus/bin/nexus stop
User=nexus
Restart=on-abort
TimeoutSec=600
[Install]
WantedBy=multi-user.target
root@Nexus:/apps/nexus# useradd nexus -r
root@Nexus:/apps/nexus# id nexus
uid=999(nexus) gid=999(nexus) groups=999(nexus)
root@Nexus:/apps/nexus# chown -R nexus.nexus /apps/nexus
root@Nexus:/apps/nexus# chown -R nexus.nexus /apps/nexus/
root@Nexus:/apps/nexus# chown -R nexus.nexus /apps/sonatype-work/
root@Nexus:/apps/nexus# systemctl daemon-reload
root@Nexus:/apps/nexus# systemctl start nexus
root@Nexus:/apps/nexus# systemctl enable --now nexus
Created symlink /etc/systemd/system/multi-user.target.wants/nexus.service → /lib/systemd/system/nexus.service.
root@Nexus:/apps/nexus# ll /apps
total 188388
drwxr-xr-x 4 root root 4096 Jun 30 15:59 ./
drwxr-xr-x 25 root root 4096 Jun 30 15:58 ../
lrwxrwxrwx 1 nexus nexus 15 Jun 30 15:59 nexus -> nexus-3.31.1-01/
drwxr-xr-x 10 nexus nexus 4096 Jun 30 15:59 nexus-3.31.1-01/
-rw-r--r-- 1 root root 192890245 Jun 30 15:56 nexus-3.31.1-01-unix.tar.gz
drwxr-xr-x 3 nexus nexus 4096 Jun 30 15:59 sonatype-work/
root@Nexus:/apps/nexus# ss -ntl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 50 0.0.0.0:8081 # 监听8081端口 0.0.0.0:*
LISTEN 0 128 127.0.0.53%lo:53 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 1 127.0.0.1:44679 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
oot@Nexus:/apps/nexus# lsof -i:8081
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 13729 nexus 905u IPv4 55904 0t0 TCP *:tproxy (LISTEN)


root@Nexus:/apps/nexus# cat /apps/sonatype-work/nexus3/admin.password
1b2753ec-1751-4749-b696-e1df2cc77b1e






Hosted:本地仓库,通常我们会部署自己的构建到这一类型的仓库,比如公司的第三方库. 是公司自己制作的包, 比如自己制作的rpm, 这些不需要依赖互联网上的包
Proxy:代理仓库,它们被用来代理远程的公共仓库,如 maven 中央仓库(官方
仓库)。 这些仓库会存储一部分依赖包, 如果本地没有, 会去官方仓库下载
Group:仓库组,用来合并多个 hosted/proxy 仓库,当你的项目希望在多个repository 使用资源时就不需要多次引用了,只需要引用一个 group 即可。
配置 nexus 作为公司内网 yum 仓库,通过清华大学镜像安装包, 为企业内部服务器提供Zabbix的rpm包下载






环境: 10.0.0.237 CentOS-7
默认情况CentOS官网没有提供zabbix-server
[17:43:11 root@CentOS-7-1 ~]#yum -y install zabbix-server
Loaded plugins: fastestmirror
Determining fastest mirrors
* BaseOS: mirrors.163.com
BaseOS | 3.6 kB 00:00:00
epel | 4.7 kB 00:00:00
extras | 2.9 kB 00:00:00
(1/5): epel/group_gz | 96 kB 00:00:00
(2/5): BaseOS/primary_db | 6.1 MB 00:00:00
(3/5): epel/updateinfo | 1.0 MB 00:00:00
(4/5): extras/primary_db | 242 kB 00:00:00
(5/5): epel/primary_db | 6.9 MB 00:00:04
No package zabbix-server available.
Error: Nothing to do
[17:43:23 root@CentOS-7-1 ~]#vim /etc/yum.repos.d/zabbix.repo
[Zabbix]
name=zabbix-repo-proxy
baseurl=http://10.0.0.139:8081/repository/zabbix-repo-proxy/
enabled=1
gpgcheck=0
[17:50:04 root@CentOS-7-1 ~]#yum -y install zabbix-server
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* BaseOS: mirrors.163.com
BaseOS | 3.6 kB 00:00:00
Zabbix | 1.5 kB 00:00:00
epel | 4.7 kB 00:00:00
extras | 2.9 kB 00:00:00
Zabbix/primary | 53 kB 00:00:00
Zabbix 471/471
Resolving Dependencies
--> Running transaction check
---> Package zabbix-server-mysql.x86_64 0:4.0.32-1.el7 will be installed
--> Processing Dependency: fping for package: zabbix-server-mysql-4.0.32-1.el7.x86_64
--> Processing Dependency: libnetsnmp.so.31()(64bit) for package: zabbix-server-mysql-4.0.32-1.el7.x86_64
--> Processing Dependency: libOpenIPMIposix.so.0()(64bit) for package: zabbix-server-mysql-4.0.32-1.el7.x86_64
--> Processing Dependency: libiksemel.so.3()(64bit) for package: zabbix-server-mysql-4.0.32-1.el7.x86_64
--> Processing Dependency: libOpenIPMI.so.0()(64bit) for package: zabbix-server-mysql-4.0.32-1.el7.x86_64
--> Processing Dependency: libodbc.so.2()(64bit) for package: zabbix-server-mysql-4.0.32-1.el7.x86_64
--> Running transaction check
---> Package OpenIPMI-libs.x86_64 0:2.0.27-1.el7 will be installed
--> Processing Dependency: OpenIPMI-modalias = 2.0.27-1.el7 for package: OpenIPMI-libs-2.0.27-1.el7.x86_64
---> Package fping.x86_64 0:3.10-4.el7 will be installed
---> Package net-snmp-libs.x86_64 1:5.7.2-49.el7 will be installed
---> Package unixODBC.x86_64 0:2.3.1-14.el7 will be installed
---> Package zabbix-server-mysql.x86_64 0:4.0.32-1.el7 will be installed
--> Processing Dependency: libiksemel.so.3()(64bit) for package: zabbix-server-mysql-4.0.32-1.el7.x86_64
--> Running transaction check
---> Package OpenIPMI-modalias.x86_64 0:2.0.27-1.el7 will be installed
--> Processing Dependency: OpenIPMI for package: OpenIPMI-modalias-2.0.27-1.el7.x86_64
---> Package zabbix-server-mysql.x86_64 0:4.0.32-1.el7 will be installed
--> Processing Dependency: libiksemel.so.3()(64bit) for package: zabbix-server-mysql-4.0.32-1.el7.x86_64
--> Running transaction check
---> Package OpenIPMI.x86_64 0:2.0.27-1.el7 will be installed
---> Package zabbix-server-mysql.x86_64 0:4.0.32-1.el7 will be installed
--> Processing Dependency: libiksemel.so.3()(64bit) for package: zabbix-server-mysql-4.0.32-1.el7.x86_64
--> Finished Dependency Resolution
Error: Package: zabbix-server-mysql-4.0.32-1.el7.x86_64 (Zabbix)
Requires: libiksemel.so.3()(64bit)
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/iksemel-1.4-6.sdl7.x86_64.rpm
[18:50:32 root@CentOS-7-1 ~]#yum -y install iksemel-1.4-6.sdl7.x86_64.rpm
[18:51:10 root@CentOS-7-1 ~]#yum -y install zabbix-server

默认使用的是default的blob store, 因此, 会存到default/content目录下
root@Nexus:/apps/sonatype-work/nexus3/blobs/default/content#tree

生产环境一般都会给Nexus的数据目录挂载一个单独的存储, 这里假定把数据都放到/data目录下

nexus需要对数据目录有权限, 否则无法创建blob store
root@Nexus:~# chown -R nexus.nexus /data/

存储目录也会自动创建
root@Nexus:~# ll /data
total 12
drwxr-xr-x 3 nexus nexus 4096 Jun 30 19:12 ./
drwxr-xr-x 25 root root 4096 Jun 30 15:58 ../
drwxr-xr-x 3 nexus nexus 4096 Jun 30 19:12 zabbix-rpm/

由于仓库创建后无法修改, 因此, 需要把之前创建的zabbix仓库删除, 重新创建, 指定使用新建的zabbix-rpm路径


[19:18:09 root@CentOS-7-1 ~]#vim /etc/yum.repos.d/zabbix.repo
[Zabbix]
name=zabbix-repo-proxy
baseurl=http://10.0.0.139:8081/repository/zabbix-blob-rpm/
enabled=1
gpgcheck=0
[19:19:49 root@CentOS-7-1 ~]#yum -y install zabbix-get

root@Nexus:/data/zabbix-rpm/content/vol-30/chap-26# cat a74c0206-4afd-4d80-a490-3368b76fcc59.properties
#2021-06-30 19:19:58,491+0800
#Wed Jun 30 19:19:58 CST 2021
@BlobStore.created-by=anonymous
size=307176
@Bucket.repo-name=zabbix-blob-rpm
creationTime=1625051998491
@BlobStore.created-by-ip=10.0.0.237
@BlobStore.content-type=application/x-rpm
@BlobStore.blob-name=zabbix-get-4.0.32-1.el7.x86_64.rpm
sha1=e3776ad6fab425eec08407cf10d541e01e692a75
Nexus的数据不像业务数据不能丢失, 因为其数据都是从官方源镜像下来的, 因此, 即使丢失了, 下载此安装软件时, 重新下载一次即可
Nexus 中普通数据信息(安装包)和元数据(properties文件)是分开存储的,普通数据是保存在 blob 中,而元数据保存在数据库中,所以在备份的时候必须同时进行备份普通数据和元数据,才能在后期恢复数据的时候保证数据的最终完整性。
blob 数据:
普通数据信息在 Nexus 中是保存在 blob 中的,所以此部分数据必须进行备份,blob 的典型配置中,此目录对应着 Nexus 的数据目录的 blobs 子目录。
元数据:
元数据在 Nexus 中是在数据库中进行保存的,为了保证数据的完整性,Nexus需要同时将数据库中的数据进行导出和备份





root@Nexus:~# chown nexus.nexus /opt/

任务运行后, 可以查看运行结果

root@Nexus:~# tree /opt
/opt
└── nexus-backup # 这个目录就是备份设定指定的数据库备份目录
├── component-2021-06-30-19-52-22-3.31.1-01.bak
├── config-2021-06-30-19-52-22-3.31.1-01.bak
└── security-2021-06-30-19-52-22-3.31.1-01.bak
1 directory, 3 files




如果需要还原数据, 只需要把备份文件拷贝到指定的数据目录, 重启服务即可
root@Nexus:/apps/nexus/bin# vim nexus.vmoptions
-Dkaraf.data=../sonatype-work/nexus3
描述恺撒密码是古罗马凯撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下:原文:ABCDEFGHIJKLMNOPQRSTUVWXYZ
在使用Rubyv2.2.2的ElCapitan(MacOSX10.11.1)上安装Rails时,出现以下错误:ERROR:Errorinstallingnokogiri:ERROR:Failedtobuildgemnativeextension./Users/jon/.rvm/rubies/ruby-2.2.2/bin/ruby-r./siteconf20151117-26799-ux15fd.rbextconf.rb--use-system-librariescheckingiftheCcompileraccepts...***extconf.rbfailed***Couldnotc
我有一段文本需要扫描,每行至少包含2部分信息,有时包含4部分信息。问题是每一行可能是15-20种不同操作中的一种。在ruby中,当前代码看起来像这样:text.split("\n").eachdo|line|#around20times................expressions['actions'].eachdo|pat,reg|#around20times.................这显然是“问题所在”。通过将所有正则表达式合并为一个,我确实设法使其更快(在C++中提高了50%),但这仍然不是我需要的速度——我需要快速解析数千个这些文件!现在我将它们与正则表达式
在日常的生活和工作中,住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替了传统的机械式密码锁,电子密码锁具有安全性高、成本低、功耗低、易操作等优点。本文主要介绍运用51单片机设计数字密码锁的方法。本设计采用自上而下的数字系统设计方法,将数字密码锁系统分解为若干子系统,并且进一步细划为若干模块,然后用C语言来设计这些模块,通过KEIL软件编译,并且进行实机调试。调试结果表明:该数字密码锁能够效验4位十进制
使用RVM,我尝试在安装Fedora15后安装ree-1.8.7-2011.03,但出现以下错误。在Ubuntu11.04上使用rvminstallree-1.8.7-2011.03工作正常..与Fedora15上的MRIruby-1.8.7-p334相同的错误(和解决方案)。关于如何解决这个问题有什么想法吗?make[1]:Enteringdirectory`/home/ryguy/.rvm/src/ree-1.8.7-2011.03/source/ext/dl'gcc-I/opt/local/include-I.-I/opt/local/include-I../..-I../.
有没有一种简单的方法可以将时间四舍五入到最接近的15分钟?这就是我目前正在做的事情。有更简单的方法吗?t=Time.newrounded_t=Time.local(t.year,t.month,t.day,t.hour,t.min/15*15) 最佳答案 您说的是“向下舍入”,所以我不确定您实际上是在寻找回合数还是底数,但这是执行这两项操作的代码。如果将round_off和floor方法添加到Time类,我认为这样的内容读起来真的很好。额外的好处是您可以更轻松地按任何时间分区舍入。require'active_support/cor
Go第15章:单元测试15.1先看一个需求在我们工作中,我们会遇到这样的情况,就是去确认一个函数,或者一个模块的结果是否正确,如:15.2传统的方法15.2.1传统的方式来进行测试在main函数中,调用addUpper函数,看看实际输出的结果是否和预期的结果一致,如果一致,则说明函数正确,否则函数有错误,然后修改错误代码实现:15.2.2传统方法的缺点分析不方便,我们需要在main函数中去调用,这样就需要去修改main函数,如果现在项目正在运行,就可能去停止项目。不利于管理,因为当我们测试多个函数或者多个模块时,都需要写在main函数,不利于我们管理和清晰我们思路引出单元测试。->testin
之前跟着老师的视频安装了一个es6.4.3,视频里说“6->7类型逐渐被废弃,版本变化较大,与springboot不兼容,建议安装6.4.3与内部一致”,我就很天真的跟着一块装了,结果可想而知……我的springboot版本是2.6.4啊,怎么可能不报错呢??!还是要多看官方文件!整合最重要的就是这张图,版本对了什么都好说es对应的springboot版本SpringDataReleaseTrainSpringDataElasticsearchElasticsearchSpringFrameworkSpringBoot2021.2(Raj)4.4.x7.17.45.3.x2.7.x2021.1
我是cucumberjs的新手,只是第一次尝试运行一个功能。我已经构建了cucumber-jsgithubpage上的功能.尝试运行时出现此错误:Benjamins-MBP:FeaturesBen$cucumber.jsexample.featureFeature:ExamplefeatureAsauserofcucumber.jsIwanttohavedocumentationoncucumberSothatIcanconcentrateonbuildingawesomeapplicationsScenario:Readingdocumentation#example.feature
我正在尝试使用highcharts来表示这些数据:[{"name":"c1","data":[[-52587360000000,2],[-52590038400000,1],[-52611724800000,1],[-52622611200000,1],[-52655184000000,1],[-52663392000000,2],[-52855545600000,2]]},{"name":"c2","data":[[-52587360000000,2],[-52590038400000,1],[-52611724800000,1],[-52622611200000,1],[-5265