# CentOS 上安装 Sonatype Nexus 仓库

**URL:** <https://www.isharkfly.com/t/centos-sonatype-nexus/14153>\
**Category:** DevOps\
**Tags:** nexus\
**Created:** [October 18, 2022, 7:42pm UTC](https://www.isharkfly.com/t/centos-sonatype-nexus/14153 "2022-10-18T19:42:04Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![honeymoose](https://www.isharkfly.com/user_avatar/www.isharkfly.com/honeymoose/32/20796_2.png) [@honeymoose](https://www.isharkfly.com/u/honeymoose)\
**Post date:** [October 18, 2022, 7:42pm UTC](https://www.isharkfly.com/t/centos-sonatype-nexus/14153/1 "2022-10-18T19:42:04Z")

</div>

在安装仓库之前，需要首先确定服务器上已经安装了 Java。

建议是用 11 以上的版本。11 版本是最低的需求。

我们的安装版本是 11。

 ![948a96d60b6841836edeef976171fb9a725b7948](https://cdn.isharkfly.com/com-isharkfly-www/discourse-uploads/original/3X/e/5/e5d7c9b23ab8ab0440556ebeeb7dfd090510d6d5.png)

## 下载文件

我们会把文件安装到 /opt 目录下，下载文件后解压。

```auto
cd /opt
wget https://download.sonatype.com/nexus/3/latest-unix.tar.gz
tar -xvzf latest-unix.tar.gz

```

 ![cba269d390d7c46b7726de91d266db51e56e5e97](https://cdn.isharkfly.com/com-isharkfly-www/discourse-uploads/original/3X/4/d/4d4272eb9664321b1c63a0cf31219ade35583e03.png)

## 重命名文件夹

有 2 个文件夹需要重命名。

```auto
mv nexus-3.42.0-01/ nexus

mv sonatype-work nexusdata

```

 ![0328d43a6ff87c16488585e56dcecd397c853f63](https://cdn.isharkfly.com/com-isharkfly-www/discourse-uploads/original/3X/1/d/1d34b0c8a3da4b0591801f5e2e9c772327ce4985.png)  
重命名后的文件夹如上图。

## 设置运行的用户权限

我们将会使用 nexus 用户来运行。

依次运行下面的命令：

```auto
useradd --system --no-create-home nexus

chown -R nexus:nexus /opt/nexus

chown -R nexus:nexus /opt/nexusdata

```

来对需要运行的用户进行赋权。

 ![8bda51913ef0d54e9ab886f11db2f75568524bae](https://cdn.isharkfly.com/com-isharkfly-www/discourse-uploads/original/3X/5/5/55426c342caae1aec3a0999975262f603e504905.png)

## 修改数据文件路径

因为我们对数据文件进行了重命名了，所以我们需要修改数据文件的路径。

`vim /opt/nexus/bin/nexus.vmoptions`  
然后保存退出。

```auto
-Xms2703m
-Xmx2703m
-XX:MaxDirectMemorySize=2703m
-XX:+UnlockDiagnosticVMOptions
-XX:+LogVMOutput
-XX:LogFile=../nexusdata/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=../nexusdata/nexus3
-Dkaraf.log=../nexusdata/nexus3/log
-Djava.io.tmpdir=../nexusdata/nexus3/tmp
-Dkaraf.startLocalConsole=false
-Djdk.tls.ephemeralDHKeySize=2048
#
# additional vmoptions needed for Java9+
#
# --add-reads=java.xml=java.logging
# --add-exports=java.base/org.apache.karaf.specs.locator=java.xml,ALL-UNNAMED
# --patch-module java.base=${KARAF_HOME}/lib/endorsed/org.apache.karaf.specs.locator-4.3.6.jar
# --patch-module java.xml=${KARAF_HOME}/lib/endorsed/org.apache.karaf.specs.java.xml-4.3.6.jar
# --add-opens java.base/java.security=ALL-UNNAMED
# --add-opens java.base/java.net=ALL-UNNAMED
# --add-opens java.base/java.lang=ALL-UNNAMED
# --add-opens java.base/java.util=ALL-UNNAMED
# --add-opens java.naming/javax.naming.spi=ALL-UNNAMED
# --add-opens java.rmi/sun.rmi.transport.tcp=ALL-UNNAMED
# --add-exports=java.base/sun.net.www.protocol.http=ALL-UNNAMED
# --add-exports=java.base/sun.net.www.protocol.https=ALL-UNNAMED
# --add-exports=java.base/sun.net.www.protocol.jar=ALL-UNNAMED
# --add-exports=jdk.xml.dom/org.w3c.dom.html=ALL-UNNAMED
# --add-exports=jdk.naming.rmi/com.sun.jndi.url.rmi=ALL-UNNAMED
# --add-exports java.security.sasl/com.sun.security.sasl=ALL-UNNAMED
#
# comment out this vmoption when using Java9+
#
-Djava.endorsed.dirs=lib/endorsed

```

 ![55390886f77e69663e883718b00463e1d0e3a052](https://cdn.isharkfly.com/com-isharkfly-www/discourse-uploads/original/3X/8/1/81d6901021ddf93b56b38ecf3b3381b59d580db3.png)  
如果你的数据文件在不同路径的话，这里也可以进行配置。

## 编辑 nexus.rc 文件

因为我们的运行用户名修改了，所以这个文件也需要进行修改。

`/opt/nexus/bin/nexus.rc`

将这行取消注释，修改为下面的内容。

`run_as_user="nexus"`

 ![efb34f69d2eb3b30acae7276845338f09e8c6d0f](https://cdn.isharkfly.com/com-isharkfly-www/discourse-uploads/original/3X/2/8/28361a299470e3dd93fff7e9afaf3d937f15d41b.png)

## 修改服务端地址和端口

运行下面的命令：  
`vi /opt/nexus/etc/nexus-default.properties`  
将端口修改为 9090, 当然你也可以不修改这个端口，主要是为了避免和系统中的其他端口冲突。

地址修改为 127.0.0.1

 ![d04bf0692c77f7e34bc429e9d9e34b8c92c7bd0f](https://cdn.isharkfly.com/com-isharkfly-www/discourse-uploads/original/3X/a/3/a38e56dda4b1268e75efc680c3b0a311b69c6dc8.png)  
修改后的端口和地址如上图。

## 修改用户打开文件限制

因为进程有打开文件的限制。

在文件的最后添加下面的内容。

`nexus - nofile 65536`

使用命令打开文件。

`vi /etc/security/limits.conf`

在文件的最后添加上面的内容。

 ![538a03c08de6f3ea23118fbf81161059e943ff90](https://cdn.isharkfly.com/com-isharkfly-www/discourse-uploads/original/3X/4/4/44a7bcddfe445af912e55c21930553dd172fa8d9.png)

## 设置 Nexus 为服务

使用命令编辑下面的文件：

`vi /etc/systemd/system/nexus.service`

将下面的内容复制到这个文件中。

```auto
[Unit]
Description=Nexus Service
After=syslog.target network.target

[Service]
Type=forking
LimitNOFILE=65536
ExecStart=/opt/nexus/bin/nexus start
ExecStop=/opt/nexus/bin/nexus stop
User=nexus
Group=nexus
Restart=on-failure

[Install]
WantedBy=multi-user.target

```

 ![171320d8b98226e6888120e724d482299c5ea674](https://cdn.isharkfly.com/com-isharkfly-www/discourse-uploads/original/3X/6/7/67147f43190965a4344a9d84d804efa6d8894641.png)  
然后将上面的文件保存退出。

将服务设置开机启动，并且启动 nexus 服务。

依次运行下面的命名：

```auto
systemctl daemon-reload

systemctl enable nexus.service

```

 ![911d1983213ce93d2e163364e6e52d3dae0c8211](https://cdn.isharkfly.com/com-isharkfly-www/discourse-uploads/original/3X/a/d/ad1732e53759daf046fed21203a328307be1b90b.png)

## 启动服务

输入下面的命令来启动服务。

```auto
systemctl start nexus

```

## 查看服务启动状态

运行下面的命令来查看服务启动的状态。

```auto
tail -f /opt/nexusdata/nexus3/log/nexus.log

```

 ![c2f48a2cbd222e28632df5d674ecb6ab49e47396_2_1035x199](https://cdn.isharkfly.com/com-isharkfly-www/discourse-uploads/original/3X/b/1/b1831c6d3f7eda0daec47d422731f33df9cdb6d6.png)  
查看端口状态，如果正常启动端口应该会显示被占用。

 ![429bc914babf568884ffdb4582f27703f1d053c8_2_1035x199](https://cdn.isharkfly.com/com-isharkfly-www/discourse-uploads/original/3X/9/4/94f5917a50e22f9a28d93f41d4a60c5578ac79e1.png)  
上面显示 9090 端口被占用。

需要注意的是，第一次启动比较耗时，需要耐心等待。

## 校验安装

如果你没有安装反向代理，并且没有防火墙的话。

通过 9090 端口，应该就可以正常访问了。

如果能看到下面的界面，则说明安装已经成功了。

 ![478c260d0e1b08b7fff50a9d35a0ba0ae6aaac31_2_1035x531](https://cdn.isharkfly.com/com-isharkfly-www/discourse-uploads/original/3X/a/2/a2cca783684769d25c957d68d6a965fac3a82e29.png)
