web-dev-qa-db-fra.com

Erreur lors de l'exécution de Jetty Server sur le port 80 en tant qu'utilisateur non root

Tout,

J'essayais d'installer la jetée sur le port 80, mais son exception donnait une autorisation refusée, comme indiqué ci-dessous. J'ai configuré jetty pour travailler avec setuid et configurer start.ini comme suit:

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

(ci-dessous en tant que premier fichier de configuration dans start.ini)

etc/jetty-setuid.xml

et le fichier jetty-setuid.xml avec le nom d'utilisateur et le nom de groupe de l'utilisateur non root.

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 org.Eclipse.jetty.server.Server@66da9ea4: Java.net.SocketException: Permission denied
Java.net.SocketException: Permission denied
6
user75016

Les ports inférieurs à 1024 ne peuvent être liés que par le superutilisateur. Vous pouvez exécuter la jetée en tant que superutilisateur (racine) ou la configurer pour utiliser un port supérieur à 1024 (par exemple, 8080, cela est généralement fait pour les serveurs d'applications basés sur Java). Si vous souhaitez que cela soit accessible à tout prix par le port 80, vous pouvez configurer un serveur Apache pour qu'il transfère les demandes (ou "reverse-proxy") à Jetty. Ceci est clairement documenté ici:

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

11
roadmr

Laissez Apache aux utilisateurs de Tomcat, optez pour Nginx et ces lignes simples.

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