Linux搭建nexus仓库

1.安装jdk

1.1 获取安装包,解压到指定目录:

 tar xf jdk.tar.gz -C /opt/export

1.2 配置环境变量:

 # vim /etc/profile
export JAVA_HOME=/opt/export/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
export RUN_AS_USER=root # 后边启动nexus需要 # source /etc/profile

1.3 出现下面结果,说明部署成功

 # java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) -Bit Server VM (build 24.80-b11, mixed mode)

2.安装nexus

2.1下载安装

下载地址:

https://www.sonatype.com/download-oss-sonatype
https://help.sonatype.com/repomanager2/download/download-archives---repository-manager-oss

 cd /opt
tar xf nexus-2.4.--bundle.tar.gz

解压后有两个目录:

 $ ls /opt/
nexus-2.4.- sonatype-work

更改目录名称:

 mv nexus-2.4.- nexus

2.2 更改nexus配置文件

默认端口为8081,可根据需要修改:

 $ vim /opt/nexus/conf/nexus.properties
# Jetty section
application-port= # 修改为10890
application-host=0.0.0.0
nexus-webapp=${bundleBasedir}/nexus
nexus-webapp-context-path=/nexus # Nexus section
nexus-work=${bundleBasedir}/../sonatype-work/nexus
runtime=${bundleBasedir}/nexus/WEB-INF

2.3 关闭防火墙或打开10890端口

 /etc/init.d/iptables stop
chkconfig iptables off

2.4 启动nexus

 $ /opt/nexus/bin/jsw/linux-x86-/nexus start
****************************************
WARNING - NOT RECOMMENDED TO RUN AS ROOT
****************************************
Starting Nexus OSS...
Started Nexus OSS.

如果没有配置环境变量RUN_AS_USER=root,会报错:

 # /opt/nexus/bin/jsw/linux-x86-/nexus start
****************************************
WARNING - NOT RECOMMENDED TO RUN AS ROOT
****************************************
If you insist running as root, then set the environment variable RUN_AS_USER=root before running this script.

2.5 检查进程和端口

3.浏览器访问nexus

 http://ip地址:8081/nexus
登录,默认用户名 admin 默认密码 admin123

访问登录:

4.迁移nexus

如果想要将nexus仓库迁移,只需要打包此目录,迁移到新nexus主机:

 $ du -sh /opt/sonatype-work/nexus/storage
47G /opt/sonatype-work/nexus/storage/

由于文件过大,可采用rsync的方式。

本文参考:https://blog.csdn.net/sunyanxiong123/article/details/68926610

Nexus高可用方案

描述:由于nexus进程会因为某些原因挂掉,为了不影响使用,决定做nexus高可用。

准备:根据上一章,准备两台服务器搭建nexus,主:192.168.51.204 maven01,备:192.168.51.207 maven02:

1.搭建keepalived

主:

 # cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived global_defs {
router_id maven01
}
vrrp_script chk_http_port { #检测nexus端口是否存在,不存在进行vip漂移
script "</dev/tcp/127.0.0.1/10890"
interval
weight -
fall
rise
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id
priority
advert_int
authentication {
auth_type PASS
auth_pass
}
virtual_ipaddress {
192.168.51.210
}
track_script {
chk_http_port
}
}

备:

 # cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived global_defs {
router_id maven01
}
vrrp_script chk_http_port {
script "</dev/tcp/127.0.0.1/10890"
interval
weight -
fall
rise
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id
priority
advert_int
authentication {
auth_type PASS
auth_pass
}
virtual_ipaddress {
192.168.51.210
}
track_script {
chk_http_port
}
}

2.同步数据

描述:对比同步数据方式,1⃣️定时任务rsync同步:不及时,容易遗漏数据。2⃣️nfs共享:能够解决数据一致问题,但是主一旦宕机,备库起不到任何作用。3⃣️sersync或者inotify+rsync:可以实现实时同步,最后选用inotify方式。

2.1 部署rsync

2.1.1 备:部署rsync服务端

安装rsync软件

 yum install -y rsync

编写配置文件

 $ cat /etc/rsyncd.conf
#created by yjn at uid = rsync
gid = rsync
use chroot = no
max connections =
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log [nexus]
path = /opt/sonatype-work/nexus/storage
comment = "nexus backup dir"
ignore errors
read only = no
write only = no
hosts allow = 192.168.0.0/
auth users = rsync_backup
secrets file = /etc/rsync.password

创建备份目录的管理用户

 useradd -s /sbin/nologin -M rsync

创建安全认证文件

 echo "rsync_backup:123" >/etc/rsync.password
chmod /etc/rsync.password

修改备份目录属主

 chown -R rsync.rsync  /opt/sonatype-work/nexus/storage

启动rsync服务

 rsync --daemon
说明:rsync服务的端口号为873端口(tcp)

2.1.2 主:部署rsync客户端

安装rsync软件

 yum install -y rsync

创建安全认证文件

 echo "" >/etc/rsync.password
chmod /etc/rsync.password

2.2 部署inotify-tools软件

inotify软件的参考资料链接:https://github.com/rvoicilas/inotify-tools/wiki

 # yum install -y inotify-tools
Loaded plugins: fastestmirror, security
Setting up Install Process
Loading mirror speeds from cached hostfile
* base: mirrors.zju.edu.cn
* extras: mirror.bit.edu.cn
* updates: mirrors.tuna.tsinghua.edu.cn
No package inotify-tools available.
Error: Nothing to do

没有这个包,更新epel源:

 yum install -y epel-release && yum update

2.3 inotify+rsync结合脚本同步nexus

2.3.1 写同步脚本

#!/bin/bash
########### inotifywait -mrq /opt/sonatype-work/nexus/storage --format '%w%f' -e create,delete,close_write,moved_to|\
while read line
do
rsync -az --delete /opt/sonatype-work/nexus/storage/* rsync_backup@192.168.51.207::nexus --password-file=/etc/rsync.password &>/dev/null
done

2.3.2 后台执行:

 sh /yjn/scripts/backup.sh &

2.3.3 发现报错:

 Failed to watch /opt/sonatype-work/nexus/storage; upper limit on inotify watches reached!
Please increase the amount of inotify watches allowed per user via `/proc/sys/fs/inotify/max_user_watches'.

  注意:inotify默认监控同步文件的个数是有限制的,8192,通过配置文件/proc/sys/fs/inotify/max_user_watches可以调整监控的个数。此问题明显就是文件太多,导致无法监控。

2.3.4 解决

 echo  > /proc/sys/fs/inotify/max_user_watches

此时再执行脚本,没有报错信息,验证可以同步。

Linux搭建Nexus仓库+高可用方案的更多相关文章

  1. MySQL高可用方案-MySQL InnoDB Cluster

    MySQL InnoDB Cluster简介 MySQL InnoDB Cluster 是最新GA的MySQL高可用方案,利用MySQL Group Replication和MySQL Shell.M ...

  2. Linux下"负载均衡+高可用"集群的考虑点 以及 高可用方案说明(Keepalive/Heartbeat)

    当下Linux运维技术越来越受到企业的关注和追捧, 在某些企业, 尤其是牵涉到电子商务和电子广告类的网站,通常会要求作负载均衡和高可用的Linux集群方案.那么如何实施Llinux集群架构,才能既有效 ...

  3. 基于Redis Sentinel的Redis集群(主从Sharding)高可用方案(转)

    本文主要介绍一种通过Jedis&Sentinel实现Redis集群高可用方案,该方案需要使用Jedis2.2.2及以上版本(强制),Redis2.8及以上版本(可选,Sentinel最早出现在 ...

  4. Heartbeat+DRBD+MySQL高可用方案【转】

    转自Heartbeat+DRBD+MySQL高可用方案 - yayun - 博客园 http://www.cnblogs.com/gomysql/p/3674030.html 1.方案简介 本方案采用 ...

  5. MySQL高可用方案MHA的部署和原理

    MHA(Master High Availability)是一套相对成熟的MySQL高可用方案,能做到在0~30s内自动完成数据库的故障切换操作,在master服务器不宕机的情况下,基本能保证数据的一 ...

  6. 基于GTID的Mysql-Mha高可用方案探索

    声明: 本篇文章内容整理来源于互联网以及本人自己的梳理总结,目的是从零到一的搭建起来mysql mha高可用架构. 一.软件概述 MHA(Master High Availability)目前在MyS ...

  7. Nginx的进程模型及高可用方案(OpenResty)

    1. Nginx 进程模型简介 Nginx默认采用多进程工作方式,Nginx启动后,会运行一个master进程和多个worker进程.其中master充当整个进程组与用户的交互接口,同时对进程进行监护 ...

  8. 五大常见的MySQL高可用方案

      1. 概述 我们在考虑MySQL数据库的高可用的架构时,主要要考虑如下几方面: 1.1 如果数据库发生了宕机或者意外中断等故障,能尽快恢复数据库的可用性,尽可能的减少停机时间,保证业务不会因为数据 ...

  9. 五大常见的MySQL高可用方案【转】

    1. 概述 我们在考虑MySQL数据库的高可用的架构时,主要要考虑如下几方面: 如果数据库发生了宕机或者意外中断等故障,能尽快恢复数据库的可用性,尽可能的减少停机时间,保证业务不会因为数据库的故障而中 ...

随机推荐

  1. Gitlab 备份还原/迁移

    Gitlab 备份还原 备份数据:通过命令进行备份操作 gitlab-rake gitlab:backup:create ... [DISABLED] Creating backup archive: ...

  2. 【UOJ#22】【UR #1】外星人(动态规划)

    [UOJ#22][UR #1]外星人(动态规划) 题面 UOJ 题解 一道简单题? 不难发现只有按照从大往小排序的顺序选择的才有意义,否则先选择一个小数再去模一个大数是没有意义的. 设\(f[i][j ...

  3. DVWA-文件上传学习笔记

    DVWA-文件上传学习笔记 一.文件上传漏洞 文件上传漏洞,通常是由于对上传文件的类型.内容没有进行严格的过滤.检查,导致攻击者恶意上传木马以便获得服务器的webshell权限. 二.DVWA学习 将 ...

  4. C# 实现 奇数偶数排序,奇数在前,偶数在后

    public static void SortByOddAndEven(int []arr) { for (int i = 0; i < arr.Length; i++) { for (int ...

  5. windows 下安装MongoDB

    一:下载mongodb安装包 下载地址:https://www.mongodb.com/download-center/community 这里推荐下载msi的安装包 二:安装mongodb 双击下载 ...

  6. 把本地项目提交到GIT上

    1.init之前 1.1 新建.gitignore文件 在提交之前.gitignore文件会把文件里面包含的内容都忽略掉 node_modules // webstorm里面的配置,别人不一定用 .i ...

  7. iOS开发之--为UITextField监听数值变化的三种方法

    项目中有个验证码输入直接验证跳转页面,用的RAC来监听textfield的输入值,如下: @weakify(self); [self.codeView.textField.rac_textSignal ...

  8. android studio学习----gradle命令详解

    首先来给大家介绍一种简便并且个人最喜欢的一种办法.很多时候我们在GitHub上看到一个不错的开源项目,一般有两种需求,阅读源码和查看运行效果,如果是单纯的查看源码我更喜欢用一些轻量级编辑器,如vim, ...

  9. 修改源代码时不需要重启tomcat服务器

    我们在写JSP + Servlet 的时修改了Java代码就要重新启动服务器.十分麻烦. 为了解决这个问题我们可以将服务器改成debug 模式.就是按调试状态这样修改Java代码就不用再重新启动服务器 ...

  10. Alpha版本1

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/2019autumnsystemanalysisanddesign/ 这个作业要求在哪里 https:// ...