1.1 准备前工作
在Linux系统下先安装好JDK、Maven
1.2 下载安装Nexus
1.2.1 下载Nexus
wgethttps://sonatype-download.global.ssl.fastly.net/repository/repositoryManager/3/nexus-3.18.1-01-unix.tar.gz
1.2.2 解压、重命名
tar -zxvfnexus-3.18.1-01-unix.tar.gz //解压
mv nexus-3.18.1-01nexus //重命名
1.2.3 配置Nexus
如果Linux硬件配置比较低的话,建议修改为合适的大小,否则会出现运行崩溃的现象
vinexus/bin/nexus.vmoptions //虚拟机选项配置文件
1.2.4 启动Nexus
启动 Nexus(默认端口是8081),Nexus 常用的一些命令包括:/usr/local/nexus/nexus/bin/nexus{start|stop|run|run-redirect|status|restart|force-reload},下面我们启动Nexus:
默认情况下,不建议以root用户运行Nexus,可以修改bin/nexus中的配置跳过警告
vi bin/nexus #(修改RUN_AS_USER=root)
重新启动Nexus:./bin/nexus start
注:Nexus默认端口8081,如果想修改端口。修改/conf/nexus.properties文件
1.2.5 修改nexus3配置文件(nexus.vmoptions)
vi bin/nexus.vmoptions
#调整Nexus内存参数,以防占用内存太大
-Xms256M
-XmX512M
-XX:MaxDirectMemerySize=512M
1.2.6 其他
1.3 使用Docker安装Nexus
1.3.1 查找镜像,并选取使用次数较多的镜像进行拉取
docker search nexus
docker pullsonatype/nexus3
mkdir /opt/nexus-data
chmod 777/opt/nexus-data
1.3.2 启动镜像
docker run -d --namenexus3 \
--restart=always \
-m 512m \
-p 8081:8081 \
-p 8082:8082 \
-p 8083:8083 \
-p 8084:8084 \
-p 8085:8085 \
-v/opt/nexus-data:/nexus-data \
-e MIN_HEAP=256m -eMAX_HEAP=512m \
-e JAVA_OPTS=’-Xms256m’-e JAVA_OPTS=’-Xmx512m’ -e JAVA_OPTS=’-XX:MaxDirectMemorySize=512m’ \
sonatype/nexus3
1.3.3 查看容器日志
docker logs nexus3
docker exec -it nexus3/bin/bash #进入docker容器内部
1.3.4 相关资料
Nexus官方:https://hub.docker.com/r/sonatype/nexus/
1.3.5 相关问题
1.3.5.1 启动nexus时,没有权限操作宿主机文件夹
相关日志:
Warning: Cannot openlog file: ../sonatype-work/nexus3/log/jvm.log
Warning: Forcing option-XX:LogFile=/tmp/jvm.log
java.io.FileNotFoundException:../sonatype-work/nexus3/tmp/i4j_ZTDnGON8hezynsMX2ZCYAVDtQog=.lock (No such fileor directory)
atjava.io.RandomAccessFile.open0(Native Method)
atjava.io.RandomAccessFile.open(RandomAccessFile.java:316)
atjava.io.RandomAccessFile.<init>(RandomAccessFile.java:243)
atcom.install4j.runtime.launcher.util.SingleInstance.check(SingleInstance.java:72)
at com.install4j.runtime.launcher.util.SingleInstance.checkForCurrentLauncher(SingleInstance.java:31)
atcom.install4j.runtime.launcher.UnixLauncher.checkSingleInstance(UnixLauncher.java:88)
atcom.install4j.runtime.launcher.UnixLauncher.main(UnixLauncher.java:67)
Unable to updateinstance pid: Unable to create directory /nexus-data/instances
/nexus-data/log/karaf.log(No such file or directory)
Unable to updateinstance pid: Unable to create directory /nexus-data/instances
mkdir: cannot createdirectory '../sonatype-work/nexus3/log': Permission denied
mkdir: cannot createdirectory '../sonatype-work/nexus3/tmp': Permission denied
OpenJDK 64-Bit ServerVM warning: Cannot open file ../sonatype-work/nexus3/log/jvm.log due to No suchfile or directory
解决方案:修改宿主文件夹权限
chmod 777/opt/nexus-data
1.3.5.2 设置端口8082,拒绝访问
解决方案:修改nexus配置文件 nexus.properties
application-port=8082 #修改成自己想要的端口
1.4 配置Maven私有仓
1.4.1 配置Proxy仓,将默认仓设置为阿里云中央仓
1.4.2 配置hosted仓,包括两类
1.4.3 其他
1.5 Maven私有仓的使用
1.5.1 查找Maven私有仓地址
1.5.2 修改本地Maven的全局setting.xml,指向Maven proxy私有仓
vi/usr/local/maven3/conf/settings.xml
添加如下配置:
<mirror>
<id>local</id>
<mirrorOf>*</mirrorOf>
<name>localMaven</name>
<url>http://192.168.56.11:8081/repository/maven-aliyun</url>
</mirror>
1.5.3 设置本地Maven使用maven hosted私有仓进行发布
<server>
<id>java-release</id>
<username>username</username>
<password>userpassword</password>
</server>
<server>
<id>java-snapshot</id>
<username>username</username>
<password>userpassword</password>
</server>
1.5.4 修改项目的pom.xml,指向Maven hosted私有仓
<distributionManagement>
<repository>
<id>java-release</id>
<name>Local NexusRelease Repository</name>
<url>http://192.168.56.11:8081/repository/java-release/</url>
</repository>
<snapshotRepository>
<id>java-snapshot</id>
<name>Local NexusSnapshot Repository</name>
<url>http://192.168.56.11:8081/repository/java-snapshot/</url>
</snapshotRepository>
</distributionManagement>
备注:Id需要和setting.xml中设置的Server相关的Id保持一致,以及username、password需要能够访问私有仓的权限
1.5.5 执行项目执行mvndeploy命令,发布至Maven hosted私有仓
1.5.6 查看发布的jar包
1.5.7 其他
1.6 配置Docekr私有仓
1.6.1 确保正常启动后 使用浏览器访问http://服务器ip:8081
点击右上角登录 账号密码:admin/admin123
登录后点击设置界面 选择Repositories,点击Create repository,如图所示
1.6.2 选择仓库类型,这里选择hosted类型
1.6.3 配置仓库
该仓库指定一个唯一的名称、HTTP的端口、允许交互的API等
1.6.4 连接仓库
其他机器需要连接仓库才能进行push、pull等操作,连接仓库前需要进行配置
vi/etc/docker/daemon.json #设置如下:
{
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"],
"insecure-registries":["192.168.56.11:8082"]
}
}
systemctl daemon-reload
systemctl restartdocker
1.6.5 使用仓库
docker login -u admin-p admin123 192.168.56.11:8082 #注意这里的端口是配置仓库时选择的端口号
docker tag nginx:latest192.168.56.11:8082/kc.web.sso:1.0.34-test
docker push192.168.56.11:8082/kc.web.sso:1.0.34-test #上传镜像
docker pull192.168.56.11:8082/kc.web.sso:1.0.34-test #拉取镜像
1.6.6 参考资料
https://help.sonatype.com/repomanager3
联系客服