SOLVED - Apache/Tomcat/AJP and Subdirectories


#1

TL;DR - Tomcat ==> /conf/server.xml setting (scroll down to the end). But some commentary first which might be useful for future readers upgrading from Railo or older systems.


START COMMENTARY AND BACKGROUND

So… (long, long exhale)

I’ve spent the last 6 years being a stay at home dad, not a developer. Parenting started right as fate shut down a project I had been working on. Work life was shelved. I simply maintained and checked the server as needed.

Now that I can get back to developing (hacking), CF and Railo/Lucee is sort of like riding a bike, it was easy (almost) to get back to.

But first… I needed to do some maintenance on the server.

I mentioned in the other (related) posts, I needed to do a substantial upgrade (Ubuntu 12.04 to 18.04, apache, tomcat, JDK, MySQL, PHP, all of it). I had not upgraded along the way (14 to 16 to 18) because of the problems I had seen previously testing out MySQL 5.5 with my then current apps. And, also without knowing it, for some of the same reasons that people prefer CentOS to Ubnutu. I digress…

After all of that, there were/are only 3 CF apps to worry about. One that is critical for a client and is almost 20 years old. The other two were/are for my own use and weren’t critical.

As fate would have it, the first and critical app is all served from one directory. There are includes and a typical “incliude” folder structure for various things, but no “admin” or sub area with separate index.cfm and related files.

When I set up a test bed at Digital Ocean (5 of them actually), in order to run through the upgrade and install process, properly set up TLS 1.2, 1.3, and all the moving parts, and know that I was ready to go, the critical app worked just fine. And during the upgrade, the client used the Digital Ocean set up as well. So I thought, “nailed it.”

When I completed the upgrade, the critical app and client were fine. But my two projects were not. At first, they looked fine. But as noted in prior threads, nothing the subdirectories worked properly.

After several days of experimentation, I looked again tonight at this link: https://docs.lucee.org/guides/installing-lucee/lucee-server-adminstration-linux/adding-new-site.html

That guide seems to be for version 4 of Lucee (?). But the thing that made me take notice was the detail about creating a “WEB-INF” directory NOT copying the WEB-INF from (in my case) /opt/tomcat/webapps/root/WEB-INF

So I thought, hey, maybe that’s the thing and so I tried it. And…

It didn’t work. Yes, EVENTUALLY the files were copied in by (?) Tomcat? Lucee? But the problems persisted. In fact, things were worse.

However, at the bottom of that page - https://docs.lucee.org/guides/installing-lucee/lucee-server-adminstration-linux/adding-new-site.html - there is an example of configuring a host in the /opt/tomcat/conf/server.xml file.

That critical CF app I mentioned… that app was written in 2002 I think. Not by me. By someone smarter than me. But, I’ve hosted it since 2003. First on a Windows 2000 box with Adobe CF (or was it Allaire, can’t remember), then on an Apple X Serve with Blue Dragon for 7 years, then on the current box with Railo and Ubuntu 10.04 which was later upgraded to 11 and then 12.04 where the app has lived happily while I was busy parenting.

Each time I moved systems and boxes of CF engines, there were slight differences in the server.xml host configuration.

In the example given at https://docs.lucee.org/guides/installing-lucee/lucee-server-adminstration-linux/adding-new-site.html the appBase is “webapps” which is /opt/tomcat/webapps

When I ran Railo 3.x on the current machine under Ubuntu 10 and 12 (that part doesn’t matter), the correct appBase was the path to the web root without the beginning slash because… I’m not sure why. Whereas the docBase was the hard path to the web root with a beginning slash.

When I set this current iteration up with Lucee, it worked by making the appBase and docBase the same, which is the path to the web root WITH a beginning slash (which makes sense to me). Things worked - but not any files in subdirectories.

Well, I’m not sure if what I have now is PROPER - but it works.

END COMMENTARY AND BACKGROUND


The corect setting for my virtual host(s) in the /opt/tomcat/conf/server.xml file is;

<Host name="my.site.org" appBase="webapps" unpackWARs="true" autoDeploy="true">
	<Context path="" docBase="/path/to/websites/project/my.site.org/web/" />
	<Valve className="org.apache.catalina.valves.AccessLogValve" 
		directory="logs" prefix="my.site.org" suffix=".log" 
		pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>

So, made the appBase=“webapps” instead of the path to the web root of the virtual host.

And just like that, everything is working.

And to test, I also made the same change on the test bed currently running at Digital Ocean. Same result - success!! Even though there are differences in the ProxyPassMatch directives between the two setups just for the sake of testing.

My production settings for ProxyPassMatch are more extensive than the one at Digital Ocean, but it doesn’t have any affect in this case. You can get by with the minimum as Terry pointed out:

ProxyPreserveHost On
ProxyPassMatch ^/(.+.cf[cm])(/.)?$ ajp://127.0.0.1:8009/$1$2
ProxyPassMatch ^/((flashservices/gateway|messagebroker/|flex2gateway/|openamf/gateway/).) ajp://127.0.0.1:8009/$1

Looking at the difference in the Tomcat logs at startup, I recall now how the proper install should look. Over the last few days I’ve been seeing Tomcat deploy to lots of subdirectories which was strange. If you see that in your log, you’ve configured the server.xml incorrectly.

A proper log file for Tomcat at the time of starting up Tomcat should look like the example given below where you will see a section of the log repeat 4 times for the 3 CF apps deployed plus the root Tomcat version (and if that’s wrong [I don’t want to be right], please correct me).

So, I’d love to know why appBase=“webapps” is now correct. And yet, I still copy over (cp -P /opt/tomcat/webapps/root/Web-INF) to the root of my website because that seems to work better than just creating an empty WEB-INF.

Commentary? Feel free…


How a tomcat (Catalina) log should look at startup with multiple virtual hosts and CF apps:

13-Mar-2019 20:48:01.614 WARNING [main] org.apache.tomcat.util.digester.SetPropertiesRule.begin Match [Server/Service/Engine/Host] failed to set property [xmlValidation] to [false]
13-Mar-2019 20:48:01.620 WARNING [main] org.apache.tomcat.util.digester.SetPropertiesRule.begin Match [Server/Service/Engine/Host] failed to set property [xmlNamespaceAware] to [false]
13-Mar-2019 20:48:01.626 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name:   Apache Tomcat/9.0.16
13-Mar-2019 20:48:01.627 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Feb 4 2019 16:30:29 UTC
13-Mar-2019 20:48:01.627 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 9.0.16.0
13-Mar-2019 20:48:01.627 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Linux
13-Mar-2019 20:48:01.628 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            4.15.0-46-generic
13-Mar-2019 20:48:01.628 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          amd64
13-Mar-2019 20:48:01.628 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             /usr/lib/jvm/java-11-openjdk-amd64
13-Mar-2019 20:48:01.628 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           10.0.2+13-Ubuntu-1ubuntu0.18.04.4
13-Mar-2019 20:48:01.629 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Oracle Corporation
13-Mar-2019 20:48:01.629 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         /opt/tomcat
13-Mar-2019 20:48:01.629 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         /opt/tomcat
13-Mar-2019 20:48:01.630 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang=ALL-UNNAMED
13-Mar-2019 20:48:01.630 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.io=ALL-UNNAMED
13-Mar-2019 20:48:01.630 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
13-Mar-2019 20:48:01.630 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties
13-Mar-2019 20:48:01.631 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
13-Mar-2019 20:48:01.631 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xms16384m
13-Mar-2019 20:48:01.631 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmx16384m
13-Mar-2019 20:48:01.631 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmn2048m
13-Mar-2019 20:48:01.631 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xss1024k
13-Mar-2019 20:48:01.632 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:+ExplicitGCInvokesConcurrent
13-Mar-2019 20:48:01.632 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:+UseParallelGC
13-Mar-2019 20:48:01.632 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:+CMSClassUnloadingEnabled
13-Mar-2019 20:48:01.632 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.awt.headless=true
13-Mar-2019 20:48:01.632 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Duser.timezone=America/New_York
13-Mar-2019 20:48:01.632 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.security.egd=file:/dev/./urandom
13-Mar-2019 20:48:01.633 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
13-Mar-2019 20:48:01.633 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
13-Mar-2019 20:48:01.633 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
13-Mar-2019 20:48:01.633 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xms512M
13-Mar-2019 20:48:01.633 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmx1024M
13-Mar-2019 20:48:01.633 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:+UseParallelGC
13-Mar-2019 20:48:01.634 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
13-Mar-2019 20:48:01.634 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/opt/tomcat
13-Mar-2019 20:48:01.634 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/opt/tomcat
13-Mar-2019 20:48:01.634 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/opt/tomcat/temp
13-Mar-2019 20:48:01.634 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded APR based Apache Tomcat Native library [1.2.21] using APR version [1.6.3].
13-Mar-2019 20:48:01.634 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
13-Mar-2019 20:48:01.635 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
13-Mar-2019 20:48:01.638 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 1.1.1b  26 Feb 2019]
13-Mar-2019 20:48:01.680 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
13-Mar-2019 20:48:01.714 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["https-openssl-nio-8443"]
13-Mar-2019 20:48:01.766 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-nio-8009"]
13-Mar-2019 20:48:01.770 INFO [main] org.apache.catalina.startup.Catalina.load Server initialization in [820] milliseconds
13-Mar-2019 20:48:01.842 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
13-Mar-2019 20:48:01.842 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/9.0.16]
13-Mar-2019 20:48:02.339 INFO [main] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
13-Mar-2019 20:48:04.623 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/tomcat/webapps/examples]
13-Mar-2019 20:48:04.843 INFO [main] org.apache.catalina.core.ApplicationContext.log ContextListener: contextInitialized()
13-Mar-2019 20:48:04.844 INFO [main] org.apache.catalina.core.ApplicationContext.log SessionListener: contextInitialized()
13-Mar-2019 20:48:04.845 INFO [main] org.apache.catalina.core.ApplicationContext.log ContextListener: attributeAdded('StockTicker', 'async.Stockticker@c97721b')
13-Mar-2019 20:48:04.851 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/tomcat/webapps/examples] has finished in [228] ms
13-Mar-2019 20:48:04.852 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/tomcat/webapps/welcome]
13-Mar-2019 20:48:04.871 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/tomcat/webapps/welcome] has finished in [19] ms
13-Mar-2019 20:48:04.871 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/tomcat/webapps/host-manager]
13-Mar-2019 20:48:04.898 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/tomcat/webapps/host-manager] has finished in [26] ms
13-Mar-2019 20:48:04.898 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/tomcat/webapps/docs]
13-Mar-2019 20:48:04.914 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/tomcat/webapps/docs] has finished in [16] ms
13-Mar-2019 20:48:04.914 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/tomcat/webapps/manager]
13-Mar-2019 20:48:04.935 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/tomcat/webapps/manager] has finished in [21] ms
13-Mar-2019 20:48:05.061 INFO [main] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
13-Mar-2019 20:48:06.737 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/tomcat/webapps/examples]
13-Mar-2019 20:48:06.857 INFO [main] org.apache.catalina.core.ApplicationContext.log ContextListener: contextInitialized()
13-Mar-2019 20:48:06.858 INFO [main] org.apache.catalina.core.ApplicationContext.log SessionListener: contextInitialized()
13-Mar-2019 20:48:06.858 INFO [main] org.apache.catalina.core.ApplicationContext.log ContextListener: attributeAdded('StockTicker', 'async.Stockticker@4f1a5b93')
13-Mar-2019 20:48:06.861 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/tomcat/webapps/examples] has finished in [124] ms
13-Mar-2019 20:48:06.862 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/tomcat/webapps/welcome]
13-Mar-2019 20:48:06.875 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/tomcat/webapps/welcome] has finished in [13] ms
13-Mar-2019 20:48:06.875 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/tomcat/webapps/host-manager]
13-Mar-2019 20:48:06.894 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/tomcat/webapps/host-manager] has finished in [19] ms
13-Mar-2019 20:48:06.895 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/tomcat/webapps/docs]
13-Mar-2019 20:48:06.908 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/tomcat/webapps/docs] has finished in [13] ms
13-Mar-2019 20:48:06.908 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/tomcat/webapps/manager]
13-Mar-2019 20:48:06.929 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/tomcat/webapps/manager] has finished in [21] ms
13-Mar-2019 20:48:07.029 INFO [main] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
13-Mar-2019 20:48:08.877 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/tomcat/webapps/examples]
13-Mar-2019 20:48:08.992 INFO [main] org.apache.catalina.core.ApplicationContext.log ContextListener: contextInitialized()
13-Mar-2019 20:48:08.993 INFO [main] org.apache.catalina.core.ApplicationContext.log SessionListener: contextInitialized()
13-Mar-2019 20:48:08.994 INFO [main] org.apache.catalina.core.ApplicationContext.log ContextListener: attributeAdded('StockTicker', 'async.Stockticker@295e989')
13-Mar-2019 20:48:08.997 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/tomcat/webapps/examples] has finished in [120] ms
13-Mar-2019 20:48:08.997 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/tomcat/webapps/welcome]
13-Mar-2019 20:48:09.012 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/tomcat/webapps/welcome] has finished in [15] ms
13-Mar-2019 20:48:09.012 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/tomcat/webapps/host-manager]
13-Mar-2019 20:48:09.033 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/tomcat/webapps/host-manager] has finished in [21] ms
13-Mar-2019 20:48:09.033 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/tomcat/webapps/docs]
13-Mar-2019 20:48:09.049 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/tomcat/webapps/docs] has finished in [15] ms
13-Mar-2019 20:48:09.049 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/tomcat/webapps/manager]
13-Mar-2019 20:48:09.065 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/tomcat/webapps/manager] has finished in [16] ms
13-Mar-2019 20:48:09.067 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [/opt/tomcat/webapps/ROOT.war]
13-Mar-2019 20:48:09.164 INFO [main] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
13-Mar-2019 20:48:11.115 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/opt/tomcat/webapps/ROOT.war] has finished in [2,047] ms
13-Mar-2019 20:48:11.115 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/tomcat/webapps/examples]
13-Mar-2019 20:48:11.212 INFO [main] org.apache.catalina.core.ApplicationContext.log ContextListener: contextInitialized()
13-Mar-2019 20:48:11.212 INFO [main] org.apache.catalina.core.ApplicationContext.log SessionListener: contextInitialized()
13-Mar-2019 20:48:11.213 INFO [main] org.apache.catalina.core.ApplicationContext.log ContextListener: attributeAdded('StockTicker', 'async.Stockticker@114b81af')
13-Mar-2019 20:48:11.215 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/tomcat/webapps/examples] has finished in [100] ms
13-Mar-2019 20:48:11.215 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/tomcat/webapps/welcome]
13-Mar-2019 20:48:11.227 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/tomcat/webapps/welcome] has finished in [11] ms
13-Mar-2019 20:48:11.227 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/tomcat/webapps/host-manager]
13-Mar-2019 20:48:11.241 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/tomcat/webapps/host-manager] has finished in [13] ms
13-Mar-2019 20:48:11.241 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/tomcat/webapps/docs]
13-Mar-2019 20:48:11.252 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/tomcat/webapps/docs] has finished in [11] ms
13-Mar-2019 20:48:11.252 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/tomcat/webapps/manager]
13-Mar-2019 20:48:11.267 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/tomcat/webapps/manager] has finished in [15] ms
13-Mar-2019 20:48:11.273 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
13-Mar-2019 20:48:11.288 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["https-openssl-nio-8443"]
13-Mar-2019 20:48:11.303 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
13-Mar-2019 20:48:11.309 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [9,539] milliseconds


See "SOLVED - Apache/Tomcat/AJP and Subdirectories"