Magnolia 5.7 reached extended end of life on May 31, 2022. Support for this branch is limited, see End-of-life policy. Please note that to cover the extra maintenance effort, this EEoL period is a paid extension in the life of the branch. Customers who opt for the extended maintenance will need a new license key to run future versions of Magnolia 5.7. If you have any questions or to subscribe to the extended maintenance, please get in touch with your local contact at Magnolia.

A WAR file is provided for the Apache Tomcat installation that contains many of the files needed for Magnolia. When the WAR file is deployed, the files in the WAR file are extracted and placed in the server's webapps directory. The remaining directories and files, including the repositories, are retrieved during the deployment and installation.

Deploy WAR

Tomcat should not be running when executing the following procedure.

To deploy WAR file:

  1. Download Enterprise Edition or Community Edition WAR file.
  2. Put WAR file into server's webapps directory.
  3. Adapt JVM heap size by editing the applicable file in the /bin directory in the Apache Tomcat directory:
    • On Unix, edit setenv.sh file and add:
      export CATALINA_OPTS="-server -Xmx1024m"
    • On Windows, create setenv.bat file and add:
      set CATALINA_OPTS=-server -Xmx1024m 
  4. (Optional) Use headless mode.

    When running on a system without a GUI, you should set the java.awt.headless system property to true.

    • On Unix:
      export CATALINA_OPTS="-server -Xmx1024m -Djava.awt.headless=true"
    • On Windows:
      set CATALINA_OPTS=-server -Xmx1024m-Djava.awt.headless=true
  5. Start Tomcat and wait until it is completely started.

When deploying the Magnolia WAR file Tomcat will need time and heap size to extract the file and bootstrap repositories. Once bootstrapped, Tomcat will not need that much heap anymore.

A directory containing the content of the WAR file and retrieved files is created in the server's webapps directory.

Tomcat configuration

If you need to configure Tomcat to use virtual hosts, data sources and so on, see the Tomcat Documentation.

Disclosing potentially sensitive information

By default, the magnolia-tomcat-barebone provided by Magnolia (get from Nexus) will not disclose potentially sensitive information, such as details about errors or server type and version.

Any custom error page for errors which can't be mapped to pages declared in web.xml can be changed accordingly by modifying the configuration in server.xml.

Examples

<Valve className="org.apache.catalina.valves.ErrorReportValve"
        errorCode.0="webapps/ROOT/errorOthers.html"
        showReport="false"
        showServerInfo="false" />
<Valve className="org.apache.catalina.valves.ErrorReportValve"
        errorCode.400="webapps/myMagnoliaApp/docroot/my400.html"
        showReport="false"
        showServerInfo="false" />

In Tomcat's log, an admin can still see what caused the error, though.

For instance in localhost_access_log_xxx.txt one could see:

0:0:0:0:0:0:0:1 - - [30/Jun/2022:09:50:53 +0200] "GET /magnoliaAuthor/()%7B%7D[] HTTP/1.1" 400 435

Using Tomcat with Apache

Magnolia recommends using Tomcat with Apache due to the high availability of skilled staff to configure Apache and the ability to configure Apache to serve static fallback content when Tomcat is down.

  • No labels