1 基础知识
1.1 NXRM的介绍
– NXRM是Nexus Repository Manager的缩写,翻译为nexus存储库管理器
– NXRM是专用的服务器应用程序,负责管理团队开发中的所有存储库(如Maven Central、npm等)
– NXRM响应多数软件开源或专用第三方代码组装的情况下开发
– NXRM可有效获取、存储、共享和部署软件部件
– NXRM不是从公共存储库直接下载、重复下载或手动分发而是提供一个中央访问和管理点
1.2 NXRM的功能
– 代理远程存储库并缓存
– 托管内部存储库
– 将多个存储库分组到一个存储库中,提供一个用于配置的URL
1.3 NXRM的优点
– NXRM允许系统自动从远程存储库中获取组件并缓存
– NXRM缓存有利于减少网络流量和构建实践
– NXRM可解决公共存储库故障或删除组件的问题
1.4 安装要求
1.4.1 硬件要求
– CPU:最低4Core(推荐8Core)
– 内存:最低8GB
– 硬盘:存储库小于20个,推荐小于20GB;存储库小于50个,推荐小于200GB,存储库大于50个,推荐200GB以上
1.4.2 系统要求
– Windows
– Linux
– Unix
– Macintosh
1.4.3 运行时要求
– Java 8(JRE)
– 必须指定内存堆栈的最小(-Xms)和最大(-Xmx)值
– 8GB指定范例(-Xms2703M -Xmx2703M -XX:MaxDirectMemorySize=2703M)
– 12GB指定范例(-Xms4G -Xmx4G -XX:MaxDirectMemorySize=4014M)
– 16GB指定范例(-Xms4G -Xmx4G -XX:MaxDirectMemorySize=6717M)
– 32GB指定范例(-Xms6G -Xmx6G -XX:MaxDirectMemorySize=15530M)
– 64GB指定范例(-Xms8G -Xmx8G -XX:+UseG1GC -XX:MaxDirectMemorySize=35158M)
1.4.4 文件句柄要求
echo 'nexus - nofile 65536' > /etc/security/limits.conf.d/nexus-repository-manager.conf
1.4.5 版本分类
– Nexus Repository OSS,即Open Source Software,开源软件
– Nexus Repository Pro,即Professional,专业版
2 最佳实践
2.1 安装的准备
2.1.1 系统信息
OS = RHEL 8.x x86_64
Host Name = any.cmdschool.org
IP Address = 10.168.0.67
2.1.2 安装openJDK
或者,你可以使用如下命令直接安装,
yum install -y java-1.8.0-openjdk
推荐安装openjdk 1.8.0_191以上版本,安装完毕,请使用如下命令确认Java的安装,
java -version
可见如下显示,
openjdk version "1.8.0_302" OpenJDK Runtime Environment (build 1.8.0_302-b08) OpenJDK 64-Bit Server VM (build 25.302-b08, mixed mode)
2.1.3 关闭SELinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config setenforce 0
2.1.4 下载安装包
cd ~ wget https://download.sonatype.com/nexus/3/nexus-3.38.0-01-unix.tar.gz
2.2 部署软件包
2.2.1 解压安装包
cd ~ tar -xf nexus-3.38.0-01-unix.tar.gz
2.2.2 配置运行用户
groupadd nexus useradd -g nexus -d /var/lib/nexus nexus
2.2.3 部署安装包
cd ~ mv nexus-3.38.0-01 /usr/
部署完成后,建议创建以下目录便于管理,
ln -s /usr/nexus-3.38.0-01/etc/ /etc/nexus
另外,还需配置目录权限
chown nexus:nexus -R /usr/nexus-3.38.0-01 chmod 755 -R /usr/nexus-3.38.0-01
2.2.4 配置软件包的环境变量
vim /etc/profile.d/nexus.sh
加入如下定义,
export nexus_HOME=/usr/nexus-3.38.0-01 export PATH=${nexus_HOME}/bin:$PATH
– 变量“nexus_HOME”声明nexus的家目录
– 变量“PATH”声明可执行文件的位置(加入nexus执行文件的声明)
创建完成后,你需要使用如下命令导入环境变量,
source /etc/profile.d/nexus.sh
2.3 配置软件包
2.3.1 配置运行时环境
cp /usr/nexus-3.38.0-01/bin/nexus.vmoptions /usr/nexus-3.38.0-01/bin/nexus.vmoptions.default
vim /usr/nexus-3.38.0-01/bin/nexus.vmoptions
修改如下配置,
-Xms2703m -Xmx2703m -XX:MaxDirectMemorySize=2703m -XX:+UnlockDiagnosticVMOptions -XX:+LogVMOutput -XX:LogFile=/var/log/nexus/jvm.log -XX:-OmitStackTraceInFastThrow -Djava.net.preferIPv4Stack=true -Dkaraf.home=. -Dkaraf.base=. -Dkaraf.etc=/etc/nexus/karaf -Djava.util.logging.config.file=/etc/nexus/karaf/java.util.logging.properties -Dkaraf.data=/data/nexus -Dkaraf.log=/var/log/nexus -Djava.io.tmpdir=/tmp -Dkaraf.startLocalConsole=false -Djdk.tls.ephemeralDHKeySize=2048 -Djava.endorsed.dirs=/usr/nexus-3.38.0-01/lib/endorsed
根据以上配置的需求,我们需要执行以下命令,
mkdir -p /data/nexus chown nexus:nexus -R /data/nexus chmod 755 -R /data/nexus mkdir -p /var/log/nexus chown nexus:nexus -R /var/log/nexus chmod 755 -R /var/log/nexus
2.3.2 修改服务配置文件
cp /etc/nexus/nexus-default.properties /etc/nexus/nexus-default.properties.default
vim /etc/nexus/nexus-default.properties
修改如下配置,
application-port=8081 application-host=0.0.0.0
2.3.3 手动测试服务
sudo -u nexus /usr/nexus-3.38.0-01/bin/nexus start
启动服务后,可以使用如下命令查看倾听的端口,
netstat -anp | grep java
可见如下显示,
tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN 36599/java tcp 0 0 127.0.0.1:42431 0.0.0.0:* LISTEN 36599/java unix 3 [ ] STREAM CONNECTED 91471 36599/java unix 3 [ ] STREAM CONNECTED 90416 36599/java unix 2 [ ] STREAM CONNECTED 90393 36599/java unix 3 [ ] STREAM CONNECTED 91470 36599/java unix 2 [ ] STREAM CONNECTED 90362 36599/java unix 3 [ ] STREAM CONNECTED 90415 36599/java
以下控制命令也可以使用,
sudo -u nexus /usr/nexus-3.38.0-01/bin/nexus status sudo -u nexus /usr/nexus-3.38.0-01/bin/nexus restart sudo -u nexus /usr/nexus-3.38.0-01/bin/nexus stop
2.3.4 配置启动脚本
vim /usr/lib/systemd/system/nexus.service
加入如下配置,
[Unit] Description=nexus service After=network.target Documentation=https://help.sonatype.com/repomanager3?_ga=2.65860011.409561940.1648172581-1859292968.1647310522 [Service] Type=forking User=nexus LimitNOFILE=65536 Restart=on-abort TimeoutSec=600 ExecStart=/usr/nexus-3.38.0-01/bin/nexus start ExecStop=/usr/nexus-3.38.0-01/bin/nexus stop [Install] WantedBy=multi-user.target
以上启动依赖zookeeper请根据实际需要配置,脚本创建后,需要使用如下命令重载使配置生效,
systemctl daemon-reload
然后可以使用如下命令服务控制,
systemctl start nexus.service systemctl restart nexus.service systemctl stop nexus.service systemctl status nexus.service
然后可以使用如下命令设置服务自动启动,
systemctl enable nexus.service
2.3.5 开放应用所需的端口
firewall-cmd --permanent --add-port 8081/tcp firewall-cmd --reload firewall-cmd --list-all
2.3.6 浏览器测试服务
http://10.168.0.67:8081/
根据以上提示,初始登陆的用户名是“admin”,初始密码需要使用如下命令获取,
cat /data/nexus/admin.password
注:登陆后请根据自己的实际需求完成初始化配置,这里不再赘述。
2.4 增强配置
2.4.1 配置集成LDAP
参阅文档
==================
Repository Manager 3文档
———————-
https://help.sonatype.com/repomanager3?_ga=2.65860011.409561940.1648172581-1859292968.1647310522
安装系统要求
——————
https://help.sonatype.com/repomanager3/product-information/system-requirements
安装教程
————-
https://guides.sonatype.com/repo3/quick-start-guides/proxying-maven-and-npm/
启动环境变量配置
——————
https://help.sonatype.com/repomanager3/installation-and-upgrades/configuring-the-runtime-environment
硬件配置要求
————-
https://help.sonatype.com/repomanager3/product-information/system-requirements
软件手册
———–
https://guides.sonatype.com/
没有评论