sonatype nexus ubuntu下安装指南

来源:互联网 发布:js中的onchange事件 编辑:程序博客网 时间:2024/06/05 11:03
sonatype ubuntu下安装指南
1.下载最新的nexus至本地
sudo axel http://download.sonatype.com/nexus/oss/nexus-latest-bundle.tar.gz
我下载下来版本:nexus-2.10.0-02-bundle.tar.gz
2.将文件复制到/etc/local 文件夹下
sudo cp nexus-2.10.0-02-bundle.tar.gz /usr/local
3.进入/usr/local并解压文件至当前文件
cd /usr/local
sudo tar -zxvf nexus-2.10.0-02-bundle.tar.gz
4.删除 nexus-latest-bundle.tar.gz 文件包
sudo rm -r nexus-2.10.0-02-bundle.tar.gz
4.1 目前查看当前文件夹,属于nexus的文件夹有nexus-2.10.0-02、sonatype-work
为了方便访问nexus-2.10.0-02主文件(名称太长),常用的做法是:重命名或者建立快捷方式,
这里我们采用建立快捷方式的方法,在linux里面称为“软连接”
5.建立 nexus-2.10.0-02 的软连接
sudo ln -s nexus-2.10.0-02 nexus2
建立完成后,就可以使用 /etc/local/nexus2 进入到 /etc/local/nexus-2.10.0-02 目录
6.可以尝试启动nexus服务
进入到 /etc/local/nexus2
执行命令: ./bin/nexus start
不出其他问题,一般情况下本次尝试启动是失败的,输出如下:
Starting Nexus OSS...
Failed to start Nexus OSS.
只看到本次启动失败,但看不到为什么失败,还有另外一个命令可以看到启动的日志:
./bin/nexus console
执行后:
Running Nexus OSS...
wrapper | ERROR: Could not write pid file /usr/local/nexus-2.10.0-02/bin/../bin/jsw/linux-x86-64/nexus.pid: Permission denied
Unable to open logfile logs/wrapper.log: Permission denied
这里出现一个权限问题,启动时系统一个文件创建由于权限问题被迫终止;
7.解决nexus pid文件创建权限不足
造成这个的原因是nexus使用了默认的pid路径,这个路径由于只隶属于root账户,因此权限不足;
在这里我们采取不用默认的pid路径,重新指定一个路径并将这个路径的权限开放给当前用户;
我们在当前用户的文件夹下建立一个piddir文件夹
cd /home/sysadmin /*这里的sysadmin是我当前的用户*/
mkdir piddir /*注意这里没有用sudo来创建这个文件夹*/
执行文件夹权限查看:ls -l
drwxrwxr-x 2 sysadmin sysadmin 4096 Oct 12 16:20 piddir
我们可以看到这个文件夹属于 sysadmin
返回至 /usr/local/nexus2/bin/ 目录
修改 nexus文件内容:sudo vim nexus
NEXUS_HOME="/usr/local/nexus2"
取消 #RUN_AS_USER=注释,并修改为:RUN_AS_USER=sysadmin(当前用户)
取消#PIDDIR=注释,并修改为:PIDDIR="/home/sysadmin/piddir"(刚才创建的文件夹)
保存退出.

至此,应该是解决了 pid目录的权限问题,解决该问题的核心是 RUN_AS_USER=sysadmin 与目标文件夹的pid所有者一致!
再次尝试启动服务:
cd /etc/local/nexus2
./bin/nexus console
输出:
Running Nexus OSS...
wrapper | --> Wrapper Started as Console
Unable to open logfile logs/wrapper.log: Permission denied
wrapper | Launching a JVM...
以下省略....

启动失败,看到logs文件夹创建日志文件权限不足;
8.解决日志文件夹日志文件创建权限不足
我们进入 /usr/local/nexus2
查看其子目录的文件夹权限:ls -l
drwxr-xr-x 2 root root 4096 Sep 30 04:18 logs
看到logs文件夹属于 root
解决方法是修改该文件夹的所有者:
sudo chown sysadmin:sysadmin logs
再次确认文件夹权限,已经修改:
drwxr-xr-x 2 sysadmin sysadmin 4096 Sep 30 04:18 logs

再次尝试启动服务
cd /etc/local/nexus2
./bin/nexus console
输出:
Running Nexus OSS...
wrapper | --> Wrapper Started as Console
wrapper | Launching a JVM...
jvm 1 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
jvm 1 | Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved.
jvm 1 |
jvm 1 | 2014-10-12 16:38:14,261+0800 INFO [WrapperListener_start_runner] *SYSTEM org.sonatype.nexus.bootstrap.jsw.JswLauncher - Starting with arguments: [./conf/jetty.xml, ./conf/jetty-requestlog.xml]
省略.......
jvm 1 | 2014-10-12 16:38:14,362+0800 ERROR [WrapperListener_start_runner] *SYSTEM org.sonatype.nexus.bootstrap.jsw.JswLauncher - Failed to start
jvm 1 | java.nio.file.AccessDeniedException: ./tmp/nexus-tmpdir2514708553994624929.tmp
省略.......

再次出错,原因是tmp文件夹权限不足,请参考本节方式对tmp文件夹赋予当前用户的权限
再次尝试启动服务
jvm 1 | 2014-10-12 16:48:06,728+0800 ERROR [WrapperListener_start_runner] *SYSTEM org.sonatype.nexus.bootstrap.jsw.JswLauncher - Failed to start
jvm 1 | java.lang.IllegalStateException: Nexus work directory already in use: /usr/local/sonatype-work/nexus

这次报错是 Nexus work directory already in use,被占用?第一个想到的反应是:是不是刚刚启动那么多次没成功,这个文件夹被某些驻留的服务占用了(windows用多了)
其实不是,依然是这个文件夹的权限问题.按照本节方法再次对 /usr/local/sonatype-work/nexus 这个文件夹进行权限赋予;
再次启动服务(没有问题了,可切换至start命令来启动):
cd /etc/local/nexus2
./bin/nexus start
输出:
Starting Nexus OSS...
Started Nexus OSS.

OK!
使用web端访问看看:http://server-host:8081/nexus

题外话:
到这里可能大家都要问,为什么要处理这么多文件夹的权限问题?
1.linux有一些标准,希望大家能遵守:
尽量不要用root用户来启动nexus;当然如果是用root来启动,啥问题都没有,应为所有的文件都属于root;但这样会带来安全问题!安全对于服务器是致命的;
2.我们把nexus服务放到了local目录下,貌似也是linux的标准?不太懂!

综合以上两点,造成这个问题;其实如果我们把nexus主文件放到普通用户的主目录下,这些应该都不存在;大伙可以试试;

其实,解决了这么多问题,大致应该对linux的系统运行机制有一些了解,并慢慢熟悉起来.解决这些问题是必要的,值得的;
1 0