Linux 搭建 Nexus 和 Maven
Maven 安装请见我先前的博客: Linux 搭建 maven
Nexus Maven
Nexus 私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件。
总结好处:
1、减少对于外网的网络传输
2、速度快,提高开发效率
3、个性化定义自己的仓库
4、 隔离了内网,增强了安全性
没有私服网络拓扑:
有私服网络拓扑:
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)
Nexus 收费
https://www.sonatype.com/nexus-product-pricing
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
出现如下选项:
启动 nexus
/opt/nexus-2.14.4/nexus-2.14.4-03/bin/nexus start
提示错误信息:
# /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)
出现上述页面,说明配置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 ——》 修改密码 和 邮箱,如下图:
修改邮箱配置
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
然后在这三个仓库上分别右键,选择 Repair Index ,这样Nexus就会去下载远程的索引文件
启用第三方(3th party)
Deployment Policy 选项修改为 Allow Redeploy
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
提示“服务临时不可访问”,原因是重启nexus后,jetty服务器重启需要时间,等待半分钟jetty服务器启动了刷新网页就好了。
问题3:通过Apache反向代理无法登陆
通过Apache反向代理后(见上面的"Nexus 配置 Apache 服务")文档域名 http://maven.mimvp.com/ 发现无法登陆
解决: 直接用服务器 http://IP:8081/nexus/ 访问登陆,经验证可以成功登陆!
参考推荐:
Installing Nexus OSS (官方)
Repository Management with Nexus (推荐)
maven 常用命令(推荐)
Linux 搭建 maven(推荐)
Linux 搭建 Jenkins(推荐)
版权所有: 本文系米扑博客原创、转载、摘录,或修订后发表,最后更新于 2017-05-10 07:47:42
侵权处理: 本个人博客,不盈利,若侵犯了您的作品权,请联系博主删除,莫恶意,索钱财,感谢!