2012-05-04 36 views
16

He iniciado y probado Tomcat en el puerto 8080 (valor predeterminado). Ahora alteré el puerto del conector a 80 y reinicié Tomcat, nada se mostrará en mi instalación mínima de Debian 6.0. Ahora, ¿dónde está el truco aquí?¿Por qué Tomcat funciona con el puerto 8080 pero no con el 80?

<Connector port="80" protocol="HTTP/1.1" 
      connectionTimeout="20000" 
      URIEncoding="UTF-8" 
      redirectPort="8443" /> 
+3

¿Ha tenido un BindException, tal vez, en catalina.out? Hay una buena posibilidad de que algo más en el sistema ya esté vinculado al puerto 80. –

+0

Quizás otro servicio se esté ejecutando en ese puerto ya sea –

+1

Lo primero que hay que hacer: ver los registros (en el directorio tomcat/logs) –

Respuesta

31

ir a/etc/default/tomcat6 y cambiar #AUTHBIND=no a AUTHBIND=yes

# If you run Tomcat on port numbers that are all higher than 1023, then you 
# do not need authbind. It is used for binding Tomcat to lower port numbers. 
# NOTE: authbind works only with IPv4. Do not enable it when using IPv6. 
# (yes/no, default: no) 
#AUTHBIND=no 
+0

también ver http://thelowedown.wordpress.com/2010/08/17/tomcat-6-binding-to-a-privileged-port-on-debianubuntu/ –

9

¿Ha iniciado Tomcat en el puerto 80 como root? Tienes que ser root para enlazar a los puertos < = 1024 en Linux.

+6

Vale la pena señalar: iniciar Tomcat como 'root' es generalmente una mala idea, seguridad -wise, a menos que sea capaz (y configurado) para cambiar su usuario a un usuario no privilegiado después del enlace (que no fue posible la última vez que lo verifiqué). – Romain

+0

Inicié Tomcat usando /etc/init.d/tomcat6 inicié sesión con la cuenta raíz. ¿Puedo modificarlo para poder iniciarlo en el puerto 80? –

+1

Los archivos de configuración de tomcat son los que determinan qué puerto usar, cómo realmente comienza el proceso realmente no importa. Lo más probable es que tengas algo más escuchando en el puerto 80.Intente ejecutar: netstat -an | grep 80 Eso le permitirá saber si algo ya está escuchando en el puerto 80. – rooftop

0

servicio de la parada de Apache Tomcat y ejecute debe ser bueno, por Apache por defecto se ejecuta en el puerto 80

+0

¿Qué pasa con el hecho de que los puertos <= 1024 tienen privilegios? – Romain

+0

Creo que ya tiene la raíz – Satya

+2

Nada en el OP lo menciona. No deberías asumirlo – Romain

11

Dos razones típicas:

  • Usted posiblemente no tiene permiso para escuchar una puerto inferior a 1024 (por lo general requiere privilegios administrativos, por ejemplo, ser root)
  • Algo más ya puede estar escuchando en el puerto 80 (por ejemplo Apache)
+1

@Romain: Bueno, root o una cuenta con privilegios similares. He editado para aclarar. I * believe * 1024 estaría bien (es decir, solo es 0-1023 que requiere privilegio, pero podría estar equivocado) –

+0

Nada más está escuchando en el puerto 80. Soy root pero lo estoy ejecutando con /etc/init.d/ tomcat6 start –

8

Si nada de la obra se ha comentado anteriormente (como me pasó a mí), puede dirigir el tráfico desde el puerto 80 a la 8080.

hacerlo:

http://forum.slicehost.com/index.php?p=/discussion/2497/iptables-redirect-port-80-to-port-8080/p1

En pocas palabras, escriba esto tres comandos en un terminal:

$ sudo iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT 
$ sudo iptables -A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT 
$ sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080 
+0

será solo un caso extremo, ya que han mencionado "si nada de lo comentado anteriormente ha funcionado". – emecas

+0

Otros lectores están viendo algo que me falta: * Esto es simple y logra el objetivo sin tener que instalar y administrar 'authbind'. * Tomcat escucha en los puertos de bajo número. * Tomcat se ejecuta como un usuario sin privilegios. ¿Por qué es esta una solución extrema? –

+0

Esta solución no es buena porque el usuario final verá el número de puerto en su URL y verá un cambio de URL. – alexk

2

ejecutar su script de inicio como root después de cambiar la unión.

sudo ./<path to tomcat bin director>/startup.sh 
+0

Solución perfecta, salvó mi día –

+0

Respuesta correcta para * nix pero ¿y Windows? –

0

Usted puede utilizar authbind/privbind o capacidades para enlazar con el puerto 80.

Cuestiones relacionadas