公司的网络特别慢,外网速度好的时候100多KB,慢的时候几十B。移动半年没信号了,打移动公司说是基站坏了,在修,从推广5G至今一直在修,不知道什么时候修好。因为移动信号基站的问题,所以整个职场都换成了联通,但是口子就那么大,都用联通,结果可想而知,都慢。
所以决定在家里和公司同事搭建Nexus的服务器,在家里的电脑安装依赖,然后公司的电脑每天定时同步(也可以手动同步推送),为了保持数据一致,公司电脑选择本地强制覆盖(修改则覆盖,远程删除本地也删除),一切以家里的数据为准。
数据推送为了减少网络宽带的占用,故使用rsync差异文件推送的方法,只推送变动的文件。
两个网络可以使用zerotier或者frp互通,我肯定是使用frp的。
两台服务器均为Ubuntu 18.04 x64,Rsync程序Ubuntu系统均已默认安装了,我们只需要配置一下即可。
一、配置Rsync(服务端)
rsyncd.conf
port = 873 # 这个是默认端口可以修改的 read only = true # 只允许读 transfer logging = false log format = %t %a %m %f %b log file = /var/log/rsync.log hosts allow = * secrets file = /etc/rsyncd/rsyncd.secrets motd file = /etc/rsyncd/rsyncd.motd pid file = /var/run/rsyncd.pid use chroot = true uid = root gid = root [nexus] comment = Nexus Rsync auth users = root ignore errors list = no path = /datahub/nexus3_volumes/data/blobs
rsyncd.secrets 冒号后面的密码是举例子,请设置复杂些
root:123456
rsyncd.motd
######################################################### Nexus Rsync #########################################################
二、进行资源同步(客户端获取服务端)
为了保持数据的一致性,我完全以家里的为准。
/usr/bin/rsync -avr --delete --port=873 --password-file=/home/rsync.pwd root@xxx.xxx.xxx.xxx::nexus /data/nexus3_volumes/data/blobs
也可以设置一个定时任务,在什么时候自动进行数据的获取。我这里设置的是每天凌晨12点半进行获取。
30 0 * * * /usr/bin/rsync -avr --delete --port=873 --password-file=/home/rsync.pwd root@xxx.xxx.xxx.xxx::nexus /data/nexus3_volumes/data/blobs > /dev/null 2>&1
至此,我们就可以把家里产生的依赖文件都同步到公司的机器上了,省去了从远程重新获取的步骤。
三、重建索引
文件同步完成后,需要重新赋予下权限以及重建下索引。
chown -R 200:200 /data/nexus3_volumes/data/blobs # 后面的路径是我公司环境的路径
然后进入到nexus3重建下索引
重启nexus3,如果不这么做的话,即使同步了还是找不到相应的包。
四、手动下载依赖包
我们可以使用mvn手动下载依赖包
4.1 创建pom
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>test</groupId> <artifactId>test</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.20</version> </dependency> </dependencies> </project>
4.2 执行下载命令
mvn -f offline_pom.xml dependency:tree # 下载依赖 树形式展示依赖 mvn -f offline_pom.xml dependency:list # 下载依赖 列表形式展示依赖 mvn -f offline_pom.xml dependency:sources # 下载sources mvn -f offline_pom.xml dependency:resolve -Dclassifier=javadoc # 下载documentation mvn -f offline_pom.xml dependency:copy-dependencies # 下载依赖,并复制依赖到当前文件夹
这样即使家里未运行项目,也可以获取依赖了。