Prerequisites and system requirements

November 14, 2023

Suggested minimum configuration

The following table shows suggested minimum configurations for development and production environments.

  Development Production
Processor Dual Core Quad Core
Memory 4 GB RAM (2 GB RAM for Jahia) 8 GB RAM (4 GB RAM for Jahia)
Disk space 5 GB 100 GB

Java Virtual Machine (JVM)

Jahia requires the Java Development Kit (JDK) package to run on your environment. Jahia 8 is compatible with the following JDK versions:

  • OpenJDK 11
  • Oracle JDK 11
  • OpenJDK 8
  • Oracle JDK 8

You can verify the current installed version of Java by entering the following command line at the prompt in your system:

java -version

You must set the JAVA_HOME environment variable to the JDK installation directory.

Resources are available online to show you how to installing a JDK:

Database

Jahia Enterprise Distribution is distributed by default with the Sun Java DB/Apache Derby database engine. For getting started or rapid prototyping purposes, you can use the provided database as is. In production or for developing an advanced project, use a standalone database instead. This section addresses only the mandatory configurations. Please refer to Fine tuning your Jahia server before going live.

Your database should be UTF-8 compliant. Have this in mind when creating a new database for Jahia. Default settings allow Jahia to run on an embedded Apache Derby, or standalone PostgreSQL, MySQL, MariaDB, Microsoft SQL Server and Oracle (supported versions are mentioned in the supported stack). During the Jahia installation, you will have to provide the URL to the database you have created for Jahia (this does not apply if using the embedded Apache Derby). These connection strings are different for each database.

Jahia may detect bugs in certain DB versions which would cause errors in Jahia. Jahia performs validations during installation which will not allow installing Jahia with these database versions.

MySQL

The default database URL (the connection string) for MySQL is:

jdbc:mysql://localhost/jahia?useUnicode=true&character Encoding=UTF-8&useServerPrepStmts=false

where localhost should be replaced by the fully qualified domain name (for example,  mysql.mydomain.com) or IP address of the MySQL server if it is not located on the same machine as the Jahia server, and jahia is just the default name of the database where Jahia tables will be created. If your MySQL server is not running on the standard port (3306), you should add :port after the domain name, where port is the port number. Jahia is using InnoDB engine for its database engine on MySQL, so be sure that you have configured your MySQL for InnoDB.

Here are some default configuration options for your database to put in your my.cnf or my.ini file:

#
# * InnoDB
#
# InnoDB is enabled by default with a 10 MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
#
# You can write your other MySQL server options here
# ...
# Data files must be able to hold your data and indexes.
# Make sure that you have enough free disk space.
innodb_data_file_path = ibdata1:100M:autoextend
#
# Set buffer pool size to 50-80% of your computer's memory
innodb_buffer_pool_size=1024M
innodb_additional_mem_pool_size=256M
#
# Set the log file size to about 25% of the buffer pool size
innodb_log_file_size=256M
innodb_log_buffer_size=64M
#
innodb_flush_log_at_trx_commit=1
Important: Remember to change the value of max_allowed_packet!

max_allowed_packet has to be at least set to 100M, otherwise Jahia will prohibit installation. If you have chosen to store the files in the database, the value should be at least the same size as the biggest file that will be uploaded on your server. Said differently, your users won’t be able to upload any file bigger than the size you specify here. You should also configure jahiaFileUploadMaxSize in WEB-INF/etc/config/jahia.properties accordingly. The Jahia limitation should not be bigger than the database limitation, otherwise the Jahia UIs will allow files to be uploaded that the database will not be able to store.

max_allowed_packet = 1024M

PostgreSQL

The default database URL (the connection string) for PostgreSQL is:

jdbc:postgresql://localhost:5432/jahia

where jahia is the default name of the database where Jahia tables will be created. If your PostgreSQL server is located on a distant computer and/or on a non-default port (5432), adjust the connection URL accordingly. Make sure your PostgreSQL server is accepting TCP connections. Refer to your database documentation for detailed instructions on how to configure PostgreSQL to accept TCP connections.

An issue can occur when using the VACUUMLO maintenance and cleanup command on the database side. This action is used to free space inside the database by removing unreferenced objects inside the pg_largeobject large objects fields table. Because of the way the Jahia database creation schema is designed, the command may incorrectly identify some large objects inside the pg_largeobject table as unreferenced when these objects are actually in use. When running the VACUUMLO command, PostgreSQL may delete these large objects from the database if they are identified as not referenced anymore from any of the other tables, even though they actually are in use. This can have an unexpected effect on the internal functioning of Jahia.

To run VACUUMLO safely against Jahia schema, you must first execute an additional step. Before running the VACUUMLO command, you must create a new DB materialized view using the following SQL script:

create materialized view jahia_oid as
select externalid::oid as id from jahia_external_mapping
union select expression::oid as id from jbpm_boolean_expression
union select body::oid as id from jbpm_email_header
union select "text"::oid as id from jbpm_i18ntext
union select "text"::oid as id from jbpm_task_comment
union select entry_path::oid as id from jahia_contenthistory
union select cndfile::oid as id from jahia_nodetypes_provider;

This will collect the OID values form Jahia tables into a dedicated view. After that you can run the VACUUMLO command which will clean up the orphaned large objects. Each additional time that you run the VACUUMLO command, you must first refresh the view.

refresh materialized view jahia_oid

Oracle

Jahia Enterprise Distribution also comes with JDBC drivers for Oracle. The default database URL (the connection string) for Oracle is:

jdbc:oracle:thin:@localhost:1521:jahia

where localhost should be replaced by the fully qualified domain name (for example,  oracle.mydomain.com) or the IP address of the Oracle Server if it is not located on the same machine as the Jahia server, and jahia is the default name of the database where Jahia tables will be created. 1521 is the standard port for Oracle. If you Oracle server is running on a different port, change it here.

Microsoft SQL Server

Jahia Enterprise Distribution is provided with JDBC drivers for Microsoft SQL Server. The default database URL (the connection string) for Microsoft SQL Server is:

jdbc:sqlserver://localhost;databaseName=jahia

where localhost should be replaced by the fully qualified domain name (for example, sqlserver.mydomain.com) or the IP address of the Microsoft SQL Server if it is not located on the same machine as the Jahia server, and jahia is the default name of the database where Jahia tables will be created. If your Microsoft SQL Server is not running on the standard port (1433), add :port after the domain name, where port is the port number, for example:

jdbc:sqlserver://localhost:port;databaseName=Jahia

Tomcat and Catalina environment variables

Ensure that you do not have TOMCAT_HOME and CATALINA_HOME environment variables set.

About frameworks used by Jahia

For more information about frameworks used by Jahia, see Jahia embedded frameworks.