如何在 Ubuntu 22.04 上安装 Nexus Repository Manager
本教程适用于这些操作系统版本
- Ubuntu 22.04(Jammy Jellyfish)
- Ubuntu 20.04(Focal Fossa)
在此页
- 先决条件
- 安装 Java OpenJDK 8
- 设置系统
- 安装 Nexus 存储库管理器
- 将 Nexus 作为 SystemD 服务运行
- 使用反向代理运行 Nexus
- 安装 Nexus Repository Manager
- 结论
Nexus 是 DevOps 世界中最受欢迎的存储库管理器之一。它允许您存储和检索构建工件,还提供通过 CI 和 IDE 集成工具(如 Visual Studio 和 Jenkins)推送和拉取工件的功能。
Nexus 存储库管理器有两个版本:商业版和开源版。它支持多种格式,例如 PyPi、Docker、Yum、APT、Helm、npm、Go、R 等等。
使用 Nexus 作为存储库,允许您的开发人员在集中存储库管理器上获取和管理包,这也为开发团队提供了每个包的单一真实来源。
在本教程中,我们将解释如何在 Ubuntu 22.04 服务器上安装 Nexus Repository Manager。本教程还包括一些软件包的安装,例如将用作反向代理的 Java OpenJDK 和 Nginx Web 服务器。
先决条件
在开始之前,您需要满足以下要求:
- 一台 Ubuntu 22.04 服务器。
- 启用了 sudo/administrator 的非根用户。
- 指向您的 Ubuntu 服务器 IP 地址的域名(用于生产)。
安装 Java OpenJDK 8
Nexus Repository Manager 需要 Java OpenJDK 和 JRE v8。默认的 Ubuntu 存储库提供多个 Java 版本,因此现在您将从 Ubuntu 存储库安装 Java OpenJDK 和 JRE v8。
在安装任何包之前,请运行下面的 apt 命令来更新和刷新您的存储库包索引。
sudo apt update
现在,通过下面的 apt 命令安装 Java OpenJDK 8。当要求确认安装时输入 Y,然后按 ENTER 继续。
sudo apt install openjdk-8-jdk

安装 Java 后,使用以下命令验证系统上的 Java 版本。
java -version
您将在以下屏幕截图中看到输出:

设置系统
要安装 Nexus,您需要使用有效的 shell 创建一个新的专用 Linux 用户,还需要将最大打开文件的硬限制和软限制设置为 65536。
运行以下命令为 Nexus 创建一个名为 nexus 的新专用用户
sudo useradd -d /opt/nexus -s /bin/bash nexus
sudo passwd nexus

接下来,使用以下命令将 ulimit 设置为 65536。这只会暂时影响当前系统上的系统。要使其永久化,您可以创建一个新的配置文件,您将在下一步中执行此操作。
ulimit -n 65536
要永久设置 ulimit,请使用 nano 编辑器创建一个新的配置文件 /etc/security/limits.d/nexus.conff。
sudo nano /etc/security/limits.d/nexus.conf
将以下配置添加到文件中。在此示例中,您将使用值 65536 为特定用户关系设置 ulimit。
nexus - nofile 65536
完成后保存文件并退出编辑器。

满足所有基本要求并进行配置后,您就可以在 Ubuntu 系统上安装 Nexus Repository Manager。
安装 Nexus 存储库管理器
Nexus Repository Manager 可以通过您可以从官方 Sonatype 下载页面下载的分发包进行安装。在撰写本文时,最新版本的 Nexus 是 v3.41.1。现在,您将下载 nexus Repository Manager 分发包并配置 nexus 安装。
通过 wget 命令下载 Nexus Repository Manager 包,如下所示。如果下载过程完成,您将在当前工作目录中看到文件 nexus-3.41.1-01-unix.tar.gz。
wget https://download.sonatype.com/nexus/3/nexus-3.41.1-01-unix.tar.gz
现在通过下面的 tar 命令提取文件 nexus-3.41.1-01-unix.tar.gz。你应该得到两个目录,nexus-3.41.1-01 和 sonatype-work。
nexus-3.41.1-01 目录是 Nexus 包的主目录,sonatype-work 目录是 Nexus 的主要工作目录。
tar xzf nexus-3.41.1-01-unix.tar.gz
接下来,使用以下命令将这些提取的目录移动到 /opt。 Nexus 包目录将是 /opt/nexus,Nexus 工作目录将是 /opt/sonatype-work。
mv nexus-3.41.1-01 /opt/nexus
mv sonatype-work /opt/
最后,通过下面的 chown 命令将两个目录的所有权更改为用户和组 nexus。
chown -R nexus:nexus /opt/nexus /opt/sonatype-work

接下来,您将通过编辑一些 Nexus 配置文件来设置 Nexus 安装。
使用 nano 编辑器打开文件 /opt/nexus/bin/nexus.rc。
sudo nano /opt/nexus/bin/nexus.rc
取消注释选项 run_as_user 并将值更改为 nexus。使用此配置,您将作为系统用户 nexus 运行 Nexus 应用程序。
run_as_user="nexus"
完成后保存文件并退出编辑器。
接下来,使用 nano 编辑器打开配置文件 /etc/nexus/bin/nexus.vmoptions 以设置 Nexus 的最大堆内存。
sudo nano /etc/nexus/bin/nexus.vmoptions
在以下选项中更改 Nexus 安装的默认最大内存堆。您可以根据服务器上的内存将大小更改为 1024m。
-Xms1024m
-Xmx1024m
-XX:MaxDirectMemorySize=1024m
完成后保存文件并退出编辑器。
现在,使用 nano 编辑器编辑配置文件 /opt/sonatype-work/nexus3/etc/nexus.properties。
sudo nano /opt/sonatype-work/nexus3/etc/nexus.properties
取消注释选项 application-host 选项并将值更改为 127.0.0.1。这意味着您将在本地主机或 IP 地址 127.0.0.1 上运行 Nexus。
application-host=127.0.0.1
保存文件并退出编辑器。
您现在已经下载并配置了 Nexus Repository Manager。接下来,您将为 Nexus 设置一个 systemd 服务文件。
将 Nexus 作为 SystemD 服务运行
在默认安装中,可以通过 /opt/nexus/bin 目录中可用的二进制命令 nexus 手动运行 Nexus Repository Manager。但是,为了更容易管理 Nexus,您将为 Nexus 设置一个 systemd 服务文件。
使用 systemd 服务文件运行 Nexus,允许您通过 systemctl 命令管理 nexus 进程。
现在,使用 nano 编辑器创建一个新的服务文件 /etc/systemd/system/nexus.service。
sudo /etc/systemd/system/nexus.service
将以下配置添加到文件中。
[Unit]
Description=nexus service
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
[Install]
WantedBy=multi-user.target
完成后保存文件并退出编辑器。
接下来,运行以下命令以重新加载系统管理器并为 Nexus 应用新的服务文件。
sudo systemctl daemon-reload
通过下面的 systemctl 命令启动并启用 nexus.service。 Nexus Repository Manager 现在将从本地 IP 地址 127.0.0.1 开始,默认端口为 8081。此外,nexus.service 将在系统启动时自动运行。
sudo systemctl start nexus.service
sudo systemctl enable nexus.service

最后,运行以下命令来验证 nexus.service 并确保该服务正在运行。
sudo systemctl status nexus.service

随着 Nexus 作为 systemd 服务运行,您现在可以为 Nexus 设置反向代理。
使用反向代理运行 Nexus
Nexus Repository Manager 现在在默认端口 8081 的本地 IP 地址 127.0.0.1 上运行。要使其可以从网络外部访问,您将使用将在标准 HTTP/HTTPS 端口上运行的 Nginx 反向代理。
运行以下 apt 命令将 Nginx Web 服务器安装到您的 Ubuntu 系统。当提示确认安装时,输入 Y 并按 ENTER 继续。
sudo apt install nginx

安装 Nginx 后,运行以下 systemctl 命令来检查和验证 nginx 服务。您应该看到 nginx 服务已启用并将在系统启动时自动运行。而nginx服务的状态是running。
sudo systemctl is-enabled nginx
sudo systemctl status nginx

接下来,使用 nano 编辑器创建一个新的服务器块配置 /etc/nginx/sites-available/nexus。
sudo nano /etc/nginx/sites-available/nexus
在文件中添加如下Nginx配置,一定要修改域名。
upstream nexus3 {
server 127.0.0.1:8081;
}
server {
listen 80;
server_name nexus.hwdomain.io;
location / {
proxy_pass http://nexus3/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forward-Proto http;
proxy_set_header X-Nginx-Proxy true;
proxy_redirect off;
}
}
保存文件并退出编辑器。
接下来,运行以下命令,通过创建指向 sites-enabled 目录的配置文件的符号链接来激活 Nexus 的服务器块配置。然后,验证 Nginx 配置以确保 Nginx 配置正确。
sudo ln -s /etc/nginx/sites-available/nexus /etc/nginx/sites-enabled/
sudo nginx -t
如果您的 Nginx 配置配置正确,您应该会收到诸如“测试成功”之类的输出消息。
最后,运行以下命令重新启动 Nginx 服务并为 Nexus 应用新的服务器块配置。
sudo systemctl restart nginx
您现在已经在您的 Ubuntu 机器上将 Nginx Web 服务器设置为 Nexus Repository Manager 的反向代理。您现在可以通过您的域名访问您的 Nexus 安装。

安装 Nexus Repository Manager
此时,Nexus Repository manager 在 Nginx 反向代理下运行。并且可以通过您安装的域名访问它。
打开 Web 浏览器并访问 Nexus 安装的域名(即:http://nexus.hwdomain.io)。你应该得到如下所示的默认 Nexus 页面。
单击“登录”按钮登录到 Nexus 管理仪表板。

Nexus 的默认管理员密码存储在文件 /opt/sonatype-work/nexus3/admin.properties 中,默认用户名为 admin。
返回您的终端并运行以下命令以获取 Nexus 登录的默认密码。然后,复制 Nexus 的默认密码。
cat /opt/sonatype-work/nexus3/admin.properties
接下来,输入用户管理员并粘贴 Nexus 的密码。然后,单击“登录”。

现在您将获得 Nexus Repository Manager 的设置向导。单击“下一步”继续。

为您的 Nexus 安装输入新的强密码并重复。然后,再次单击“下一步”。

对于“匿名访问”配置。选择选项“禁用匿名访问”并单击“下一步”。

现在单击“完成”以完成 Nexus 配置。

Nexus 配置完成后,您现在将看到 Nexus 管理仪表板。在下面的屏幕截图中,您可以看到 Nexus Repository Manager。

最后,通过顶部的检查状态按钮验证您的 Nexus 安装。现在确保所有系统状态都检查为绿色,这意味着 Nexus 安装和配置成功。

结论
在本教程中,您已经在 Ubuntu 22.04 服务器上设置了 Nexus Repository Manager。您还配置了 Nginx Web 服务器作为 Nexus 的反向代理。您现在可以将您的项目存储库添加到 Nexus 存储库管理器并集中您的项目源,以便您可以轻松构建应用程序并将其分发给开发人员。
如果您有兴趣在生产环境中运行 Nexus,您可以通过 Letsencrypt 使用 SSL/TLS 为您的 nexus 设置安全性。