配置Nexus 3后,Nexus不再在没有sudo的情况下运行

时间:2016-01-27 02:24:51

标签: nexus

我的新Nexus 3存储库运行正常。我能够配置一些基本设置。然后我完成了启用SSL的过程。我使用了说明here。我还在该页面上观看了视频,该视频没有提供与该页面匹配的说明。

我的系统信息: ubuntu 14.4 with Java 8. 安装目录:/opt/nexus-3.0.0-b2016011501/ 为了简化路径,我创建了一个指向此目录的链接:nexus -> /opt/nexus-3.0.0-b2016011501/因此,nexus的路径为/opt/nexus

我按如下方式生成了我的密钥库: 创建目录:/opt/nexus/etc/ssl 更改为该目录并运行:keytool -keystore keystore -alias jetty -genkey -keyalg RSA -validity 3650。这会生成一个名为keystore的文件。然后我将该文件复制到keystore.jks

更新了以下文件: /opt/nexus/etc/org.sonatype.nexus.cfg添加了application-port-ssl=443并添加了${karaf.etc}/jetty-https.xml(这与书面说明不同)到{{1}的末尾行。然后(这是在视频中,但不是书面说明)我编辑了/opt/nexus/etc/jetty-https.xml文件,并用我在生成密钥库时指定的密码替换了三个地方的密码。

在此之后,如果我使用nexus-args=$启动nexus,则会出现以下错误:

./nexus run

如果它以2016-01-27 02:20:41,013+0000 ERROR [jetty-main-1] *SYSTEM org.sonatype.nexus.bootstrap.jetty.JettyServer - Failed to start java.net.SocketException: Permission denied at sun.nio.ch.Net.bind0(Native Method) [na:1.8.0_72] at sun.nio.ch.Net.bind(Net.java:433) [na:1.8.0_72] at sun.nio.ch.Net.bind(Net.java:425) [na:1.8.0_72] at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223) [na:1.8.0_72] at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74) [na:1.8.0_72] at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:326) [org.eclipse.jetty.server:9.3.5.v20151012] at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80) [org.eclipse.jetty.server:9.3.5.v20151012] at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:244) [org.eclipse.jetty.server:9.3.5.v20151012] at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) [org.eclipse.jetty.util:9.3.5.v20151012] at org.eclipse.jetty.server.Server.doStart(Server.java:384) [org.eclipse.jetty.server:9.3.5.v20151012] at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) [org.eclipse.jetty.util:9.3.5.v20151012] at org.sonatype.nexus.bootstrap.jetty.JettyServer$JettyMainThread.run(JettyServer.java:274) [org.sonatype.nexus.bootstrap:3.0.0.b2016011501] 启动它会起作用,但会向我显示唠叨消息,说我不应该以root身份运行它。

我已验证我的用户是所有文件和目录/ opt / nexus

的所有者

1 个答案:

答案 0 :(得分:0)

在Linux(和其他unix类型系统)上,除非你是root用户,否则你不能在低于1024的端口号上运行。解决此问题的最佳方法是在反向代理后面运行Nexus。你可以在这里找到相关说明:

http://books.sonatype.com/nexus-book/reference/install-sect-proxy.html

以上是针对Nexus 2.x编写的,但Nexus 3中所需的配置相同。

关于以非root身份作为服务运行,3.0m7中存在一个错误,导致此问题:

https://issues.sonatype.org/browse/NEXUS-9437

修复是编辑" bin / nexus"启动脚本是替换这一行:

INSTALL4J_JAVA_PREFIX="su - $run_as_user -c"

有了这个:

exec su - $run_as_user "$prg_dir/$progname" $@

此修复程序将在下一个版本中发布。

完成更改后,将符号链接$ NEXUS_HOME / bin / nexus添加到/etc/init.d/nexus,然后安装该服务。并编辑" $ NEXUS_HOME / bin / nexus.rc"并设置" run_as_user"适当。