nexus repository oss 是免费的通用格式文件的存储库。
1.Docker安装
1.1 创建目录并授权
mkdir -p nexus3/sonatype-work/nexus3
chmod -R 777 nexus3
1.2 创建docker-compose.yml并将文件放在根目录
version: '3.8'
networks:
nexus3:
driver: bridge
services:
nexus3:
image: sonatype/nexus3:3.37.3
container_name: nexus3
restart: always
environment:
- "INSTALL4J_ADD_VM_PARAMS=-Xms1500m -Xmx1500m"
volumes:
- ./sonatype-work/nexus3:/nexus-data
ports:
- 8081:8081
networks:
- nexus3
注:首次启动需要加载超多配置,启动时间很长,请耐心等待,切记不要退出,否则再次启动时会出现各种诡异的问题。
2.Centos安装
2.1 下载安装包
https://www.sonatype.com/products/repository-oss-download
2.2 编辑配置文件
配置文件/nexus-3.xx.xx/etc/nexus-default.properties
,默认开始http,可选开启https
## DO NOT EDIT - CUSTOMIZATIONS BELONG IN $data-dir/etc/nexus.properties
##
# Jetty section
nexus-context-path=/
application-host=0.0.0.0
# http端口
#application-port=8081
# http访问
#nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-requestlog.xml
# https端口
application-port-ssl=8081
# https访问
nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-https.xml,${jetty.etc}/jetty-requestlog.xml
# Nexus section
nexus-edition=nexus-pro-edition
nexus-features=\
nexus-pro-feature
2.3 https配置(可选)
2.3.1 生成ssl证书
使用 nexus-ssl-generate-keystore.sh 生成ssl证书,将shell放在/nexus-3.xx.xx/根目录下。
nexus-ssl-generate-keystore.sh 脚本内容如下:
NEXUS_DOMAIN='Nexus'
if [[ -z $1 ]]; then
echo 'please input your ip_address!'
exit
fi
NEXUS_IP_ADDRESS=$1
PASSWORD='password'
keytool -genkeypair -keystore keystore.jks -storepass ${PASSWORD} -keypass ${PASSWORD} -alias nexus -keyalg RSA -keysize 2048 -validity 5000 -dname "CN=${NEXUS_DOMAIN}, OU=Nexus, O=Nexus, L=Beijing, ST=Beijing, C=CN" -ext "SAN=IP:${NEXUS_IP_ADDRESS}" -ext "BC=ca:true"
mv keystore.jks etc/ssl/
#keytool -export -alias nexus -keystore keystore.jks -file keystore.cer -storepass ${PASSWORD}
#mv keystore.cer etc/ssl/
2.3.2 shell脚本使用方式
sh nexus-ssl-generate-keystore.sh {ip}
示例:
sh nexus-ssl-generate-keystore.sh 192.168.3.77
2.3.3 https证书
生成后的https证书存放位置:/nexus-3.xx.xx/etc/ssl/keystore.jks
2.4 启动
启动脚本:/nexus-3.xx.xx/bin/nexus
启动命令:./nexus {start | stop | run | run-redirect | status | restart | force-reload }
2.5 访问
3.nginx 域名映射
3.1 nginx配置maven私服
upstream nexus3.com {
server 127.0.0.1:8081;
}
server {
access_log /var/logs/nexus3.access.log main;
error_log /var/logs/nexus3.error.log error;
listen 443 ssl;
server_name your domain; # 配置域名
charset utf-8;
ssl_certificate /path/ssl证书.pem; # 域名对应的ssl证书
ssl_certificate_key /path/ssl证书.key; # 域名对应的ssl证书
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
#ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# 阿里云加固建议
ssl_protocols TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;
# 阿里云加固建议
server_tokens off;
location / {
proxy_connect_timeout 60;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_pass https://nexus3.com/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
4.开发环境集成Maven私服
4.1 开发环境maven配置
4.1.1 maven版本统一使用3.5.4
下载地址:https://dlcdn.apache.org/maven/maven-3/3.5.4/binaries/
4.1.2 配置maven环境变量
参考文档:https://www.runoob.com/maven/maven-setup.html
4.1.3 配置settings.xml,需要替换以下几个节点
4.1.3.1 maven依赖存放位置
<localRepository>/Users/username/repository</localRepository>
4.1.3.2 maven打包上传时需要验证管理员账号和密码
<server>
<id>private-maven-snapshots</id>
<username>username</username>
<password>password</password>
</server>
<server>
<id>private-maven-releases</id>
<username>username</username>
<password>password</password>
</server>
4.1.3.3 镜像替换,第1个为自己私服主用,第2个为阿里云私服备用
<mirror>
<id>privatenexus</id>
<name>privatenexus</name>
<mirrorOf>central</mirrorOf>
<url>https://your domain/repository/maven-public/</url>
</mirror>
<mirror>
<id>aliyun</id>
<name>aliyun</name>
<mirrorOf>central</mirrorOf>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
4.2 maven项目开发配置
在pom.xml中增加以下配置
注:snapshotRepository和repository,这2个节点下的id要与4.1.3.2的server节点下的id一致,才可以使用deploy命令打包上传
<!-- 下载快照 -->
<repositories>
<repository>
<id>private-maven-public</id>
<name>private-maven-public</name>
<url>https://your domain/repository/maven-public/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
<!-- 打包上传 -->
<distributionManagement>
<snapshotRepository>
<id>private-maven-snapshots</id>
<name>private-maven-snapshots</name>
<url>https://your domain/repository/maven-snapshots/</url>
</snapshotRepository>
<repository>
<id>private-maven-releases</id>
<name>private-maven-releases</name>
<url>https://your domain/repository/maven-releases/</url>
</repository>
</distributionManagement>
4.3 手动上传jar包到Maven私服
参考下方截图,请使用有管理员权限的账号登录。红框中的选项一定要勾选,否则在项目中引用不了。