Nexus部署

Nexus部署指南

(一)版本差异

https://www.sonatype.com/products/sonatype-nexus-oss-vs-pro-features

请选择合适的版本。下文使用的是开源版本。

(二)部署方式

压缩包部署

部署要求

操作系统:

  • Windows
  • Linux (most commonly used)
  • MacOS

JVM相关需求:
在这里插入图片描述
更多的调优选项,如独立数据库、外置存储、内存等建议,请参考:
https://help.sonatype.com/en/sonatype-nexus-repository-system-requirements.html

注意:

  1. 外置PG数据库需要nexus专业版支持;
  2. 如果使用内置的OrientDB,可以用容器部署但不建议部署到K8S等容器管理平台,会造成数据损坏;
  3. 如一天超过2万请求或组件数量超过10万个,官方建议用外置PG数据库;
  4. 临时目录$data-dir/tmp禁止挂载为noexec,否则启动报错;
  5. 当数据目录可用空间小于4GB时,数据库将进入只读模式;
  6. Nexus存放两类数据:内嵌数据(H2, OrientDB, Elastic Search)和块存储数据(二进制组件包),尽量采用本地硬盘作为存储。外置存储如NFS、CIFS、S3等不能很好的支持内嵌数据的存储。
部署步骤
  1. 建议使用专有的账号运行nexus,避免使用root运行;
    由于采用非root账号运行,文件句柄数默认比较小,因此需要修改文件句柄数:
    编辑/etc/security/limits.conf
    <userid> - nofile 65536
  2. 安装JRE,确保java命令生效。
  3. 下载对应操作系统的压缩包
    https://help.sonatype.com/en/download.html
    本案以Centos部署,因此下载地址为:
    https://download.sonatype.com/nexus/3/nexus-3.64.0-04-unix.tar.gz
  4. 解压后即可使用,不需要安装
    # 启动
    /opt/nexus/nexus-3.64.0-04/bin/nexus start
    # 查看状态
    /opt/nexus/nexus-3.64.0-04/bin/nexus status
    # 停止
    /opt/nexus/nexus-3.64.0-04/bin/nexus stop
    当看到nexus is running的时候说明项目已经启动了,默认端口号是8081

访问:http://服务器地址:8081/
用户名:admin
初始密码:在/opt/nexus/sonatype-work/nexus3/admin.password 文件里

容器部署

  • 如何安装docker容器引擎,请参考官方手册:
    https://docs.docker.com/engine/install/centos/

  • Nexus容器官方部署手册:
    https://hub.docker.com/r/sonatype/nexus3/
    【鉴于国内偶尔访问不到,下面简单摘抄】

  • 1.简易快速操作:
    启动:docker run -d -p 8081:8081 --name nexus sonatype/nexus3
    停止:docker stop --time=120 nexus (预留时间给数据库完整关闭)
    测试:curl http://localhost:8081/
    程序默认安装到容器路径/opt/sonatype/nexus,数据默认存放到/nexus-data

  • 2.JVM参数调整启动方式:
    docker run -d -p 8081:8081 --name nexus -e INSTALL4J_ADD_VM_PARAMS=“-Xms2703m -Xmx2703m -XX:MaxDirectMemorySize=2703m -Djava.util.prefs.userRoot=/some-other-dir” sonatype/nexus3
    注:可以将-Djava.util.prefs.userRoot指定到某个持久化存储目录,用于保存Nexus授权,容器重启后不至于丢失授权信息。

  • 3.指定持久化存储方式:
    $ docker volume create --name nexus-data
    $ docker run -d -p 8081:8081 --name nexus -v nexus-data:/nexus-data sonatype/nexus3
    或:
    $ mkdir /some/dir/nexus-data && chown -R 200 /some/dir/nexus-data
    $ docker run -d -p 8081:8081 --name nexus -v /some/dir/nexus-data:/nexus-data sonatype/nexus3

(三)目录说明

安装目录

默认叫:nexus-版本
LICENSE.txt , NOTICE.txt
授权及法务相关声明
bin/
启动脚本及启动相关配置文件
etc/
主配置文件所在路径
lib/
Apache Karaf相关的动态链接库
public/
应用程序的公共资源
system/
构成应用程序的所有组件和插件

数据目录

默认叫:…/sonatype-work/nexus3
blobs/
所有块存储的父目录
cache/
缓存的Karaf包信息
db/
OrientDB数据库存放nexus元数据
elasticsearch/
Elasticsearch当前的配置状态
etc/
运行时的参数配置文件,详见参数配置章节
health-check/
Repository Health Check 缓存的报告
keystores/
存放自动生成的key文件用来标识nexus服务器的身份
log/
存放日志文件,默认自动清理超过90天的日志
tmp/
java运行的临时文件夹

(四)参数配置

JVM启动参数配置

$install-dir/bin/nexus.vmoptions
样例:
在这里插入图片描述

主配置文件

应用程序的etc目录下:
fabric目录
Ehcache, Elasticsearch, and OrientDB的配置信息

karaf目录
Apache Karaf,主要包括:

  • config.properties - The main configuration for the Apache Karaf runtime. This file should not be modified.
  • custom.properties - Customizable configuration used by Apache Karaf. This file can be used to pass additional parameters to the Apache Karaf container.
  • org.apache.* and org.ops4j.* - various Karaf and OSGi related configuration files
  • system.properties - system properties used for the JVM and application start up

jetty目录
Eclipse Jetty的配置文件

logback目录

  • logback.xml - 默认的日志配置文件,例如nexus.log和tasks/*.log日志文件名,日志级别,日志格式,日子保留策略等
  • logback-access.xml - 默认的日志配置文件,例如request.log日志文件名,日志级别,日志格式,日子保留策略等

nexus-default.properties
程序启动的默认值,禁止修改该文件,如需修改,应修改主配置文件nexus.properties

ssl目录
配置https时存放keystores的目录

配置样例

修改http端口

主配置文件nexus.properties
application-port=9081
访问url就变成 http://localhost:9081/

修改上下文路径

主配置文件nexus.properties
nexus-context-path=/components/
访问url就变成 http://localhost:9081/components/

修改数据目录

配置bin/nexus.vmoptions
-Dkaraf.data=/opt/sonatype-work/nexus3
-Djava.io.tmpdir=/opt/sonatype-work/nexus3/tmp (该目录必须有可执行权限)
-XX:LogFile=/opt/sonatype-work/nexus3/log/jvm.log
-Dkaraf.log=/opt/sonatype-work/nexus3/log

配置SSL

outbound SSL
指nexus服务器代理的外部仓库要求采用https进行通信,此处略。
inbound SSL
指连接到nexus服务器本身需要采用https,通常有两种方式:

  1. 采用额外的反向代理,例如apache httpd, nginx, jetty等,简单方便,此处略;
  2. 采用nexus本身(自带的jetty)直接提供SSL。

2.1 制作java keystore文件并存放到etc/ssl/keystore.jks
详情可参考:https://support.sonatype.com/hc/en-us/articles/213465768-SSL-Certificate-Guide?_ga=2.235949185.1209692191.1706156496-426980590.1700454565
例如:准备好CA证书root.crt服务器证书nexus.crt和密钥nexus.key

openssl pkcs12 -export -in nexus.crt -inkey nexus.key -out nexus.p12 -name nexus -CAfile root.crt -caname root
keytool -importkeystore -deststorepass password destkeypass password -destkeystore keystore.jks -srckeystore nexus.p12 -srcstoretype PKCS12 -srcstorepass password -alias jetty

生成keystore.jks和记住3个password

2.2. 修改etc/nexus.properties配置

  • i.添加配置:application-port-ssl=8443
  • ii.将${jetty.etc}/jetty-https.xml加入nexus-args变量,如:nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-https.xml,${jetty.etc}/jetty-requestlog.xml
  • iii.关闭http监听:移除上一步nexus-args变量的${jetty.etc}/jetty-http.xml
  • iv.添加配置:ssl.etc=${karaf.data}/etc/ssl

2.3.修改jetty-https.xml

  • i.配置密码:2.1步骤的3个密码
  • ii.配置别名,如:
    <Set name=“certAlias”>jetty
    <Set name=“KeyStorePath”>
    ……

2.4.重启服务

关闭http监听器

编辑etc/nexus.properties
将${jetty.etc}/jetty-http.xml从变量nexus-args移除,保存重启,

兼容SNI的证书

修改${jetty.etc}/jetty-https.xml配置:
<New id=“sslContextFactory” class=“org.eclipse.jetty.util.ssl.SslContextFactory”>
改为:
<New id=“sslContextFactory” class=“org.eclipse.jetty.util.ssl.SslContextFactory$Server”>

  • 23
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值