2012-08-27 112 views
3

我有一个fedora服务器。我通过yum包管理器安装了tomcat。然后我在webapps文件夹中部署了nexus war。 I tryed using jsvc在端口80上运行服务器并且不起作用。我看到你也可以使用port fowarding。什么是最好的选择?如何在端口80上运行nexus sonatype?

编辑1:httpd的

我跟着从Sonatype的文档3.8. Running Nexus Behind a Proxy和我有点困惑。 我安装了httpd,并且我有以下配置,其中example.com是我的域。

/etc/httpd/conf.d/nexus.conf

NameVirtualHost *:80 

<VirtualHost *:80> 

    ServerName example.com 
    ProxyRequests Off 

    <Proxy *> 
    Order deny,allow 
    Allow from all 
    </Proxy> 

    ProxyPass /nexus/ http://localhost:8081/nexus/ 
    ProxyPassReverse /nexus/ http://localhost:8081/nexus/ 
    ProxyPreserveHost On 

    <Location /> 
    Order allow,deny 
    Allow from all 
    </Location> 

    ErrorLog logs/nexus/error.log 
    CustomLog logs/nexus/access.log common 
</VirtualHost> 

/家庭/纪尧姆/ WWW /关系/ conf目录

# Jetty section 
application-port=8081 
application-host=0.0.0.0 
nexus-webapp=${bundleBasedir}/nexus 
nexus-webapp-context-path=/nexus 

# Nexus section 
nexus-work=${bundleBasedir}/../sonatype-work/nexus 
runtime=${bundleBasedir}/nexus/WEB-INF 
pr.encryptor.publicKeyPath=/apr/public-key.txt 

,当我尝试访问

  • http://localhost:8081/nexus/index.html一切工作
  • http://localhost/nexus/index.html一切正常
  • http://example.com/nexus/index.html只是挂(80端口在防火墙中打开)

    $ netstat的-tulpn |的grep:80

    TCP 0 0 ::: 80 ::: * LISTEN 3965/httpd的
    TCP 0 0 ::: 8081 ::: * LISTEN 3811/JAVA
    UDP 0 0 0.0.0.0:803 0.0 .0.0:* 1051/rpc.statd

有关如何使代理工作的任何线索?

编辑2:nginx的

我发现了错误,DNS是错误的:nslookup example.com决心x.x.x.x当我的IP是x.x.x.y

但我确实喜欢ngix配置

server { 

     listen 80; 
     server_name example.com; 

     access_log off; 
     error_log off; 

     location/{ 
       proxy_pass  http://localhost:8081; 
       proxy_redirect off; 

       #Proxy Settings 
       proxy_set_header Host    $host; 
       proxy_set_header X-Real-IP  $remote_addr; 
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     } 

     # would be a good idea to redirect static assets 
} 

回答

4

我不不喜欢在端口80上运行Java应用程序服务器。需要进程以root身份运行。

最好的方法是安装Apache(或Nginx)并将nexus配置为反向代理。有关如何做到这一点我建议你阅读的Nexus本书的培训相关部分的详细信息:

注意

  • 很多其他的优势,建立一个反向代理。例如,您可以设置一个自定义503错误消息,每当您拿下Nexus进行维护时都会显示该消息。
+0

我也看到了这个http://wiki.ivonet.nl/display/LINUX/Install+or+Upgrade+Sonatype+Nexus –

+0

这个答案已经过时了,因为一个存在码头的世界。现在,非常希望在端口80上的容器中运行应用程序服务器。 –

5

可以使用authbind完成工作(根本没有任何代理)。因为nexus是由一个java服务包装器(jsw)启动的,而java服务包装器(jsw)又是由一个启动脚本启动的(如果需要,它可以将其自身视为不同的用户),因此将它用于nexus有点棘手。

的解决方案如下(相对路径是相对于Nexus主目录,$NEXUS_HOME):

  1. conf/nexus.properties设置
application-port=80 
application-host=0.0.0.0

(或任何你需要的)

  1. 为nexus创建一个(系统)用户,它有一个登录shell (!),例如

    adduser --system --shell /bin/sh --no-create-home --group nexus
    (使所有的关系文件属于新的用户,例如chown -R nexus:nexus .
    需要一个登录shell,因为bin/nexus电话su - $RUN_AS_USER ...,这就是为什么用户nexus必须能够“登录”(不是真的)。

  2. 获得用户ID为新用户:id -u nexus(我们假设它是108

  3. 创建authbind配置文件/etc/authbind/byuid/108(使用Nexus用户的ID作为文件名):

0.0.0.0,80 
::,80

IP和端口应该与nexus.properties中使用的相同(请参阅步骤1)。 IPv6端口可能需要也可能不需要,取决于其他配置(来自Jetty)。在authbind中启用它是安全的。

  • 创建一个小的辅助脚本(所需JSW),放于一个默认的可执行文件路径(例如/usr/local/bin/authbind-java):
  • #!/bin/sh 
    exec authbind java "[email protected]"

    (使文件可执行文件,通过chmod +x /usr/local/bin/authbind-java

  • 编辑JSW配置文件bin/jsw/conf/wrapper.conf,找到设置wrapper.java.command(应读java作为值),并与替换值(刚写好的帮手脚本)。
  • 现在您已准备好开始连接。从关系的主目录:

    RUN_AS_USER=nexus bin/nexus start

    (或编辑bin/nexus和直接设置​​并调用bin/nexus start

    的Nexus(Jetty服务器)现在应该开始,初始化和最终绑定到端口80,但仍作为“无特权”用户运行nexus


    一个侧面说明:因为你要绑定的端口80用于关系,它可能是一个自己的(虚拟)主机上运行,​​因此它很容易可以到自己的域名指定给它(如nexus.example.com)。这样做时,我更愿意从URI中去掉/nexus前缀(上下文路径),以保存输入,它已经在域名中。为了让联系人在根目录下服务,请将nexus-webapp-context-path设置为/(在conf/nexus.properties中)。存储库路径将成为例如http://nexus.example.com/content/repositories/releases(而不是http://nexus.example.com/nexus/content/repositories/releases)。