Nexus Repository Manager:它是什么?如何在 Digital Ocean Droplet 上配置它?
介绍
什么是存储库管理器?
为什么选择 Nexus 仓库管理器?🤔
在 Digital Ocean Droplet 上配置 Nexus
通过浏览器访问 Nexus 🤩
结论
介绍
如果你正在进行一个耗时很长的大型项目,代码库管理器可以为你节省大量的时间和精力。
假设你正在构建一个 Java-Maven 应用程序。它使用Maven 中央仓库来解析依赖项。如果你想使用 Java 默认未提供的包,则需要从 Maven 中央仓库获取。而使用仓库管理器,这些包就存储在仓库管理器本身,因此你无需在不同的地方查找不同的包。
什么是存储库管理器?
存储库管理器是一个专用服务器位置,用于管理开发团队在整个开发周期中所需的所有存储库。
我们可以将存储库管理器视为零件仓库。正如仓库作为零件的集中存储地点并管理接收、发送以及所有相关事宜一样,存储库管理器管理软件开发过程中涉及的所有零件。
存储库 vs. 存储库管理器
存储库是一个存储位置,用于检索组件(例如工件、二进制文件或容器),以便进行安装或使用;而 **存储库管理器** 是一个专用应用程序,用于管理所有内部或代理存储库。
你为什么需要它?🤔
假设你在一家公司工作,公司正在进行多个项目。其中一些项目使用 Java、.NET 和 Python 构建。每个项目都会产生不同类型的工件。现在,你需要不同的软件来存储这些工件。代码仓库管理器可以解决这个问题,它提供了一个集中式平台来存储软件开发过程中涉及的所有组件。代码仓库管理器的其他一些功能包括:
👉 由于减少了从远程存储库的下载次数,节省了时间和带宽。
👉 备份和恢复
👉 清理政策
👉 搜索功能
👉 多格式支持
为什么选择 Nexus 仓库管理器?🤔

Nexus Repository Manager 是一款免费的制品仓库管理器,由 [公司名称] 开发Sonatype。它支持多种格式,例如 APT、NuGET、Maven 和 Docker。所有支持的格式列表可在此处找到。
既然您已经了解了 Nexus Repository Manager,接下来我将向您展示如何在云服务器上配置它。本文将以 Digital Ocean Droplet(云服务器)为例进行演示,但您几乎可以在任何其他云服务上执行相同的操作。点击此处即可免费$100 credit试用 Digital Ocean 60 天。
在 Digital Ocean Droplet 上配置 Nexus
步骤 1:创建 Droplet(云服务器)
我已选择,Ubuntu 20.04 LTS但您可以自由选择您喜欢的发行版。您可以选择离您最近的数据中心区域。就我而言,我选择的是[此处应填写数据中心区域名称]。Bangalore您可以使用[此处应填写身份验证方式名称Password Authentication](安全性较低)或[此处应填写SSH keys身份验证方式名称](安全性较高)进行身份验证。
注意:请务必选择
8 GB/ 4 vCPUs droplet,因为 Nexus 会占用大量内存,并且有时会占用较高的 CPU 资源。
步骤 2:使用其……登录到 dropletpublic IP address
如果你使用
SSH key Authentication,则不会提示你输入密码;但如果你使用Password Authentication,则需要输入密码进行身份验证。注意:任何 Digital Ocean Droplet 的默认用户是
root。
ssh root@<IP_address>
步骤 3:安装Java version 8和联网工具。
Nexus 仓库管理器需要
Java version 8安装才能运行。我们将使用
netstat实用程序来检查我们的应用程序正在监听哪个端口,我们需要为该端口net-tools安装软件包。
要安装 Java 8 和 net-tools,请使用以下命令:
apt install openjdk-8-jre-headless -y
apt install net-tools
要检查 Java 是否已正确安装,请使用以下命令:
java -version
上述命令必须输出以下内容:
openjdk version "1.8.0_312"
OpenJDK Runtime Environment (build 1.8.0_312-8u312-b07-0ubuntu1~20.04-b07)
OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)
步骤 4:下载Nexus Repository Manager并untar安装。
要使用以下/opt命令下载 Nexus Repository 管理器:
cd /opt
wget https://download.sonatype.com/nexus/3/nexus-3.38.1-01-unix.tar.gz
要解压,请使用以下命令:
tar -zxvf nexus-3.38.1-01-unix.tar.gz
执行上述命令后,执行命令ls(列出文件和目录)时,应该会生成两个新目录,分别是nexus-3.38.1-01和sonatype-work。
root@ubuntu-s-4vcpu-8gb-intel-blr1-01:/opt# ls
digitalocean nexus-3.38.1-01 nexus-3.38.1-01-unix.tar.gz sonatype-work
步骤 5:创建一个新用户nexus,赋予其适当的权限,并更改 Nexus 配置以该nexus用户身份运行。
注意:服务不应以Root 用户权限运行。
最佳实践
Create a new user for each service:
要创建新用户nexus,请使用以下命令:
adduser nexus
它会要求输入用户信息和密码。要跳过填写某些信息,请按任意Enter键。
root@ubuntu-s-4vcpu-8gb-intel-blr1-01:~# adduser nexus
Adding user `nexus' ...
Adding new group `nexus' (1000) ...
Adding new user `nexus' (1000) with group `nexus' ...
Creating home directory `/home/nexus' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for nexus
Enter the new value, or press ENTER for the default
Full Name []: Nexus
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] Y
更改目录的所有权nexus-3.38.1-01,sonatype-work从root更改为nexus。为此,请使用以下命令:
cd /opt
chown -R nexus:nexus nexus-3.38.1-01/
chown -R nexus:nexus sonatype-work/
要检查所有权是否已更改,请使用以下命令:
ls -l
它必须输出:
drwxr-xr-x 4 root root 4096 Apr 3 05:51 digitalocean
drwxr-xr-x 10 nexus nexus 4096 Apr 3 17:26 nexus-3.38.1-01
drwxr-xr-x 3 nexus nexus 4096 Apr 3 17:26 sonatype-work
要将 Nexus 配置更改为以 Nexus 用户身份运行,请使用以下命令打开文件nexus.rc:
vim nexus-3.38.1-01/bin/nexus.rc
将其内容替换为:
run_as_user="nexus"
步骤 6:登录nexus并开始nexus service
要将用户从切换root到nexus,请使用命令su - <user_name>。
su - nexus
现在,要启动 Nexus,请使用以下命令:
/opt/nexus-3.38.1-01/bin/nexus start
它必须给出以下输出:
nexus@ubuntu-s-4vcpu-8gb-intel-blr1-01:~$ /opt/nexus-3.38.1-01/bin/nexus start
Starting nexus
要检查它是否成功启动,请键入:
ps aux | grep nexus
它必须给出以下输出:
nexus@ubuntu-s-4vcpu-8gb-intel-blr1-01:~$ ps aux | grep nexus
root 20134 0.0 0.0 10132 3868 pts/0 S 19:08 0:00 su - nexus
nexus 20137 0.0 0.0 10028 5092 pts/0 S 19:08 0:00 -bash
nexus 20353 170 24.3 6618988 1986448 pts/0 Sl 19:10 3:13 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java -server -Dinstall4j.jvmDir=/usr/lib/jvm/java-8-openjdk-amd64/jre -Dexe4j.moduleName=/opt/nexus-3.38.1-01/bin/nexus -XX:+UnlockDiagnosticVMOptions -Dinstall4j.launcherId=245 -Dinstall4j.swt=false -Di4jv=0 -Di4jv=0 -Di4jv=0 -Di4jv=0 -Di4jv=0 -Xms2703m -Xmx2703m -XX:MaxDirectMemorySize=2703m -XX:+UnlockDiagnosticVMOptions -XX:+LogVMOutput -XX:LogFile=../sonatype-work/nexus3/log/jvm.log -XX:-OmitStackTraceInFastThrow -Djava.net.preferIPv4Stack=true -Dkaraf.home=. -Dkaraf.base=. -Dkaraf.etc=etc/karaf -Djava.util.logging.config.file=etc/karaf/java.util.logging.properties -Dkaraf.data=../sonatype-work/nexus3 -Dkaraf.log=../sonatype-work/nexus3/log -Djava.io.tmpdir=../sonatype-work/nexus3/tmp -Dkaraf.startLocalConsole=false -Djdk.tls.ephemeralDHKeySize=2048 -Djava.endorsed.dirs=lib/endorsed -Di4j.vpt=true -classpath /opt/nexus-3.38.1-01/.install4j/i4jruntime.jar:/opt/nexus-3.38.1-01/lib/boot/nexus-main.jar:/opt/nexus-3.38.1-01/lib/boot/activation-1.1.1.jar:/opt/nexus-3.38.1-01/lib/boot/jakarta.xml.bind-api-2.3.3.jar:/opt/nexus-3.38.1-01/lib/boot/jaxb-runtime-2.3.3.jar:/opt/nexus-3.38.1-01/lib/boot/txw2-2.3.3.jar:/opt/nexus-3.38.1-01/lib/boot/istack-commons-runtime-3.0.10.jar:/opt/nexus-3.38.1-01/lib/boot/org.apache.karaf.main-4.3.6.jar:/opt/nexus-3.38.1-01/lib/boot/osgi.core-7.0.0.jar:/opt/nexus-3.38.1-01/lib/boot/org.apache.karaf.specs.activator-4.3.6.jar:/opt/nexus-3.38.1-01/lib/boot/org.apache.karaf.diagnostic.boot-4.3.6.jar:/opt/nexus-3.38.1-01/lib/boot/org.apache.karaf.jaas.boot-4.3.6.jar com.install4j.runtime.launcher.UnixLauncher start 9d17dc87 0 0 org.sonatype.nexus.karaf.NexusMain
nexus 20778 0.0 0.0 10616 3300 pts/0 R+ 19:12 0:00 ps aux
nexus 20779 0.0 0.0 8160 732 pts/0 S+ 19:12 0:00 grep --color=auto nexus
就我而言,进程 ID 为 [进程 ID] 20353。默认情况下,它可以通过 [端口号] 访问8081。我们可以使用以下命令进行检查:
netstat -lpnt
它会输出以下内容:
nexus@ubuntu-s-4vcpu-8gb-intel-blr1-01:~$ netstat -lpnt
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN 20353/java
tcp 0 0 127.0.0.1:44945 0.0.0.0:* LISTEN 20353/java
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
从上面的输出可以确认,20353/java(nexus 服务)可以通过端口访问8081。
如果仍然没有出现这种情况,请稍等片刻(至少 5 分钟)再重启
服务。
通过浏览器访问 Nexus 🤩
我们可以通过浏览器访问 Nexus,但为此我们需要配置 droplet 的防火墙以允许传入端口的请求8081。
为此,
👉 点击水滴
👉 打开Networking部分
👉 向下滚动到页面底部,然后点击Edit下方的按钮。Firewall
👉 点击Create Firewall
👉 命名Firewall rule
👉 在inbound rules“传入请求规则”下,创建一个新Custom规则。将协议设置为 `<protocol> ` TCP,并将端口更改为 `<port>` 8081。从源中移除 `<source> All IPv4` 和`<source>`,并将您的 ` <source>` 字段填入 `<source>`,因为您不希望任何人可以访问您的 Nexus 服务。All IPv6Public IP address
Public IP address您可以从以下网址获取:
https://ifconfig.me/
现在,要通过浏览器访问它,请打开浏览器,然后在地址栏中输入:
<Droplet's_IPv4>:8081
例如,143.110.189.99:8081在我的情况下,它143.110.189.99是我的 Droplet 的 IPv4 地址和8081端口号。
恭喜🥳!您现在可以在浏览器中使用 Nexus 了🤩。
结论
如果你从这篇博客中学到了新知识,别忘了点赞、分享并关注我的平台。也欢迎在推特上与我互动。感谢阅读!📃
文章来源:https://dev.to/kcdchennai/nexus-repository-manager-what-is-it-how-to-configure-it-on-a-digital-ocean-droplet-20ma