在软件开发和持续集成/持续部署(CI/CD)的流程中,一个稳定、高效的私有仓库(Repository)扮演着至关重要的角色,它不仅能加速依赖包的下载,还能用于存储和管理公司内部的构建产物,如 JAR 包、NPM 包、Docker 镜像等,Nexus Repository Manager 3(简称 Nexus 3.0)是 Sonatype 公司推出的一款功能强大的开源仓库管理软件,深受开发团队的喜爱,本文将详细介绍如何在主流的服务器操作系统 CentOS 上部署 Nexus 3.0,旨在提供一个清晰、完整且可操作的指南。
环境准备
在开始安装之前,确保您的 CentOS 系统满足以下基本要求,这些准备工作是保证 Nexus 平稳运行的基础。
系统要求
- 操作系统: CentOS 7 或更高版本。
- 硬件配置: 官方建议至少 2GB RAM 和 1 个 CPU 核心,对于生产环境,建议根据团队规模和代理/托管仓库的数量进行相应提升,8GB RAM 和 4 个 CPU 核心。
- 磁盘空间: 至少 20GB 的可用磁盘空间,用于存储 Nexus 程序和仓库数据,仓库数据会随着时间不断增长,因此建议为
sonatype-work
目录单独挂载一块足够大的磁盘。
安装 Java 开发工具包 (JDK)
Nexus 3.0 是一个基于 Java 的应用程序,因此必须安装 JDK,Nexus 3.x 版本支持 JDK 8 和 JDK 11,这里我们以安装 OpenJDK 11 为例,这是一个稳定且广泛使用的版本。
打开终端,执行以下命令来安装 OpenJDK 11:
sudo yum update -y sudo yum install -y java-11-openjdk java-11-openjdk-devel
安装完成后,通过以下命令验证 Java 版本:
java -version
如果输出中包含 openjdk version "11.0.xx"
等信息,则表示安装成功。
创建专用用户
出于安全考虑,强烈建议不要使用 root
用户来运行 Nexus,我们将创建一个名为 nexus
的专用系统用户。
sudo useradd -r -m -d /opt/nexus -s /bin/bash nexus
-r
: 创建系统用户。-m
: 创建用户的主目录。-d /opt/nexus
: 指定主目录为/opt/nexus
,这也是我们稍后安装 Nexus 的位置。-s /bin/bash
: 指定用户的 shell。
下载与安装 Nexus
准备工作就绪后,我们开始下载、解压并配置 Nexus。
下载 Nexus 安装包
访问 Sonatype 官方下载页面(https://help.sonatype.com/repomanager3/download)获取最新的 Nexus 3.0 通用版(Unix)下载链接,在撰写本文时,最新版本为 3.59.0,您可以使用 wget
命令直接下载到服务器。
# 进入临时目录 cd /tmp # 下载 Nexus 安装包(请根据实际情况替换版本号) wget https://download.sonatype.com/nexus/3/nexus-3.59.0-01-unix.tar.gz
解压并移动文件
下载完成后,解压压缩包,解压后会生成两个目录:nexus-3.59.0-01
(包含应用程序文件)和 sonatype-work
(包含仓库数据、日志等所有运行时生成的文件)。
# 解压 tar -xvf nexus-3.59.0-01-unix.tar.gz
为了方便管理,我们将这两个目录移动到 /opt
目录下,并重命名以简化路径。
# 移动并重命名应用程序目录 sudo mv nexus-3.59.0-01 /opt/nexus # 移动数据目录 sudo mv sonatype-work /opt/
设置目录权限
将 /opt/nexus
和 /opt/sonatype-work
目录的所有权授予我们之前创建的 nexus
用户。
sudo chown -R nexus:nexus /opt/nexus sudo chown -R nexus:nexus /opt/sonatype-work
配置 Nexus 服务
为了让 Nexus 能够以后台服务的形式稳定运行,并随系统启动,我们需要进行一些核心配置。
配置运行用户
编辑 /opt/nexus/bin/nexus.rc
文件,取消注释并设置 run_as_user
参数。
sudo vi /opt/nexus/bin/nexus.rc
在文件中添加或修改以下行:
run_as_user="nexus"
配置 JVM 内存(可选但建议)
根据服务器的物理内存,调整 Nexus 使用的 JVM 堆内存大小,对于生产环境,合理的内存配置至关重要,编辑 /opt/nexus/bin/nexus.vmoptions
文件。
sudo vi /opt/nexus/bin/nexus.vmoptions
默认配置可能如下所示,您可以根据实际情况调整 -Xms
(初始堆大小)和 -Xmx
(最大堆大小)的值,对于一个 8GB 内存的服务器,可以设置为 -Xms2703m -Xmx2703m
。
-Xms2703m
-Xmx2703m
-XX:MaxDirectMemorySize=2703m
... (其他选项保持不变)
配置为 Systemd 服务
这是将 Nexus 管理现代化的最佳实践,我们需要为 Nexus 创建一个 systemd 服务单元文件。
sudo vi /etc/systemd/system/nexus.service
在文件中填入以下内容:
[Unit] Description=Nexus Repository Manager After=network.target [Service] Type=forking LimitNOFILE=65536 ExecStart=/opt/nexus/bin/nexus start ExecStop=/opt/nexus/bin/nexus stop User=nexus Restart=on-abort TimeoutSec=600 [Install] WantedBy=multi-user.target
启动并启用 Nexus 服务
重新加载 systemd 守护进程,使新的服务文件生效。
sudo systemctl daemon-reload
可以启动 Nexus 服务,并设置其为开机自启。
sudo systemctl start nexus sudo systemctl enable nexus
检查服务状态
使用以下命令来检查 Nexus 服务的运行状态。
sudo systemctl status nexus
如果看到 active (running)
的绿色字样,说明 Nexus 已成功启动,首次启动可能需要几分钟时间,如果启动失败,可以查看日志文件 /opt/sonatype-work/nexus3/log/nexus.log
来排查错误。
访问与初始设置
防火墙配置
Nexus 默认使用 8081
端口,如果您的服务器启用了防火墙(如 firewalld
),需要放开此端口。
sudo firewall-cmd --permanent --add-port=8081/tcp sudo firewall-cmd --reload
Web 界面访问
打开浏览器,访问 http://<your_server_ip>:8081
,您将看到 Nexus 的欢迎页面。
获取管理员密码
首次登录时,Nexus 要求您输入管理员密码,该密码在首次启动时自动生成,并存储在一个文件中,登录服务器,使用以下命令查看密码:
sudo cat /opt/sonatype-work/nexus3/admin.password
复制显示的随机字符串密码。
完成向导设置
在登录页面使用用户名 admin
和刚刚复制的密码登录,按照向导提示进行操作:
- 设置新的管理员密码。
- 配置是否允许匿名访问,对于内部使用,可以开启;对于对公网暴露的服务,建议关闭以增强安全性。
至此,您已成功在 CentOS 服务器上部署并配置了 Nexus 3.0,您就可以登录管理界面,创建 Blob Stores、 Repositories,并配置您的开发项目来使用这个功能强大的私有仓库了。
相关问答 (FAQs)
问:如果忘记了 Nexus 的管理员密码,该如何重置?
答: 重置管理员密码是一个简单的过程,您需要 SSH 登录到 Nexus 服务器,执行以下步骤:
- 停止 Nexus 服务:
sudo systemctl stop nexus
- 删除或重命名存储密码的文件,这个文件位于:
/opt/sonatype-work/nexus3/admin.password
可以选择直接删除它:
sudo rm /opt/sonatype-work/nexus3/admin.password
- 重新启动 Nexus 服务:
sudo systemctl start nexus
- 等待服务完全启动(可能需要几分钟),Nexus 会在上述位置重新生成一个新的
admin.password
文件。 - 再次使用
cat
命令查看新文件内容,获取新的临时密码,然后登录 Web UI 按照首次登录的流程重新设置您的密码。
问:Nexus 启动失败,我应该从哪里开始排查问题?
答: Nexus 启动失败的原因有很多,排查的最佳起点是日志文件,最关键的日志文件是:
- 应用程序日志:
/opt/sonatype-work/nexus3/log/nexus.log
- 服务启动日志: 通过
journalctl -u nexus.service
命令查看 systemd 服务的日志。
在排查时,请重点关注以下几个常见原因:
- Java 版本不匹配: 确认您安装的 JDK 版本是 Nexus 3.0 支持的(如 8 或 11),可以在
nexus.log
中查找与 Java 相关的错误。 - 端口被占用: 检查您配置的端口(默认 8081)是否已被其他进程占用,使用
netstat -tulpn | grep 8081
或ss -tulpn | grep 8081
命令来检查。 - 权限问题: 确保整个
/opt/nexus
和/opt/sonatype-work
目录及其子文件的所有者都是nexus
用户,权限问题通常是导致启动失败最常见的原因之一。 - JVM 内存不足: 如果您在
nexus.vmoptions
中分配的内存超过了服务器的物理可用内存,Nexus 将无法启动,请根据服务器实际情况调整内存配置。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复