AWS绑卡号 AWS EC2搭建Maven仓库
前言:为啥要自己搭Maven仓库?
朋友们,你是不是也遇到过这样的情况:公司项目依赖的库突然从Maven中央库下不下来,或者速度慢得像蜗牛爬?甚至偶尔遇到依赖包被恶意篡改的‘惊喜’?这时候,一个私有的Maven仓库就成了救命稻草。自己搭一个不仅安全可控,还能加速依赖下载——毕竟在AWS EC2上,内网速度比公网快多了。别被‘云服务贵’吓到,选对实例类型,每月电费可能就相当于一杯咖啡钱。今天咱们就用AWS EC2亲手搭建一个Nexus仓库,全程幽默避坑,让你的Java项目从此不再为依赖发愁!
第一步:AWS EC2实例准备
选实例类型:别选错,别烧钱
AWS的EC2实例种类多得能开个博物馆,但搭Maven仓库其实不需要太高级的配置。t3.micro实例(1核1GB内存)完全够用,每月约7美元,比星巴克的拿铁还便宜。千万别选t3.xlarge——这玩意儿每月上百美元,你只是要存个仓库,不是要训练AI模型。记住:仓库不需要GPU,不需要高CPU,轻量级就行。就像租房,单身汉住四室一厅?纯属浪费!选对实例,省钱又高效。
安全组设置:别把大门敞开
安全组是AWS的防火墙,设置不当等于给黑客留了个后门。创建安全组时,放行22端口(SSH)和8081端口(Nexus默认端口)。但22端口千万别开0.0.0.0/0,只允许自己的IP访问,否则黑客可能顺手把你服务器变成挖矿机。8081端口如果只是内部使用,也别全开放,只给公司内网IP开绿灯。安全组设置就像给房子装锁——门锁要牢,但钥匙得自己拿着。记住:安全第一,别嫌麻烦!
第二步:安装Nexus Repository Manager
下载与安装步骤
登录EC2实例,用SSH连接。先下载Nexus:wget https://download.sonatype.com/nexus3/3.60.0-01/nexus-3.60.0-01-unix.tar.gz。解压到/opt/nexus目录:sudo tar -xzf nexus-*.tar.gz -C /opt。然后改权限:sudo chown -R nexus:nexus /opt/nexus。这里一定要注意——千万别用root用户运行Nexus!否则它可能得意忘形,把系统文件当玩具扔来扔去。新建一个nexus用户:sudo useradd nexus,再把目录权限交给它。这步非常重要,安全操作从细节开始!
配置Nexus服务
进入/opt/nexus/nexus-3.60.0-01/bin目录,打开nexus.vmoptions文件,调整内存参数:把-Xms512m改成-Xms1024m,-Xmx2048m。因为Maven依赖包可能很大,内存太小会卡顿。接着,编辑nexus-default.properties文件,设置application-port=8081。然后,配置systemd服务,让Nexus随系统启动。创建文件/etc/systemd/system/nexus.service,写入:[Unit]
Description=Nexus Repository Manager
After=network.target
[Service]
Type=forking
ExecStart=/opt/nexus/nexus-3.60.0-01/bin/nexus start
ExecStop=/opt/nexus/nexus-3.60.0-01/bin/nexus stop
User=nexus
Group=nexus
Restart=on-failure
[Install]
WantedBy=multi-user.target
最后用sudo systemctl daemon-reload和sudo systemctl enable nexus。这样重启服务器后,Nexus也会自动启动,省心又省力。
第三步:启动与初始化
启动Nexus并检查状态
运行sudo systemctl start nexus,然后检查状态:sudo systemctl status nexus。如果显示‘active (running)’,说明启动成功。等1-2分钟,用telnet localhost 8081测试端口是否监听。如果通了,恭喜你,第一步成功!如果报错,先看日志:tail -f /opt/nexus/sonatype-work/nexus3/log/nexus.log。常见错误包括内存不足(调大-Xmx)、端口冲突(改端口号),或者权限问题(检查nexus用户权限)。
初始管理员密码获取
登录Nexus管理界面,浏览器访问http://<你的EC2公网IP>:8081。第一次登录时,会提示输入admin密码。密码在/opt/nexus/sonatype-work/nexus3/admin.password文件里,用cat命令查看。复制过来,进去后记得立即修改密码——别像我上次一样,写在便签纸上,结果被猫叼走了,重启后密码全忘,只能重置。建议用密码管理器存起来,安全又省心。
第四步:配置Maven仓库
创建仓库类型(hosted、proxy、group)
Nexus有三种仓库类型:hosted是公司内部项目存放地,proxy是代理Maven中央库,group是组合多个仓库。在Nexus管理界面,点击‘Repositories’ -> ‘Create repository’。创建hosted类型,名字叫company-releases,部署策略选‘Allow redeploy’,这样可以更新已发布版本。创建proxy类型,远程URL填https://repo.maven.apache.org/maven2/,名字叫central-proxy。最后创建group类型,把刚才两个仓库加进去,名字叫all-repos。这样Maven项目配置时,只需要指向group仓库,就能同时访问公司内部和中央库的依赖。
设置凭证与权限
在‘Security’ -> ‘Users’里创建新用户,比如dev-team,密码设个强密码。然后在‘Roles’里分配权限,比如nx-repository-view-*-*-read和nx-repository-view-*-*-edit,这样开发团队既能下载又能部署。在‘Realms’里启用‘Nexus Authenticated Realm’,确保用户认证生效。权限配置就像给仓库设门禁卡——不同员工有不同权限,安全又高效。
第五步:Maven项目配置
修改settings.xml
在本地Maven的~/.m2/settings.xml文件中,添加server配置:<server>
<id>company-releases</id>
<username>dev-team</username>
<password>你的密码</password>
</server>
然后在mirrors里添加:<mirror>
<id>all-repos</id>
<mirrorOf>central</mirrorOf>
<url>http://<EC2_IP>:8081/repository/all-repos/</url>
</mirror>
这样Maven会自动使用你的私有仓库,速度飞快,而且再也不用担心中央库抽风。
部署项目到私有仓库
在项目的pom.xml中,添加distributionManagement配置:<distributionManagement>
<repository>
<id>company-releases</id>
<url>http://<EC2_IP>:8081/repository/company-releases/</url>
</repository>
</distributionManagement>
然后执行mvn deploy,如果看到‘BUILD SUCCESS’,说明部署成功。如果失败,检查settings.xml里的server id是否和pom.xml里的repository id一致,密码是否正确。记得部署前先编译打包,别傻乎乎直接deploy,那可是自找麻烦。
第六步:常见问题与避坑指南
连接超时?检查安全组
浏览器打不开Nexus界面?先别骂AWS,检查安全组。确保8081端口对公网开放(或者至少对你的IP开放)。用telnet <EC2_IP> 8081测试端口是否通。如果不通,可能是安全组没配置好,或者Nexus没启动。登录服务器用ps aux | grep nexus查看进程是否在运行。如果进程没启动,看日志找原因。安全组就像门锁,开错了门,快递员也进不来——记得精准设置!
AWS绑卡号 密码忘了怎么办?
别慌!Nexus的初始密码藏在admin.password文件里,如果删了,可以删掉整个nexus-data/sonatype-work/nexus3/etc/security/目录,重启Nexus,它会自动生成新密码。但强烈建议别这么做——直接记到密码管理器,省得手忙脚乱。我之前忘密码,删了security目录,结果重启后发现新密码被写在日志里,但日志文件太大,找半天,最后累得直喘气。所以记住:密码管理器是神器!
磁盘空间不足?
Nexus用久了,硬盘可能被依赖包塞满。用df -h看看磁盘使用情况。清理时,进入Nexus管理界面,设置‘Cleanup Policies’,比如自动删除30天前的SNAPSHOT版本,或者手动删除旧项目。也可以用crontab定时清理:0 0 * * * find /opt/nexus/sonatype-work/nexus3 -name '*.tmp' -delete。别等硬盘爆了再处理,那就像挤地铁一样,连个空位都找不到,项目部署卡得直跳脚。
结语:省心又高效
自己搭Maven仓库其实没想象中难,关键步骤走对,避坑指南记牢,就能轻松搞定。AWS EC2成本可控,Nexus配置灵活,私有仓库不仅安全,还能加速依赖下载。下次同事问‘怎么解决Maven下载慢’,你可以优雅地甩出一句话:‘我有个私有仓库,秒下不卡顿。’——这技术范儿,谁不爱呢?

