Prerequisites and system requirements
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
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
- Open the Control Panel, and the System option.
- 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).
- 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).
- Variable name:
- 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.
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.