maven私有仓库的搭建
使用Xshell连接远程服务器。本文章主要参考冰河大佬的小伙伴问我:如何搭建Maven私服?我连夜肝了这篇实战文章!! - 冰河的个人空间 - OSCHINA - 中文开源技术交流社区
在细节的地方进行了一些小修改和小补充,欢迎大家关注冰河大佬!
环境说明
centos7.6、openjdk1.8、root用户操作
下载安装
这里使用的版本是:nexus-2.14.20-02-bundle.tar.gz
截止2022年4月18日,官网的最新版本是3.3,如果去官网下下载,不知道这个安装教程一样不一样。
下载方式有如下几种:
直接使用命令行下载
$wget https://sonatype-download.global.ssl.fastly.net/nexus/oss/nexus-2.11.2-03-bundle.tar.gz
在客户端下载后通过Xshell上传到服务器
官方下载地址是:http://www.sonatype.org/nexus/go/
点粉色的GET REPOSITORY OSS,然后就会出现
这里的GET REPOSITORY OSS是免费开源版本,还有一个PRO版本,功能更加丰富些。
注意:这里出现了第一个坑!
从客户端上传到服务器的命令是
$ rz
但是如果使用rz命令选择文件上传,因为编码的问题有可能终端挂死。其实直接拖进Xshell的对话框就行了,或者使用rz -E命令。
你可以把nexus安装在任何文件夹,我这里选择了/opt/soft文件夹。
使用mkdir命令新建一个文件夹,然后使用tar命令将压缩包解压到这个文件夹里,操作步骤如下:
[root@tisec-test-240 ~]# cd "/opt/soft"
[root@tisec-test-240 soft]# ls
[root@tisec-test-240 soft]# rz -E
[root@tisec-test-240 soft]# ls
[root@tisec-test-240 soft]# mkdir nexus
[root@tisec-test-240 soft]# tar -zxvf nexus-2.14.20-02-bundle.tar.gz -C nexus
这个解压出来的文件还不少,解压完毕之后就可以进行下一步操作。
修改端口号和nexus脚本
修改端口号
Nexus的是使用jetty作为服务器,因此,我们需要对jetty服务器做一个配置。不知道jetty是什么的也没关系,你可以把Nexus看作一个用来管理jar包的后端项目,jetty就和tomcat一样,为运行提供一个服务器环境。
首先,我们需要对jetty进行一个配置:进入*/nexus-2.14.20-02/conf*,在nexus .properties中修改端口号。安装时,默认是8081端口,这个端口一般会被占用。我这里改成了8095.
可以使用下面的命令来查看端口是否被占用。
[root@tisec-test-240 sysconfig]# netstat -anp |grep 8092
如果端口号后面显示listen就是被占用了。这时候需要尝试别的端口。
如果输入之后什么都不显示,就是没有被占用。如下:
在检测到没有占用的端口之后,使用vi命令进入conf目录下的nexus. properties中修改端口号。这里需要掌握一点基础的vi命令:
vi命令进入文件之后,首先进入命令模式,此时是对文件进行读的模式,并不能修改。下图就是命令模式。这里我的8095端口已经改过了
按方向键上下左右,把光标移动到想要修改的位置,按一下insert键,进入编辑模式。编辑模式的左下角有个**–insert–**。
进入编辑模式之后,修改端口号。改完之后按一下Esc键会回到命令模式。这时候输入**:wq**并回车就可以保存修改。
修改nexus脚本
nexus脚本位于*/nexus-2.11.2-03/bin/*目录
按照同样的方法打开文件,修改nexus文件,找到RUN_AS_USER的那一行,取消注释,改成RUN_AS_USER=root,如图所示:
开启防火墙
下一步,我们需要开启防火墙,这里也是我踩坑最多的地方。
按照冰河大佬的说法,找到*/etc/sysconfig/*路径下的iptables文件,加上一行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8081 -j ACCEPT
但是在我的centos 7.6系统里,根本没有iptables这个文件。。。
最后参照这个linux服务器上没有iptables文件怎么办-百度经验 (baidu.com)解决的。
这里先简单介绍一下iptables。
iptables
iptables是防火墙的用户代理,用户对内核的防火墙过滤进行操控的命令行工具。
如果没找到这个文件,那就是因为你的服务器没有安装这个命令行工具,需要安装一下。
[root@tisec-test-240 sysconfig]# yum install iptables-services
提示安装完毕,就可以进行下一步操作了。
iptables文件一共由四个表组成,Filter, NAT, Mangle, Raw,我们的端口开放规则应该写在Filter中,如图所示:加在一堆INPUT规则的最后面就行了。
接下来,我们应该保存一下这个规则,并重启防火墙,让防火墙加载一下这条规则。命令如下:
[root@tisec-test-240 sysconfig]# service iptables save
[root@tisec-test-240 sysconfig]# service iptables restart
如果在这里,restart出错,可是尝试一下另一个手段:
[root@tisec-test-240 sysconfig]# systemctl restart iptables
如果提示:
Redirecting to /bin/systemctl restart iptables.service
Job for iptables.service failed because the control process exited with error code. See “systemctl status iptables.service” and “journalctl -xe” for details.
多半是因为添加开放端口规则的时候写错了。比如说你添加的端口号是100000,一共都没那么多端口,肯定就错了。或者,把规则放在了错误的位置。
我们可以根据提示,使用"systemctl status iptables.service"命令查看错误记录。比如我一开始的错误记录就显示,92行有问题,那就可以看看究竟出了什么问题。
好的,完事具备,我们可以开启nexus了。
使用:
[root@tisec-test-240 bin]# ./nexus start
对于不熟悉linux操作的同学,注意,前面一定要加./,有个点.,不要忘记!
[root@tisec-test-240 bin]# ./nexus start
****************************************
WARNING - NOT RECOMMENDED TO RUN AS ROOT
****************************************
Starting Nexus OSS...
Started Nexus OSS.
[root@tisec-test-240 bin]#
出现上面的提示,就是启动服务成功了。
接下来,我们可以用自己的开发机器试着访问一下:
nexus的账号密码默认是admin和admin123。如果你安装的是3.x的nexus,那么密码就不是默认的admin123了,而是每个人安装的时候都有个密码文件,关于这个可以百度一下怎么操作,这里不再赘述。好了,到目前为止,安装的问题就解决了。