ubuntutomcatdeploymentporttomcat9

could anyone please tell me where is AUTOBIND in server.xml in tomcat 9 as mentioned in attached answer


Why does Tomcat work with port 8080 but not 80?


Solution

  • This answer applies to Tomcat 9 only... 7 and 8 are already well documented on the interwebs.

    You can't use port 80 because ports under 1024 are restricted to root access in Linux unless you use authbind to override that restriction.

    I had this same problem while using Ubuntu LTS 20.04, Tomcat 9.0.40 and here is what I had to do to fix it. I make no promises outside that specific situation.

    This assumes you are using systemctl to start and stop your Tomcat server. If you're running inside a Docker Container or Hyper-V VS that is unlikely and these instruction won't exactly fit your situation, but they should be close enough to get you through. Also, I'm not going to type sudo 100 times... if you have root access great, if not prefix everything with sudo.

    Install AUTHBIND

    apt-get install authbind
    

    Set-up AUTHBIND for you tomcat system user

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

    Modify systemctl to use AUTHBIND when starting the tomcat

    vi /etc/systemd/system/tomcat.service
    change --> ExecStart=/opt/tomcat/bin/startup.sh
    to     --> ExecStart=authbind --deep /opt/tomcat/bin/startup.sh
    

    Reload the systemctl daemon to use the new settings

    systemctl daemon-reload
    

    Edit the tomcat server configuration to set port 80

    vi /opt/tomcat/conf/server.xml
    change --> <Connector port="8080"...
    to     --> <Connector port="80"...
    

    Restart tomcat

    systemctl restart tomcat
    

    Good luck.