使用树莓派搭建Nexus2私服需要的材料有:
- 树莓派3B+(或者4B)
- 移动硬盘一个
1. 下载nexus2.x安装包
由于nexus2.x官方的启动环境并不支持arm架构的树莓派,所以这里采用tomcat7 + nexus2.x的方式搭建私服。
下载 nexus-2.14.17-01-bundle.tar.gz
下载 apache-tomcat-7.0.104.tar.gz
2. 移除nexus2.x不必要的插件
将下载的nexus-2.14.17-01-bundle.tar.gz
解压后,会有如下几个目录:
bin # nexus各种操作系统的启动脚本,这里并不支持arm架构
nexus # nexus主应用,使用tomcat + nexus,只需要这部分
logs
lib
conf
...
用tomcat7来跑nexus,只需要nexus这个目录中的东西,但是由于树莓派的内存有限,所以这里移除了nexus中没有用到的插件,比如ldap,nuget,yum等。
下面是我们用不到的插件(这个具体根据自己的需要调整),插件的位置在/nexus/WEN-INF/plugin-repository
这个目录中。
nexus-analytics-plugin-2.14.17-01
nexus-archetype-plugin-2.14.17-01
nexus-atlas-plugin-2.14.17-01
nexus-capabilities-plugin-2.14.17-01
nexus-crypto-plugin-2.14.17-01
nexus-groovy-plugin-2.14.17-01
nexus-h2-plugin-2.14.17-01
nexus-iq-repository-oss-plugin-2.14.17-01
nexus-kazuki-plugin-2.14.17-01
nexus-ldap-realm-plugin-2.14.17-01
nexus-logging-plugin-2.14.17-01
nexus-lvo-plugin-2.14.17-01
nexus-migrationagent-plugin-2.14.17-01
nexus-nuget-plugin-2.14.17-01
nexus-outreach-plugin-2.14.17-01
nexus-rrb-plugin-2.14.17-01
nexus-ruby-plugin-2.14.17-01
nexus-rutauth-plugin-2.14.17-01
nexus-siesta-plugin-2.14.17-01
nexus-site-repository-plugin-2.14.17-01
nexus-timeline-plugin-2.14.17-01
nexus-wonderland-plugin-2.14.17-01
nexus-yum-repository-plugin-2.14.17-01
3. 修改nexus的工作目录
默认情况下nexus的工作目录为${user.home}/sonatype-work/nexus
,由于硬盘是挂载在树莓派的/mnt/Disk
目录中,所以这里需要调整一下nexus的工作目录。
修改/nexus/WEB-INF/classes/plexus.properties
中的nexus-work
配置:
nexus-work=/mnt/Dist/nexus2/sonatype-work/nexus
runtime=${bundleBasedir}
nexus-app=${runtime}
4. 将nexus部署到tomcat中
可以把nexus当做一个普通的java web项目即可,由于资源有限,这里将tomcat默认的项目统统删除掉,即删除tomcat/webapps
中的所有目录。
然后将nexus这个目录放到/tomcat/webapps
目录下即可,启动tomcat。
cd bin
./startup.sh
5. nexus2.x的storage目录
nexus2.x跟nexus3.x有很大的区别,在存储上nexus2.x采用的是目录结构,而nexus3.x使用的是ElasticSearch,这也是为什么我选用nexus2.x而不是最新的nexus3.x的原因,树莓派的资源根本跑不起ElasticSearch。
下面是nexus2启动后会创建的目录:
backup
conf
db
felix-cache
health-check
indexer
iq
logs
nexus.lock
nuget
orient
plugin-repository
storage
timeline
这里,只需要关注storage这个目录即可,因为私服的所有依赖都存放在这个目录下面,下面是storage的目录结构:
apache-snapshots
central # 仓库迁移位置
central-m1
npm_all
npmjs_my
npmjs_central
public # 依赖发布
releases
snapshots
thirdparty
6. 上传已有的依赖(或依赖迁移)
正常情况下,在我们搭建nexus2.x私服之前,我们本地都会有一个maven本地仓库,我们可以将本地的maven仓库中的依赖FTP传到nexus中。
- 将依赖工作目录的
storage/central
中。 - 登录nexus2.x的管理界面,在 Repositories-> central 中右键 reindex 一次。
这样当我们拉取依赖的时候,central已经有的依赖就不用再到maven中央仓库去拉取了,没有的情况下nexus2才先到maven中央仓库拉取。
当然,如果是私服迁移的话,只需将源私服的storage下面的仓库备份到新私服上,执行reindex即可,这比nexus3.x的迁移好方便好多。
关注公众号,阅读更多关于nexus2.x的文章。(如:nexus搭建npm仓库,nexus权限管理,maven仓库的使用等将持续更新...)