1

I am trying to configure tomcat 7 (standalone) on ubuntu machine (production env), but getting following exception at startup:

Jan 15, 2014 6:24:45 AM org.apache.catalina.core.AprLifecycleListener init
INFO: Loaded APR based Apache Tomcat Native library 1.1.29 using APR version 1.5.0.
Jan 15, 2014 6:24:45 AM org.apache.catalina.core.AprLifecycleListener init
INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
Jan 15, 2014 6:24:46 AM org.apache.catalina.core.AprLifecycleListener initializeSSL
INFO: OpenSSL successfully initialized (OpenSSL 1.0.1 14 Mar 2012)
Jan 15, 2014 6:24:46 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-apr-80"]
Jan 15, 2014 6:24:46 AM org.apache.coyote.AbstractProtocol init
SEVERE: Failed to initialize end point associated with ProtocolHandler ["http-apr-80"]
java.lang.Exception: Socket bind failed: [13] Permission denied
    at org.apache.tomcat.util.net.AprEndpoint.bind(AprEndpoint.java:430)
    at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:640)
    at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:434)
    at org.apache.catalina.connector.Connector.initInternal(Connector.java:981)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
    at org.apache.catalina.core.StandardService.initInternal(StandardService.java:559)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
    at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:814)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:639)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:664)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:281)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455)

I am using Ubuntu 12.04 LTS, initially I installed oracle JDK 1.7.0_45 using "apt-get", then I downloaded tomcat 7.0.50 (.gz format) extracted and configured it to run (as non-root user) on port 80 using authbind (till here is was working perfectly). Then I installed/configured APR (1.5.0) connector (I think now tomcat is able to load it properly):

INFO: Loaded APR based Apache Tomcat Native library 1.1.29 using APR version 1.5.0.
Jan 15, 2014 6:24:45 AM org.apache.catalina.core.AprLifecycleListener init
INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].

But after this change tomcat is not able listen on port 80. Any advise on that?

UPDATE 1

Would like to add this: When I am trying to run tomcat as root its working just fine, is there something to do with the user i created to run tomcat (tomcat)?? Facing this problem after configuring APR connector it was working fine with tomcat user (on port 80).

right now "tomcat" user is having following privileges:

chown -R /opt/tomcat7 (this is catalina_home)

before configuring APR, I executed following commands for "tomcat" user:

touch /etc/authbind/byport/80
chmod 500 /etc/authbind/byport/80
chown tomcat /etc/authbind/byport/80

UPDATE 2

<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />

If I am removing above mentioned APR connector from server.xml, tomcat works fine on 80 port with non-root user, and in this case initializing "http-bio-80" connector properly during startup. While with APR tomcat not able to initialize "http-apr-80" connector during startup.

  • This is a very nicely asked question. You could improve it by adding the list of things you already have tried. For example, have you tried making sure the port is not being used? – melihcelik Jan 15 '14 at 12:20

0 Answers0