Hello,

I am trying to configure tomcat 7 on ubuntu machine and wanted to run it as
non-root on port 80, Here is what I did so far:

OS (Ubuntu 12.04 LTS):

- installed oracle JDK 1.7.0_45 using "apt-get"
- downloaded and extracted tomcat 7.0.50 (.gz format)
- created ubuntu user 'tomcat' and granted 'chown -R CATALINA_HOME' to this
user
- changed tomcat default port to 80 in server.xml
- installed and configured authbind tool
- created sh script "/etc/init.d/tomcat7" to start tomcat as tomcat user.
- tomcat 7 was working as expected on 80 port as non-root user.
- later I configured APR 1.5.0 and tried to run tomcat again, I got this
error:

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)

If I am removing out this line from server.xml:
<Listener className="org.apache.catalina.core.AprLifecycleListener"
SSLEngine="on" />

Tomcat working on 80 port as non-root user and starting "http-bio-80"
properly.

Another thing is if I am trying to run tomcat as "root" along with APR
support, its working just fine.

Any advise why its working on "http-bio-80" while throwing bind exception
on "http-apr-80"??

Regards,
Mubeen

Reply via email to