Manage your Dispatcher Configurations

Using Cloud Manager to Deploy Dispatcher Configuration Files

Cloud Manager is able to deploy web server and Dispatcher configuration files assuming they are stored in the Git Repository, in addition to normal AEM content packages.

To take advantage of this capability, the Maven build should produce a zip file which contains at least two directories - conf and conf.d. This zip file can be produced using the maven-assembly-plugin. Projects generated by Cloud Manager using the built-in wizard have the correct Maven project structure created as part of the project creation. This is the recommended path for new Managed Services customers.

Upon deployment to a dispatcher Instance, the contents of these directories will overwrite the contents of these directories on the Dispatcher instance. Since web server and Dispatcher configuration files frequently require environment-specific information, in order for this capability to be used correctly, you will first need to work with your Customer Success Engineers (CSE) to set these environment variables in /etc/sysconfig/httpd.

Steps for Configuring Dispatcher For Existing Managed Services Customers

Follow the steps below to complete the initial process in configuring Dispatcher:

  1. Obtain current production configuration files from your CSE.

  2. Remove hard-coded environment-specific data (for example, publish renderer IP) and replace with variables.

  3. Define required variables in key-value pairs for each target Dispatcher and request your CSE to add to /etc/sysconfig/httpd on each instance.

  4. Test the updated configurations on your stage environment, then request your CSE to deploy to production.

  5. Commit files to Git Repository.

  6. Deploy through Cloud Manager.

NOTE

Migrating Dispatcher and web server configurations to Git Repository may be done during Cloud Manager on-boarding, but can also be done at a later point in time.

Example

The specific file and directory structure may vary based on the specifics of your project, but this example should provide a concrete guide to how to structure your project to include Apache and Dispatcher Configurations.

  1. Create a subdirectory named dispatcher.

    NOTE

    Feel free to use any name here, but the directory name created in this step must be the same as the name used in Step 6.

  2. This subdirectory will contain a Maven module which builds the Dispatcher zip file using the Maven Assembly Plugin. To start this, in the dispatcher directory, create a pom.xml file with this content, changing the parent reference, artifactId, and name as necessary.

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <!-- reference to your parent pom -->
        </parent>
    
        <artifactId>dispatcher</artifactId> <!-- feel free to change this -->
        <packaging>pom</packaging>
        <name>dispatcher</name> <!-- feel free to change this -->
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>3.1.0</version>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals><goal>single</goal></goals>
                            <configuration>
                                <descriptors>
                                    <descriptor>assembly.xml</descriptor>
                                </descriptors>
                                <appendAssemblyId>false</appendAssemblyId>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </project>
    
    NOTE

    As in Step 1, the artifactId and name here can be other values if you want; dispatcher here just an example used for simplicity.

  3. The Maven Assembly Plugin requires a descriptor to define how the zip file is created. To create this descriptor, create a file (again, in the dispatcher subdirectory) named assembly.xmlwith this content. Note that this file name is referenced on line 26 in the pom.xml file above.

    <assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
      <id>distribution</id>
      <formats>
        <format>zip</format>
      </formats>
      <includeBaseDirectory>false</includeBaseDirectory>
      <fileSets>
        <fileSet>
          <directory>${basedir}/src</directory>
          <includes>
            <include>**/*</include>
          </includes>
          <outputDirectory></outputDirectory>
        </fileSet>
      </fileSets>
    </assembly>
    
  4. Now, create a subdirectory named src (as referenced in the assembly descriptor above on line 11) inside the dispatcher subdirectory to store the actual Apache and Dispatcher configurations. Within this src directory, create directories named conf, conf.d, conf.dispatcher.d, and conf.modules.d.

  5. Now you can populate the conf, conf.d, conf.dispatcher.d, and conf.modules.d directories with your configuration files. For example, the default configuration consists of these files and symbolic links.

    dispatcher
    ├── assembly.xml
    ├── pom.xml
    └── src
        ├── conf
        │  ├── httpd.conf
        │  └── magic
        ├── conf.d
        │  ├── README
        │  ├── autoindex.conf
        │  ├── available_vhosts
        │  │  ├── aem_author.vhost
        │  │  ├── aem_flush.vhost
        │  │  ├── aem_health.vhost
        │  │  ├── aem_lc.vhost
        │  │  └── aem_publish.vhost
        │  ├── dispatcher_vhost.conf
        │  ├── enabled_vhosts
        │  │  ├── aem_author.vhost -> ../available_vhosts/aem_author.vhost
        │  │  ├── aem_flush.vhost -> ../available_vhosts/aem_flush.vhost
        │  │  └── aem_publish.vhost -> ../available_vhosts/aem_publish.vhost
        │  ├── rewrites
        │  │  ├── base_rewrite.rules
        │  │  └── xforwarded_forcessl_rewrite.rules
        │  ├── userdir.conf
        │  ├── variables
        │  │  └── ams_default.vars
        │  ├── welcome.conf
        │  └── whitelists
        │      └── 000_base_whitelist.rules
        ├── conf.dispatcher.d
        │  ├── available_farms
        │  │  ├── 000_ams_author_farm.any
        │  │  ├── 001_ams_lc_farm.any
        │  │  └── 999_ams_publish_farm.any
        │  ├── cache
        │  │  ├── ams_author_cache.any
        │  │  ├── ams_author_invalidate_allowed.any
        │  │  ├── ams_publish_cache.any
        │  │  └── ams_publish_invalidate_allowed.any
        │  ├── clientheaders
        │  │  ├── ams_author_clientheaders.any
        │  │  ├── ams_common_clientheaders.any
        │  │  ├── ams_lc_clientheaders.any
        │  │  └── ams_publish_clientheaders.any
        │  ├── dispatcher.any
        │  ├── enabled_farms
        │  │  ├── 000_ams_author_farm.any -> ../available_farms/000_ams_author_farm.any
        │  │  └── 999_ams_publish_farm.any -> ../available_farms/999_ams_publish_farm.any
        │  ├── filters
        │  │  ├── ams_author_filters.any
        │  │  ├── ams_lc_filters.any
        │  │  └── ams_publish_filters.any
        │  ├── renders
        │  │  ├── ams_author_renders.any
        │  │  ├── ams_lc_renders.any
        │  │  └── ams_publish_renders.any
        │  └── vhosts
        │      ├── ams_author_vhosts.any
        │      ├── ams_lc_vhosts.any
        │      └── ams_publish_vhosts.any
        └── conf.modules.d
            ├── 00-base.conf
            ├── 00-dav.conf
            ├── 00-lua.conf
            ├── 00-mpm.conf
            ├── 00-proxy.conf
            ├── 00-systemd.conf
            ├── 01-cgi.conf
            └── 02-dispatcher.conf
    
  6. Finally, in the pom.xml file in the root of your project, add a <module> element to include the dispatcher module.

    For example, if your existing module list is

        <modules>
            <module>core</module>
            <module>ui.apps</module>
            <module>ui.content</module>
        </modules>
    

    You should change it to

        <modules>
            <module>core</module>
            <module>ui.apps</module>
            <module>ui.content</module>
            <module>dispatcher</module>
        </modules>
    
    NOTE

    As noted in Step 1, the value of the <module> element must match the directory name created.

  7. Finally, to test, run mvn clean package in the project root directory. You should see lines like this in the output

    [INFO] --- maven-assembly-plugin:3.1.0:single (default) @ dispatcher 
    

[INFO] Reading assembly descriptor: assembly.xml
[INFO] Building zip: /Users/me/mycompany/dispatcher/target/dispatcher-1.0-SNAPSHOT.zip


You can also unzip this file to view its contents.

```shell
$ unzip -l dispatcher/target/dispatcher-1.0-SNAPSHOT.zip
Archive:  dispatcher/target/dispatcher-1.0-SNAPSHOT.zip
  Length      Date    Time    Name
---------  ---------- -----   -
---
        0  09-12-2018 12:53   conf.modules.d/
        0  10-19-2018 10:38   conf.dispatcher.d/
        0  09-12-2018 12:53   conf.dispatcher.d/available_farms/
        0  09-12-2018 12:53   conf.dispatcher.d/filters/
        0  09-12-2018 12:53   conf.dispatcher.d/renders/
        0  09-12-2018 12:53   conf.dispatcher.d/cache/
        0  09-12-2018 12:53   conf.dispatcher.d/clientheaders/
        0  09-12-2018 12:53   conf.dispatcher.d/enabled_farms/
        0  09-12-2018 12:53   conf.dispatcher.d/vhosts/
        0  09-12-2018 12:53   conf.d/
        0  09-12-2018 12:53   conf.d/rewrites/
        0  09-12-2018 12:53   conf.d/whitelists/
        0  09-12-2018 12:53   conf.d/variables/
        0  11-01-2018 13:53   conf.d/enabled_vhosts/
        0  09-12-2018 12:53   conf.d/available_vhosts/
        0  09-12-2018 12:53   conf/
       88  09-12-2018 12:53   conf.modules.d/00-systemd.conf
     4913  09-12-2018 12:53   conf.dispatcher.d/available_farms/999_ams_publish_farm.any
      152  09-12-2018 12:53   conf.dispatcher.d/renders/ams_lc_renders.any
      490  09-12-2018 12:53   conf.dispatcher.d/clientheaders/ams_common_clientheaders.any
     1727  09-12-2018 12:53   conf.d/rewrites/base_rewrite.rules
       36  09-12-2018 12:53   conf.d/enabled_vhosts/aem_author.vhost
    11753  09-12-2018 12:53   conf/httpd.conf
      957  09-12-2018 12:53   conf.modules.d/00-proxy.conf
      944  09-12-2018 12:53   conf.dispatcher.d/available_farms/001_ams_lc_farm.any
      220  09-12-2018 12:53   conf.dispatcher.d/cache/ams_author_invalidate_allowed.any
       43  09-12-2018 12:53   conf.dispatcher.d/enabled_farms/999_ams_publish_farm.any
      516  09-12-2018 12:53   conf.d/welcome.conf
       37  09-12-2018 12:53   conf.d/enabled_vhosts/aem_publish.vhost
    13077  09-12-2018 12:53   conf/magic
       96  09-12-2018 12:53   conf.modules.d/02-dispatcher.conf
     2601  09-12-2018 12:53   conf.dispatcher.d/available_farms/000_ams_author_farm.any
      837  09-12-2018 12:53   conf.dispatcher.d/cache/ams_author_cache.any
       42  09-12-2018 12:53   conf.dispatcher.d/enabled_farms/000_ams_author_farm.any
     2926  09-12-2018 12:53   conf.d/autoindex.conf
     2555  09-12-2018 12:53   conf.d/available_vhosts/aem_lc.vhost
       41  09-12-2018 12:53   conf.modules.d/00-lua.conf
     2234  09-12-2018 12:53   conf.dispatcher.d/filters/ams_publish_filters.any
      220  09-12-2018 12:53   conf.dispatcher.d/cache/ams_publish_invalidate_allowed.any
      402  09-12-2018 12:53   conf.dispatcher.d/dispatcher.any
      573  09-12-2018 12:53   conf.d/whitelists/000_base_whitelist.rules
      871  09-12-2018 12:53   conf.d/available_vhosts/aem_flush.vhost
      139  09-12-2018 12:53   conf.modules.d/00-dav.conf
      742  09-12-2018 12:53   conf.dispatcher.d/filters/ams_author_filters.any
      557  09-12-2018 12:53   conf.dispatcher.d/cache/ams_publish_cache.any
      105  09-12-2018 12:53   conf.dispatcher.d/vhosts/ams_lc_vhosts.any
      101  09-12-2018 12:53   conf.dispatcher.d/vhosts/ams_publish_vhosts.any
     3582  09-12-2018 12:53   conf.d/dispatcher_vhost.conf
     2529  09-12-2018 12:53   conf.d/available_vhosts/aem_publish.vhost
      742  09-12-2018 12:53   conf.modules.d/00-mpm.conf
       88  09-12-2018 12:53   conf.dispatcher.d/filters/ams_lc_filters.any
      177  09-12-2018 12:53   conf.dispatcher.d/clientheaders/ams_lc_clientheaders.any
      366  09-12-2018 12:53   conf.d/README
     2723  09-12-2018 12:53   conf.d/available_vhosts/aem_author.vhost
     3739  09-12-2018 12:53   conf.modules.d/00-base.conf
      138  09-12-2018 12:53   conf.dispatcher.d/renders/ams_author_renders.any
       44  09-12-2018 12:53   conf.dispatcher.d/clientheaders/ams_publish_clientheaders.any
      112  09-12-2018 12:53   conf.dispatcher.d/vhosts/ams_author_vhosts.any
      580  09-12-2018 12:53   conf.d/variables/ams_default.vars
       35  09-12-2018 12:53   conf.d/enabled_vhosts/aem_flush.vhost
     1252  09-12-2018 12:53   conf.d/userdir.conf
      451  09-12-2018 12:53   conf.modules.d/01-cgi.conf
      321  09-12-2018 12:53   conf.dispatcher.d/renders/ams_publish_renders.any
      170  09-12-2018 12:53   conf.dispatcher.d/clientheaders/ams_author_clientheaders.any
      220  09-12-2018 12:53   conf.d/rewrites/xforwarded_forcessl_rewrite.rules
     1753  09-12-2018 12:53   conf.d/available_vhosts/aem_health.vhost
---------                     ----
---
    69017                     66 files

On this page

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now