麒麟OS部署Nexus私服需优先配置OpenJDK 11、推荐Docker方式规避kysec限制,压缩包方式须适配systemd单元文件及安全策略,最后开放8081端口并提取admin.password完成初始化。

如果您在麒麟OS系统上需要部署Maven私服,但遇到Nexus服务无法启动、端口绑定失败或权限拒绝等问题,则可能是由于麒麟OS特有的安全策略、默认JDK版本不兼容或systemd服务配置缺失所致。以下是针对麒麟OS(V10 SP1/SP2,基于Linux内核5.4+,适配ARM64/x86_64)的Nexus安装与运行方法:
一、检查并配置OpenJDK 8/11运行环境
麒麟OS默认未预装JDK,且部分版本预装的OpenJDK 17不被Nexus 3.63.0及以下版本支持,必须显式安装兼容版本。该步骤确保JVM能正确加载Nexus Jetty容器。
1、执行java -version确认当前JDK版本;若输出为17或无结果,则需安装OpenJDK 11。
2、使用麒麟软件商店搜索“openjdk-11-jdk”并安装,或执行命令:sudo apt update && sudo apt install openjdk-11-jdk。
3、设置JAVA_HOME环境变量:echo 'export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64' | sudo tee -a /etc/profile(ARM64路径为/usr/lib/jvm/java-11-openjdk-arm64)。
4、执行source /etc/profile && java -version验证输出含“11.0.”字样。
二、Docker方式部署Nexus(推荐,规避麒麟OS SELinux与cgroup限制)
麒麟OS V10启用严格的安全模块(如kysec),直接解压运行易触发权限拦截;Docker容器可隔离内核策略,且镜像已预置适配ARM64的nexus3。
1、安装Docker:sudo apt install docker.io,随后执行sudo systemctl enable docker && sudo systemctl start docker。
2、拉取官方ARM64兼容镜像(若为x86_64平台则跳过此步):sudo docker pull arm64v8/sonatype/nexus3。
3、运行容器并挂载数据目录:sudo docker run -d --name nexus3 -p 8081:8081 -v /opt/nexus-data:/nexus-data --restart=always arm64v8/sonatype/nexus3(x86_64平台替换为sonatype/nexus3)。
4、检查容器状态:sudo docker ps | grep nexus3,确认STATUS为“Up”且端口映射正常。
三、压缩包方式部署(需手动适配麒麟OS systemd服务)
适用于需自定义JVM参数、日志路径或集成麒麟OS统一认证的场景。该方式绕过Docker依赖,但必须重写systemd单元文件以兼容麒麟OS的cgroup v2与kysec策略。
1、下载Nexus 3.63.0 Unix版:wget https://download.sonatype.com/nexus/3/nexus-3.63.0-01-unix.tar.gz -P /tmp。
2、解压至/opt:sudo tar -zxvf /tmp/nexus-3.63.0-01-unix.tar.gz -C /opt/,并创建专用用户:sudo useradd -r -s /bin/false nexus。
3、授权目录:sudo chown -R nexus:nexus /opt/nexus /opt/sonatype-work。
4、创建systemd服务文件:sudo nano /etc/systemd/system/nexus.service,写入以下内容(关键适配kysec):
[Unit]
Description=Nexus Repository Manager
After=network.target
[Service]
Type=forking
User=nexus
LimitNOFILE=65536
Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64"
ExecStart=/opt/nexus/bin/nexus start
ExecStop=/opt/nexus/bin/nexus stop
Restart=on-failure
RestartSec=10
CapabilityBoundingSet=CAP_NET_BIND_SERVICE CAP_SYS_RESOURCE
AmbientCapabilities=CAP_NET_BIND_SERVICE CAP_SYS_RESOURCE
[Install]
WantedBy=multi-user.target
5、启用并启动服务:sudo systemctl daemon-reload && sudo systemctl enable nexus.service && sudo systemctl start nexus.service。
四、开放防火墙端口并验证访问
麒麟OS默认启用ufw防火墙且策略严格,默认拒绝8081端口;必须显式放行并验证SELinux等扩展策略未拦截连接。
1、启用ufw并放行端口:sudo ufw enable && sudo ufw allow 8081。
2、检查麒麟OS特有安全模块状态:sudo kysec status,若返回“enabled”,需临时允许网络监听:sudo kysec set network_bind on。
3、验证服务监听:sudo ss -tuln | grep :8081,确认输出含LISTEN及nexus进程名。
4、浏览器访问http://<strong><font color="green">本机IP地址</font></strong>:8081,页面加载成功即表示部署完成。
五、首次登录与初始密码提取
Nexus首次启动后会生成随机admin密码,该文件位于麒麟OS受限目录中,需以root权限读取,且麒麟OS的文件系统加密策略可能影响路径解析。
1、等待服务完全启动(约2–3分钟),执行:sudo tail -f /opt/sonatype-work/nexus3/log/nexus.log | grep "Started Sonatype Nexus",出现日志即就绪。
2、读取初始密码:sudo cat /opt/sonatype-work/nexus3/admin.password,输出为16位随机字符串。
3、在浏览器登录页输入用户名<strong><font color="green">admin</font></strong>及上述密码,提交后强制跳转至密码修改页。
4、设置新密码并保存,完成初始化。

















