Maven 安装请见我先前的博客: Linux 搭建 maven

 

Nexus Maven

Nexus 私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件。

总结好处:

1、减少对于外网的网络传输

2、速度快,提高开发效率

3、个性化定义自己的仓库

4、 隔离了内网,增强了安全性

 

没有私服网络拓扑:

linux-build-nexus-and-maven-11

有私服网络拓扑:

linux-build-nexus-and-maven-12

 

Nexus提供了两种安装方式:

一种是内嵌Jetty的bundle,只要你有JRE就能直接运行。

第二种方式是WAR,你只须简单的将其发布到web容器中即可使用。

 

1. Nexus 下载

Nexus 官方 下载 , 最新版下载: nexus-2.14.4-03-bundle.tar.gz

Nexus war下载: nexus-2.14.4-03-bundle.zip

Nexus Repository 推出了 3.x 和 2.x 两者区别如下图,更多区别请参考博客:

使用Nexus Repository 3的十二个理由 (Nexus 3.x兼容性不完善,为了少踩坑,推荐使用 2.x

linux-build-nexus-and-maven-02

 

Nexus 收费

https://www.sonatype.com/nexus-product-pricing

linux-build-nexus-and-maven-01

 

2. Nexus 安装

1) 创建解压文件夹:

mkdir nexus-2.14.4

2) 解压tar.gz文件:

tar zxvf nexus-2.14.4-03-bundle.tar.gz -C nexus-2.14.4

注: nexus-2.14.4/ 内有两个文件夹 nexus-2.14.4-03 和 sonatype-work

3) 拷贝至/opt/目录下:

sudo mv nexus-2.14.4-03 /opt/

 

3. Nexus 启动

nexus启动是在bin目录下,首先看一下启动/关闭/重启等命令, 输入命令:

/opt/nexus-2.14.4/nexus-2.14.4-03/bin/nexus

出现如下选项:

linux-build-nexus-and-maven-03

 

启动 nexus

/opt/nexus-2.14.4/nexus-2.14.4-03/bin/nexus  start

linux-build-nexus-and-maven-04

提示错误信息:

# /opt/nexus-2.14.4/nexus-2.14.4-03/bin/nexus start
****************************************
WARNING - NOT RECOMMENDED TO RUN AS ROOT
****************************************

If you insist running as root, then set the environment variable RUN_AS_USER=root before running this script.

解决: 修改nexus启动脚本文件

cd /opt/nexus-2.14.4/nexus-2.14.4-03/
vim ./bin/nexus

修改  #RUN_AS_USER= 为 RUN_AS_USER=root

再重新启动 Nexus: ./bin/nexus start

 

修改配置文件

vim /opt/nexus-2.14.4/nexus-2.14.4-03/conf/nexus.properties

# Jetty section
application-port=8081
#application-host=0.0.0.0
application-host=localhost
nexus-webapp=${bundleBasedir}/nexus
nexus-webapp-context-path=/nexus

# Nexus section
#nexus-work=${bundleBasedir}/../sonatype-work/nexus
nexus-work=${bundleBasedir}/sonatype-work/nexus
runtime=${bundleBasedir}/nexus/WEB-INF

# orientdb buffer size in megabytes
storage.diskCache.bufferSize=4096

如上,修改配置work目录地址、Maven仓库JAR缓存地址

nexus-work=${bundleBasedir}/../sonatype-work/nexus

为 

nexus-work=${bundleBasedir}/sonatype-work/nexus

 

修改java路径

vim /opt/nexus-2.14.4/nexus-2.14.4-03/bin/jsw/conf/wrapper.conf

# Set the JVM executable
# (modify this to absolute path if you need a Java that is not on the OS path)
#wrapper.java.command=java
wrapper.java.command=/opt/jdk1.7.0_60/bin/java

如上,修改JVM的java环境变量为绝对路径,修改

wrapper.java.command=java

wrapper.java.command=/opt/jdk1.7.0_60/bin/java

注: 修改java为绝对路径,好处是nexus的java与jenkins的openjdk java不冲突,太棒了!

 

 

开机启动 nexus

cp /opt/nexus-2.14.4/nexus-2.14.4-03/bin/nexus /etc/init.d/

编辑 vim /etc/init.d/nexus 

# Set this to the root of the Nexus installation
NEXUS_HOME="/opt/nexus-2.14.4/nexus-2.14.4-03/"

配置开机启动命令: chkconfig nexus on

# chkconfig | grep nexus
nexus           0:off   1:off   2:on    3:on    4:on    5:on    6:off

 

关闭 nexus

/opt/nexus-2.14.4/nexus-2.14.4-03/bin/nexus  stop

或者

/etc/init.d/nexus stop

 

4. Nexus 验证

启动nexus: /etc/init.d/nexus start

启动jetty服务需要时间,等待约一分钟后,

在浏览器输入地址: http://localhost:8081/nexus/  (末尾的反斜杠一定要加上,默认解析index.html)

linux-build-nexus-and-maven-05

出现上述页面,说明配置nexus成功!

 

Nexus 配置 Apache 服务

vim /etc/httpd/conf/httpd.conf

## Nexus-Maven Proxy
<VirtualHost *:80>
    ServerName maven.mimvp.com

    ProxyRequests           Off
    ProxyPreserveHost       On
    <Proxy http://localhost:8081/nexus/>
        Order deny,allow
        Allow from all
    </Proxy>
#    ProxyPass               /nexus       http://localhost:8081/nexus/ nocanon
#    ProxyPassReverse        /nexus       http://localhost:8081/nexus/
    ProxyPass               /       http://localhost:8081/nexus/ nocanon
    ProxyPassReverse        /       http://localhost:8081/nexus/

    ErrorLog /var/log/maven.mimvp.com-error_log
    CustomLog /var/log/maven.mimvp.com-access_log common
</VirtualHost>

 

管理员登陆

点击右上角“Log in”, 输入用户名和密码登录

默认用户名:admin      

默认密码: admin123

 

修改密码

点击右上角“admin” ——》 Profile ——》 Change Password ——》 修改密码 和 邮箱,如下图:

linux-build-nexus-and-maven-06

 

修改邮箱配置

vim /opt/nexus-2.14.4/sonatype-work/nexus/conf/security.xml

    <user>
      <id>admin</id>
      <firstName>Administrator</firstName>
      <lastName>User</lastName>
      <password>$shiro1$SHA-512$1024$/1PX81a5J8KClUyrQ4q/uA==$LNTr2MnggdD2kWZ1BD7h2OEEF7HOw34vaSe+6ORZC0jKhlR4C3A1Cn4nGCj8mfJLiEaNQcCuCtSq4yJAnSxIaw==</password>
      <status>active</status>
      <email>maven@mimvp.com</email>
    </user>

 

 

开启远程索引

新搭建的neuxs环境只是一个空的仓库,需要手动和远程中心库进行同步,nexus默认是关闭远程索引下载,

最重要的一件事情就是开启远程索引下载。

登陆nexus系统,默认用户名密码为admin/admin123

点击左边菜单下面的 Views/Repositories -> Repositories,找到右边仓库列表中的仓库 Apache Snapshots、Central

在Configuration配置项下,把 Download Remote Indexes 修改为 true

linux-build-nexus-and-maven-13

然后在这三个仓库上分别右键,选择 Repair Index ,这样Nexus就会去下载远程的索引文件

 

启用第三方(3th party)

Deployment Policy 选项修改为 Allow Redeploy

linux-build-nexus-and-maven-14

 

nexus 仓库

nexus的仓库类型分为以下四种:group: 仓库组,hosted:宿主,proxy:代理,virtual:虚拟  

仓库组和多个仓库:  

Public Repositories:  仓库组  

3rd party: 无法从公共仓库获得的第三方发布版本的构件仓库  

Apache Snapshots: 用了代理ApacheMaven仓库快照版本的构件仓库  

Central: 用来代理maven中央仓库中发布版本构件的仓库  

Central M1 shadow: 用于提供中央仓库中M1格式的发布版本的构件镜像仓库  

Codehaus Snapshots: 用来代理CodehausMaven 仓库的快照版本构件的仓库  

Releases: 用来部署管理内部的发布版本构件的宿主类型仓库  

Snapshots:用来部署管理内部的快照版本构件的宿主类型仓库  

 

 

 

问题与解决

问题1: RUN_AS_USER=root

[root@localhost bin]# ./nexus start
****************************************
WARNING - NOT RECOMMENDED TO RUN AS ROOT
****************************************
If you insist running as root, then set the environment variable RUN_AS_USER=root before running this script.

编辑: vim /opt/nexus-2.14.4-03/bin/nexus

修改: RUN_AS_USER=root

 

问题2: Service Temporarily Unavailable

linux-build-nexus-and-maven-07

提示“服务临时不可访问”,原因是重启nexus后,jetty服务器重启需要时间,等待半分钟jetty服务器启动了刷新网页就好了。

 

问题3:通过Apache反向代理无法登陆

通过Apache反向代理后(见上面的"Nexus 配置 Apache 服务")文档域名 http://maven.mimvp.com/ 发现无法登陆

解决: 直接用服务器 http://IP:8081/nexus/ 访问登陆,经验证可以成功登陆!

 

 

参考推荐:

Installing Nexus OSS (官方)

Maven 向私服nexus上传jar

使用nexus搭建maven私服

nexus 命令上传jar包

Repository Management with Nexus (推荐)

使用Nexus创建私服

maven 常用命令推荐

Linux 搭建 maven推荐

maven pom.xml 配置详解推荐

Linux 搭建 Jenkins推荐

使用nexus搭建maven私服

CentOS安装nexus(Maven仓库管理器)

 

原文 Linux搭建Nexus和Maven