Skip to content

CentOS 7 部署 Nexus 私有 Maven 仓库

第一步:安装 Java 环境

bash
$ curl -O https://download.bell-sw.com/java/21.0.11+11/bellsoft-jdk21.0.11+11-linux-amd64.tar.gz

这里是安装步骤

第二步:下载与安装 Nexus

Nexus 以压缩包形式分发,通常安装于 /opt 目录下。

  1. 下载安装包:
    bash
    cd /opt
    # 下载最新版 Nexus 3 (OSS 版)
    sudo wget https://download.sonatype.com/nexus/3/nexus-3.92.2-01-linux-x86_64.tar.gz
    若下载缓慢,可在本地下载 tar.gz 包后,通过 scp 命令上传至服务器。
  2. 解压安装包:
    bash
    sudo tar -zxvf nexus-3.92.2-01-linux-x86_64.tar.gz
    # 重命名解压后的文件夹,便于后续操作
    sudo mv nexus-3.* nexus

第三步:创建专用用户并授权

出于安全考虑,Nexus 官方不建议使用 root 用户直接运行服务。

  1. 创建 nexus 用户:
    bash
    sudo useradd -r -m -U -d /opt/nexus nexus
  2. 更改目录权限:
    bash
    sudo chown -R nexus:nexus /opt/nexus
    sudo chown -R nexus:nexus /opt/sonatype-work 2>/dev/null
  3. 指定运行用户:
    bash
    echo 'run_as_user="nexus"' | sudo tee -a /opt/nexus/bin/nexus.rc

第四步:配置 Nexus (可选)

Nexus 的默认配置(如端口)通常已足够,但可根据需要进行修改。

  • 修改监听端口: 编辑 /opt/nexus/etc/nexus-default.properties 文件,修改 application-port 配置项(默认为 8081)。
  • 调整 JVM 内存: 编辑 /opt/nexus/bin/nexus.vmoptions 文件,根据服务器配置调整 -Xms-Xmx 参数。

第五步:配置 systemd 服务

为了让 Nexus 能开机自启并能方便地进行服务管理,将其配置为系统服务是最佳实践。

  1. 创建服务文件:
    bash
    sudo tee /etc/systemd/system/nexus.service > /dev/null <<EOF
    [Unit]
    Description=Nexus Repository Manager
    After=network.target
    
    [Service]
    Type=forking
    User=nexus
    Group=nexus
    LimitNOFILE=65536
    ExecStart=/opt/nexus/bin/nexus start
    ExecStop=/opt/nexus/bin/nexus stop
    Restart=on-abort
    
    [Install]
    WantedBy=multi-user.target
    EOF

    配置说明Type=forking 是 Nexus 服务推荐的启动方式。LimitNOFILE 项用于提高 Nexus 能打开的文件描述符数量,避免出现警告。

  2. 加载并启动服务:
    bash
    sudo systemctl daemon-reload
    sudo systemctl enable nexus.service
    sudo systemctl start nexus.service
  3. 检查服务状态:
    bash
    sudo systemctl status nexus.service
    首次启动可能需要几分钟来完成初始化,请耐心等待。

第六步:配置防火墙

默认情况下,Nexus 使用 8081 端口。如需从外部访问,必须在 CentOS 7 的防火墙 firewalld 中开放此端口。

bash
sudo firewall-cmd --zone=public --add-port=8081/tcp --permanent
sudo firewall-cmd --reload
# 验证端口是否已开放
sudo firewall-cmd --list-ports

云服务器特别提醒:如果你使用的是阿里云、腾讯云等云服务器,除了在操作系统内开放端口,还必须检查并放行对应云平台的“安全组”规则,将 8081 端口的入站规则设置为允许,否则无法从外部访问。

配置 Maven 仓库

安装并启动 Nexus 后,需要进行一些基本配置。

  1. 首次登录与设置密码:

    • 打开浏览器,访问 http://你的服务器IP:8081
    • 默认用户名: admin
    • 初始密码: 位于服务器文件 /opt/sonatype-work/nexus3/admin.password 中。请使用 sudo cat /opt/sonatype-work/nexus3/admin.password 查看。
    • 按界面提示修改一个强密码,初始密码文件随后会被自动删除。
  2. 配置阿里云代理仓库(重要): 为了加速国内 Maven 依赖包的下载,强烈建议将 Nexus 默认的中央仓库代理替换为阿里云镜像。

    • 登录后,点击 设置图标(齿轮) -> Repository -> Repositories
    • 点击 Create repository,选择 maven2 (proxy)
    • Name 填写 aliyun-proxy
    • Remote storage 填写阿里云 Maven 公共仓库地址: https://maven.aliyun.com/repository/public
    • 点击 Create repository 完成创建。
    • 进入 maven-public (group) 仓库,在 Group 成员列表中,将 aliyun-proxy 移至列表最顶部(高于 central),然后保存。

常见问题排查

  • 问题 1:启动失败,提示 “Detected execution as "root" user.”原因: 这是 Nexus 的安全警告,它阻止以 root 用户身份运行。 解决方法: 严格遵循 第三步第五步 的指导,创建一个专用的 nexus 用户,并在 bin/nexus.rc 文件和 nexus.service 文件中正确指定该用户。

  • 问题 2:启动成功但无法从浏览器访问原因: 通常是防火墙或安全组配置问题。 解决方法: 首先检查 第六步 中本地防火墙是否开放了 8081 端口。如果已开放但仍无法访问,请务必检查并放行云服务器的 安全组 规则。

  • 问题 3:服务日志中出现 “Recommended file descriptor limit is 65536 but count is 4096.” 警告原因: Linux 默认的用户文件句柄限制 (4096) 低于 Nexus 的建议值 (65536)。 解决方法: 在 /etc/security/limits.conf 文件中添加如下配置,然后重启服务器使其生效。

    bash
    nexus soft nofile 65536
    nexus hard nofile 65536

Last updated:

Released under the MIT License.