Extension Installation

Extension Installation

In Lucee, there are multiple ways to install an extension. This recipe will show you all the possibilities along with their pros and cons.

Lucee Administrator

You can install an extension in the Lucee Administrator by navigating to Extensions/Applications in the Lucee (Server) Administrator and installing or uninstalling the extension you need.

Pros

  • No physical access to the server needed
  • User-friendly interface
  • Immediate feedback on the installation process

Cons

  • Manual process that is not easily repeatable
  • Requires access to the Lucee Administrator interface

deploy Directory

Simply copy the extension you want to install into the folder {lucee-installation}/lucee-server/deploy. Lucee will pick it up at startup or within a minute after startup and install it. You can find extensions to install under download.lucee.org.

Pros

  • Hot deployment on a running server possible with no restart needed (except for some extensions)
  • Can be automated with scripts

Cons

  • Requires physical or SSH access to the server
  • Some extensions may require a restart to work properly

.CFConfig.json Configuration (Lucee 6 Only)

With Lucee 6, you can define the extensions you need in the .CFConfig.json file that holds all your configurations.

{
    "extensions": [
        {
            "name": "Websocket",
            "id": "07082C66-510A-4F0B-B5E63814E2FDF7BE",
            "version": "1.0.0.11"
        },
        {
            "name": "Redis",
            "path": "/opt/lucee/extensions/redis.extension-3.0.0.51.lex",
            "id": "60772C12-F179-D555-8E2CD2B4F7428718"
        },
        {
            "name": "S3 Resource Extension",
            "id": "17AB52DE-B300-A94B-E058BD978511E39E",
            "path": "https://ext.lucee.org/s3-extension-2.0.1.25.lex"
        }
    ]
}

You can define the id and version like in the first example (name is always optional), or provide a local path to the extension. Lucee supports virtual filesystems, so you can also define a virtual filesystem path, such as "https", "s3", or "ftp".

On a fresh install of Lucee, Lucee will install the bundled extensions in addition to these extensions and update the .CFConfig.json file. On an existing installation, Lucee will remove all extensions installed that are not on this list.

With Lucee 6.1, the "id" attribute is no longer necessary when you define a path.

Important Notes for Multi-Mode (Server and Web Admin Enabled)

  • If you run Lucee in Multi-Mode (Server and Web Admin enabled), you need to add the extension configuration to the root of the server context JSON file located at {lucee-installation}/lucee-server/context/.CFConfig.json and not in the web context JSON file.

Pros

  • You can automate the process
  • Easy to manage configurations and extensions in one place

Cons

  • No hot deployment
  • Requires configuration file management

Environment Variable / System Property

You can also define the extension in an environment variable or system property. This option is similar to the .CFConfig.json option.

Define a comma-separated list of Lucee extensions to install when starting up. This can be a simple list of IDs, in which case the latest versions will be installed:

99A4EF8D-F2FD-40C8-8FB8C2E67A4EEEB6, 671B01B8-B3B3-42B9-AC055A356BED5281, 2BCD080F-4E1E-48F5-BEFE794232A21AF6

Or with more specific information like version and label (for better readability):

99A4EF8D-F2FD-40C8-8FB8C2E67A4EEEB6;name=MSSQL;label=MS SQL Server;version=12.2.0.jre8, 671B01B8-B3B3-42B9-AC055A356BED5281;name=PostgreSQL;label=PostgreSQL;version=42.7.3, 2BCD080F-4E1E-48F5-BEFE794232A21AF6;name=JDTsSQL;label=jTDS (MSSQL);version=1.3.1

You can also define a path to the extension in the same way as with .CFConfig.json:

60772C12-F179-D555-8E2CD2B4F7428718;name=Redis;path=/opt/lucee/extensions/redis.extension-3.0.0.51.lex, 17AB52DE-B300-A94B-E058BD978511E39E;name=S3 Resource Extension;path=https://ext.lucee.org/s3-extension-2.0.1.25.lex

Setting System Property

To set a system property for Lucee extensions, you can use the -D option with the Java command that starts your Lucee server.

Example command to start Lucee with system properties:

java -Dlucee.extensions="99A4EF8D-F2FD-40C8-8FB8C2E67A4EEEB6;name=MSSQL;version=12.2.0.jre8,671B01B8-B3B3-42B9-AC055A356BED5281;name=PostgreSQL;version=42.7.3" -jar lucee.jar

Pros

  • Can be used in various deployment environments (e.g., Docker, cloud services)
  • Supports automation and infrastructure as code practices

Cons

  • No hot deployment
  • Requires setting environment variables or system properties, which might be complex in some environments

Logging and Troubleshooting

If you encounter issues while installing extensions, you can check the log at {lucee-installation}/lucee-server/context/logs/deploy.log not only for any errors reported but also to see what actions were performed. This log is by default set to info level and should contain all details about the installation process.

Conclusion

Lucee offers several methods to install extensions, each with its own advantages and disadvantages. Choose the method that best fits your deployment and management workflow:

  • Lucee Administrator: Best for manual, ad-hoc installations.
  • deploy Directory: Good for automated deployments with script support.
  • .CFConfig.json Configuration: Ideal for managing configurations and extensions together.
  • Environment Variable / System Property: Suitable for modern deployment environments like Docker and cloud services.

By understanding the pros and cons of each method, you can effectively manage Lucee extensions in your environment.

See also