it-swarm.com.de

Fehler beim Ausführen von Jetty Server auf Port 80 als Benutzer ohne Rootberechtigung

Alle,

Ich habe versucht, einen Steg auf Port 80 einzurichten, aber es gibt eine Ausnahme, die besagt, dass die Erlaubnis wie folgt verweigert wurde. Ich habe die Anlegestelle eingerichtet, um mit setuid und der konfigurierten start.ini wie folgt zu arbeiten:

OPTIONS=Server,jsp,jmx,resources,websocket,ext,plus,annotations,jta,jdbc,setuid

(unten als erste Konfigurationsdatei in der start.ini)

etc/jetty-setuid.xml

und die Datei jetty-setuid.xml mit dem Benutzernamen und dem Gruppennamen des Nicht-Root-Benutzers.

2012-07-03 15:29:02.411:INFO:oejdp.ScanningAppProvider:Deployment monitor /opt/jetty-hightide-8.1.3.v20120416/contexts at interval 1
2012-07-03 15:29:02.454:WARN:oejuc.AbstractLifeCycle:FAILED [email protected]:80: Java.net.SocketException: Permission denied
Java.net.SocketException: Permission denied
        at Sun.nio.ch.Net.bind(Native Method)
        at Sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.Java:126)
        at Sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.Java:59)
        at org.Eclipse.jetty.server.nio.SelectChannelConnector.open(SelectChannelConnector.Java:182)
        at org.Eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.Java:311)
        at org.Eclipse.jetty.server.nio.SelectChannelConnector.doStart(SelectChannelConnector.Java:260)
        at org.Eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.Java:59)
        at org.Eclipse.jetty.server.Server.doStart(Server.Java:273)
        at org.Eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.Java:59)
        at org.Eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.Java:1215)
        at Java.security.AccessController.doPrivileged(Native Method)
        at org.Eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.Java:1138)
2012-07-03 15:29:02.455:WARN:oejuc.AbstractLifeCycle:FAILED [email protected]: Java.net.SocketException: Permission denied
Java.net.SocketException: Permission denied
6
user75016

Ports unter 1024 können nur vom Superuser gebunden werden. Sie können jetty als Superuser (root) ausführen oder so konfigurieren, dass ein Port über 1024 verwendet wird (z. B. 8080, dies wird normalerweise für Java-basierte App-Server durchgeführt). Wenn Sie möchten, dass dies unter allen Umständen über Port 80 möglich ist, können Sie einen Apache-Server so einrichten, dass Anforderungen an Jetty weitergeleitet werden (oder umgekehrt). Dies ist hier eindeutig dokumentiert:

http://docs.codehaus.org/display/JETTY/Configuring+mod_proxy

11
roadmr

Überlassen Sie Apache den Tomcat-Leuten, entscheiden Sie sich für Nginx und diese einfachen Zeilen

server {
    listen 80;
    server_name localhost;
    access_log /var/log/nginx/example.log;

    location / {
        proxy_pass http://127.0.0.1:5000;
        proxy_redirect off;

        proxy_set_header Host $Host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
} 
2
CESCO