在Centos7.9手动安装Nexus3

dockers安装很方便,但是有时候我们不可以选择docker安装的时候,就手动安装吧。


一、安装JDK

参考:https://www.jiguiquan.com/?p=273


二、安装MAVEN

参考:https://www.jiguiquan.com/?p=273


三、下载安装Nexus3

1、下载最新Nexus3安装包

https://my.sonatype.com/ 在 Latest Releases 标签下, 下载最新nexus repository安装包

2、解压到 /usr/local/nexus/ 目录下

tar -zxvf nexus-3.37.3-02-unix.tar.gz


[root@tcosmo-szls01 nexus]# pwd
/usr/local/nexus

# 解压完会有两个目录:
[root@tcosmo-szls01 nexus]# ll
total 0
drwxr-xr-x. 10 root root 181 Jan 26 11:08 nexus-3.37.3-02  ## 包含了 Nexus 运行所需要的文件。是 Nexus 运行必须的
drwxr-xr-x.  3 root root  20 Jan 26 11:08 sonatype-work  ## 包含了 Nexus 生成的配置文件、日志文件、仓库文件等。当我们需要备份 Nexus 的时候默认备份此目录即可

3、配置环境变量,并使其生效

[root@tcosmo-szls01 nexus]# vim /etc/profile

export NEXUS_HOME=/usr/local/nexus/nexus-3.37.3-02
export PATH=$PATH:$NEXUS_HOME/bin

[root@tcosmo-szls01 nexus]# source /etc/profile

[root@tcosmo-szls01 nexus]# nexus -version
WARNING: ************************************************************
WARNING: Detected execution as "root" user.  This is NOT recommended!
WARNING: ************************************************************
Usage: /usr/local/nexus/nexus-3.37.3-02/bin/nexus {start|stop|run|run-redirect|status|restart|force-reload}

4、修改默认启动用户

vim /usr/local/nexus/nexus-3.37.3-02/bin/nexus.rc
run_as_user="root"			#内容就这一行,放开注释,填写用户即可

5、修改启动端口

vim /usr/local/nexus/nexus-3.37.3-02/etc/nexus-default.properties	#默认就是8081,可以不修改

6、启动nexus并查看运行状态

[root@tcosmo-szls01 nexus]# nexus start
WARNING: ************************************************************
WARNING: Detected execution as "root" user.  This is NOT recommended!
WARNING: ************************************************************
Starting nexus
[root@tcosmo-szls01 nexus]# nexus status
WARNING: ************************************************************
WARNING: Detected execution as "root" user.  This is NOT recommended!
WARNING: ************************************************************
nexus is running.

7、访问系统

访问http://ip:8081,登陆用户admin 密码存放在:/usr/local/nexus/sonatype-work/nexus3/admin.password 目录

[root@tcosmo-szls01 nexus]# cat /usr/local/nexus/sonatype-work/nexus3/admin.password
easdsccc-64ab-45c4-9d8a-abh******jfe19

8、配置nexus开机自启动

vim /etc/rc.d/rc.local

/usr/local/nexus/nexus-3.18.1/bin/nexus start	#添加这一行内容

chmod 755 /etc/rc.d/rc.local

四、Nexus3的使用

1、在mvn配置中添加nexus的认证信息

<server>
   <id>mynexus-releases</id>
   <username>admin</username>
   <password>******</password>
</server>
<server>
   <id>mynexus-snapshots</id>
   <username>admin</username>
   <password>******</password>
</server>

2、在项目的pom.xml中添加nexus的仓库地址

(如果是多module应用,可以直接在父pom里面配置)

<distributionManagement>
    <repository>
        <id>mynexus-releases</id>
        <name>maven-releases</name>
        <url>http://10.206.73.157:8081/repository/maven-releases/</url>
    </repository>
    <snapshotRepository>
        <id>mynexus-snapshots</id>
        <name>maven-snapshots</name>
        <url>http://10.206.73.157:8081/repository/maven-snapshots/</url>
    </snapshotRepository>
</distributionManagement>

3、执行deploy命令,完成打包与推送

mvn clean deploy
# 如果像强行要求使用者更新本地依赖,可以 -U

1643178542(1).png

4、现在可以在maven-public中查看到我们推送的jar包

image.png

5、在Maven项目中的使用

  • 如果我们只有个别依赖需要从我们自己的nexus下载,那么只需要在项目的pom.xml文件中进行配置即可:

<repositories>
    <repository>
        <id>releases</id>
        <name>maven-public</name>
        <url>http://10.206.73.157:8081/repository/maven-public/</url>
    </repository>
</repositories>
  • 如果我们有很多依赖都需要从我们自己的nexus下载,那么可以通过修改maven的配置文件,setting.xml增加镜像来实现;

<mirror>
  <id>myNexus</id>
    <mirrorOf>*</mirrorOf>
    <name>myNexus</name>
    <url>http://10.206.73.157:8081/repository/maven-public/</url>
</mirror>

但是,需要注意的是:

  • 当maven的版本高于3.6之后,我们在项目pom.xml中是没有办法使用http协议的仓库地址的,会报错:

      maven-default-http-blocker (http://0.0.0.0/): Blocked mirror for repositories  

    此时,我们要么使用https协议的仓库地址,要么在maven的setting.xml中进行配置;

  • 当maven的配置setting.xml中配置了多个mirror镜像的时候,是没有办法同时生效,依次检查的,只有第一个会生效;

    这很尴尬,因为我们一般会喜欢在setting.xml中配置阿里云的镜像仓库,不像完全替换成我们自己的。


补充1:Nexus中默认的那些仓库分别是什么作用,有什么区别?

image.png

Type类型的理解:

  • proxy:是远程仓库的代理。比如说在nexus中配置了一个central repository的proxy,当用户向这个proxy请求一个artifact,这个proxy就会先在本地查找,如果找不到的话,就会从远程仓库下载,然后返回给用户,相当于起到一个中转的作用。

  • Hosted:是宿主仓库,用户可以把自己的一些构件,deploy到hosted中,也可以手工上传构件到hosted里。比如说oracle的驱动程序,ojdbc6.jar,在central repository是获取不到的,就需要手工上传到hosted里,一般用来存放公司自己的jar包;

  • Group:是仓库组,在maven里没有这个概念,是nexus特有的。目的是将上述多个仓库聚合,对用户暴露统一的地址,这样用户就不需要在pom中配置多个地址,只要统一配置group的地址就可以了右边那个Repository Path可以点击进去,看到仓库中artifact列表。不过要注意浏览器缓存,当你的项目希望在多个repository使用资源时就不需要多次引用了,只需要引用一个group即可。

四大仓库的理解:

  • maven-central:代理仓库,使用了proxy模式;

  • maven-release:用来存放release版本的jar包;(我上面就是推送到了release库里面)

  • maven-snapshot:用来存放snapshot版本的jar包;

  • maven-public:maven-central、maven-release和maven-snapshot三个库的合集,对外使用,只要提供这一个group的地址即可。


补充二:文件描述符Ulimit问题修复

1681733703665735.png

vim /etc/security/limits.conf

# 添加以下内容(如果我们是root用户启动的话):
@root - nofile 65536

## 保存后重启系统:
reboot

之后,此问题即可被修复!

1681734410590121.png

jiguiquan@163.com

文章作者信息...

留下你的评论

*评论支持代码高亮<pre class="prettyprint linenums">代码</pre>

相关推荐