Prerequisites and system requirements

November 14, 2023

Minimal system requirements

Please find below the minimum system requirements for Jahia - Enterprise Distribution.

OS

  • Windows
  • Linux
  • Solaris
  • Mac OSX

Suggested Min. Development Configuration

  • Dual Core 2GHz or +
  • 2 GB RAM
  • 5 GB HDD

Suggested Min. Production Environments

  • Quad Core (64 bit CPU and OS)
  • 4 GB RAM
  • 100 GB HDD
Warning: 32 bit JVM are limited in max memory (1.5 GB under Windows - 2 or 3 GB under Linux/Solaris). Jahia tries to cache a maximum of data to boost performance. So, we highly recommend 64 bit environments with enough memory available at least for all production environments.

Java Virtual Machine (JVM)

To run Jahia, you first need to install an Oracle’s Java SE (Java Platform, Standard Edition) 8 on your system. Jahia requires the JDK (Java Development Kit) package to run. The JRE (Java Runtime Environment) only won’t be sufficient.

To check if Java is already installed on your system, type the following command line at the prompt of your system:

java -version

A message indicates the Java version that is installed on your system. Note that the same message displays if you only have a JRE installed. If an error is returned, you probably don't have a Java Platform installed. If you have installed other versions of the Java Platform, Java Runtime Environment or other Java servers on your system, we recommend that you run a few checks before starting the installation to be sure that Jahia will run without problems. If you need to obtain and install a new Java SE, you can find both Linux and Windows versions on the Oracle Web site: http://www.oracle.com/technetwork/java/javase/downloads/index.html.

To install a Java Virtual Machine on a Windows system, you require administrator rights on your computer. Please contact your system administrator if you don’t have sufficient permissions.

It is recommended that the installation path of the Java Platform does not contain any spaces. For example, change the default C:\Program Files\Java\jdk1.8.0_xx, where “xx” is the release number, to a path without spaces such as C:\Java\jdk1.8.0_xx. After installing, you must set the JAVA_HOME environment variable to the directory where you have installed the Java SE. Note that Jahia will check that this variable is correctly set at run time, and stop if it is not the case. To setup this variable, follow the steps described in next sections.

Under Windows

  1. Open the Control Panel, and the System option.
  2. In Windows 7 and 10: Control Panel _ System and Security _ System _ Advanced System Settings. Then, depending on your system:
    • Select the Advanced tab and click on the Environment Variables button (Windows 10/7/Vista/XP/2000).
    • Select the Properties tab and click on the Environment button (Windows NT).
  3. Click on New in the System variables section to add a new environment variable. Enter the following information:
    • Variable name: JAVA_HOME
    • Variable value: c:\Java\jdk1.8.0_xx (replace this value with the correct path).
  4. Click OK to validate your entry.

The Java Virtual Machine should now be correctly setup. Note that on Windows NT you will need to restart your computer to apply the changes.

Under Linux

Set the JAVA_HOME variable to the root directory of your JDK installation. Both examples below suppose you have installed the JDK version 1.8 in your /usr/java directory. The classpath is usually set by typing: In bash or ksh:

export JAVA_HOME=usr/java/jdk1.8.0_xx

In csh or tcsh:

export JAVA_HOME usr/java/jdk1.8.0_xx

Under Solaris

Set the JAVA_HOME variable to the root directory of your JDK installation. Both examples below suppose you have installed the JDK version 1.8 in your /usr/java directory. The classpath is usually set by typing: In ksh:

export JAVA_HOME=/usr/java

In sh:

JAVA_HOME=/usr/java;export

In csh or tcsh:

setenv JAVA_HOME /usr/java

JDK Supported versions

Jahia fully supports Oracle JDK 8 and OpenJDK 8. DX 7.3.1.0+ and Jahia 7.3.2+ can also run on Oracle JDK 11 and OpenJDK 11, using the default G1GC garbage collection policy, with the following limitations:

  • JDK 11 features are not supported. In order to compile modules using JDK 11, you need to use JDK 8 as target bytecode version.
  • The compression (minification) of static assets (CSS/Javascript) is not available.
Note: When switching from JDK 8 to JDK 11, always perform tests on a pre-production environment before activating JDK 11 on your production environment.

Database

Jahia Enterprise Distribution is by default distributed with the Sun Java DB/Apache Derby database engine. If you want to get started quickly or for rapid prototyping purposes, you can use the provided database as is. But in production or for developing a serious project, you should 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 are currently already predefined to allow Jahia to run on Sun Java DB/Apache Derby, PostgreSQL, MySQL, MariaDB and the Enterprise Distribution also supports Microsoft SQL Server and Oracle. During the Jahia installation, you will have to provide the URL to the database you have created for Jahia. 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&characterEncoding=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 be put in your my.cnf or my.ini file:

#
# * InnoDB
#
# InnoDB is enabled by default with a 10MB 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

max_allowed_packet has to be at least set to 100M, otherwise Jahia will prohibit installation. In case you have chosen to store the files in the database, it 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

MySQL on Mac OS X

Please note that for MySQL versions from 5.5.9 to 5.5.12 on MacOSX, you must set the value of lower_case_table_names to 1 (http://bugs.mysql.com/bug.php?id=60309).

PostgreSQL

The default database URL (the connection string) for PostgreSQL 9.x 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), please, 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. These drivers work with Oracle 11g and above. 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, please change it here.

Microsoft SQL Server

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), you should add :port after the domain name, where port is the port number, for example:

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

Other preparations and checks

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