文章目录
Nexus 官网文档地址:https://help.sonatype.com/repomanager3
Nexus 版本包括收费版 Nexus Repository Manager PRO 和 开源免费版 Nexus Repository Manager OSS,本文使用 开源免费 OSS 版。
当前最先版本:Latest Version: 3.27.0-03
本文中目录相关的引用说明
nexus tar 包文件解压之后,会有两个文件夹,分别
- $intall-dir 对应 nexus-3.27.0-03
- $data-dir 对应 sonatype-work/nexus3
1 系统需求
wget https://sonatype-download.global.ssl.fastly.net/repository/downloads-prod-group/3/nexus-3.27.0-03-unix.tar.gz
执行时,4G 和公司网络均无法连接到下载地址,最后通过迅雷下载工具曲线实现下载,然后上传到服务器的。
官方建议新建并使用专用账户 nexus 来运行,不要使用 root 用户。
useradd nexus
Nexus 需要消耗比系统用户默认值更多的 file handler,在运行 nexus 之前需要将 open files descriptors 限制提高到 65536 或者更高。
在 /etc/security/limits.conf 添加如下内容,nexus 为用户ID
nexus - nofile 65536
上面的修改,nexus 进程下次重启有效。
最小 CPUs 4 个,建议CPUs 8 个。
查看CPU信息:
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
2
cat /proc/cpuinfo | grep "cpu cores" | uniq
cpu cores : 4
cat /proc/cpuinfo| grep "processor"| wc -l
8
必须设置 jvm heap memory 的最小值(-Xms)和最大值(-Xmx),且值大小必须相等,最大值不超过 4G。
内存设置通用指南:
- 最小主机物理内存 8G
- 堆内存最小值(-Xms)和最大值(-Xmx)必须相等
- 最小堆内存 2703MB
- 最大堆内存 <= 4G
- 最小直接内存(-XX:MaxDirectMemorySize)大小 2703MB
- 最小未分配物理/RAM内存应不小于总物理RAM的1/3,以允许进行虚拟内存交换
- 最大堆内存 + 最大直接内存 <= 总物理内存 * 2/3
最大内存配置示例:
Physical/RAM Memory | Example Maximum Memory Configuration |
---|---|
8GB |
-Xms2703M
-Xmx2703M
-XX:MaxDirectMemorySize=2703M
|
12GB |
-Xms4G
-Xmx4G
-XX:MaxDirectMemorySize=4014M
|
16GB |
-Xms4G
-Xmx4G
-XX:MaxDirectMemorySize=6717M
|
32GB |
-Xms4G
-Xmx4G
-XX:MaxDirectMemorySize=17530M
|
64GB |
-Xms4G
-Xmx4G
-XX:MaxDirectMemorySize=39158M
|
2 关于安装
不建议安装并运行在用户目录,而是建议使用 /opt 目录。
第一步,解压下载好的 nexus-3.27.0-03-unix.tar.gz 到 /opt/nexus 目录;
tar zxvf nexus-3.27.0-03-unix.tar.gz
第二步,在 nexus bin 目录下运行
./nexus run
上面的命令会在当前 shell 启动 nexus 并显示日志输出。“Started Sonatype Nexus” 日志输出显示之后,就可以访问 nexus 服务了。CTRL + C 可以结束停止 nexus 服务。
除了上面的 run 命令,也可以使用 nexus 脚本的 start、stop、restart、force-reload 和 status 命令,让 nexus 作为后台应用服务来管理。
2.1 作为服务来运行
生产环境一般将 nexus 作为服务或者后台进程来运行,服务器重启时,nexus 也重启。nexus 发行包不包括运行服务的配置。与操作系统无关的三步如下:
- 创建专用的操作系统用户,用于将 nexus 作为服务来运行;
- 确认安装了正确的 Java 运行环境;
- 配置服务确保其在操作系统启动时启动;
在 bin/nexus.rc 中指定专用用户:
run_as_user="nexus"
创建 $intall-dir/bin/nexus 到 /etc/init.d/nexus 软链接
sudo ln -s /opt/nexus-3.15.2-01/bin/nexus /etc/init.d/nexus
使用 chkconfig,使 init.d 中的初始化脚本运行 nexus 服务,运行下面的命令脚本激活服务
cd /etc/init.d
sudo chkconfig --add nexus
sudo chkconfig --levels 345 nexus on
sudo service nexus start
chkconfig 管理 /etc/rc[0-6].d 中的文件软链接,当操作系统重启或者切换运行级别的时候,这些软链接控制服务的启动和停止
2.2 配置内存
- 打开 $install-dir/bin/nexus.vmoptions
- 找到下面配置内存的行
-Xms2703M
-Xmx2703M
-XX:MaxDirectMemorySize=2703M
- 用如下格式修改配置项的值,数字size数值和字母单位(大小写均可)
-Xmssize[g|G|m|M|k|K]
-Xmxsize[g|G|m|M|k|K]
-XX:MaxDirectMemorySize=size[g|G|m|M|k|K]
- 保存文件,并确保 运行 nexus 服务的用户拥有文件权限和所有权
2.3 修改 HTTP 端口
默认端口是 8081,编辑 $data-dir/etc/nexus.properties 文件,修改配置项 application-port
application-port=9081
2.4 修改 Context Path
编辑 $data-dir/etc/nexus.properties 文件,修改默认值 nexus-context-path=/
nexus-context-path=/components/
2.5 配置数据目录
我们可以在文件 $install-dir/bin/nexus.vmoptions 中配置新数据目录位置。相关配置项 -Dkaraf.data,-Djava.io.tmpdir,-Dkaraf.log 和 -XX:LogFile,例如
-Dkaraf.data=/opt/sonatype-work/nexus3
-Djava.io.tmpdir=/opt/sonatype-work/nexus3/tmp
-XX:LogFile=/opt/sonatype-work/nexus3/log/jvm.log
-Dkaraf.log=/opt/sonatype-work/nexus3/log
2.6 配置临时目录
Nexus 临时目录默认使用 java 虚拟机临时目录来存储重要的运行时文件。
建议临时目录设置在 nexus 数据目录中的 $data-dir/tmp,同时必须满足
- nexus 服务运行用户必须是文件拥有者并具有运行权限,否则启动 nexus 会报错;
- 不要处理任何临时目录中的文件,尤其是在服务运行时;
- 确保文件目录所在磁盘拥有 1GB 以上的剩余空间;
修改临时目录,打开并编辑 $install-dir/bin/nexus.vmoptions 文件,修改 -Djava.io.tmpdir=…/sonatype-work/nexus3/tmp 所在行的值,可以是绝对目录或者 $install-dir/bin 的相对目录。
2.7 使用反向代理
在公司的服务器上,出于某些原因,nexus 需要运行在反向代理后面,比如只统一开放 80 端口等。
nginx 反向代理配置示例
http {
proxy_send_timeout 120;
proxy_read_timeout 300;
proxy_buffering off;
keepalive_timeout 5 5;
tcp_nodelay on;
server {
listen