Gentics CMS Package – SuSE Linux Enterprise Server 12 (SP2)

1 Installation

1.1 Download Gentics CMS

Download and extract the Gentics CMS .tar.gz archive. Set the environment variable PACKAGEDIR to use the commands in this guide:


  cd /var/tmp
  tar xfvz contentnode-package-5.25.10.tar.gz
  export PACKAGEDIR=/var/tmp/package

1.2 MariaDB Server Installation


  zypper install mariadb mariadb-client
  rcmysql start
  /usr/bin/mysql_secure_installation
  cp ${PACKAGEDIR}/dist/mysql/gentics_custom.cnf /etc/my.cnf.d
  service  mysql restart
  systemctl enable mysql

1.3 Install additional binary dependencies

Add the “SUSE Linux Enterprise Software Development Kit 12 SP2 X86_64” repository and install ImageMagick.


zypper install ImageMagick

Install other needed tools:


  zypper install wget curl sed psmisc sudo

1.4 Apache webserver installation and configuration


  # Apache & needed modules
  zypper install apache2 apache2-mod_php5

  # PHP 5.3
  zypper install php5 php5-curl php5-devel php5-pear php5-mysql php5-zlib php5-zip php5-mbstring php5-gd php5-openssl php5-APCu php5-ldap php5-imap

  cp ${PACKAGEDIR}/dist/sles/contentnode.conf /etc/apache2/vhosts.d/
  a2enmod proxy
  a2enmod proxy_ajp
  a2enmod dav
  a2enmod dav_fs
  a2enmod dav_lock
  a2enmod rewrite
  a2enmod php5
  a2enmod expires
  a2enmod headers

  # Overwrite default server configuration
  echo "Include /etc/apache2/conf.d/*.conf" > /etc/apache2/default-server.conf

  cp ${PACKAGEDIR}/dist/php/gtx_gcn_custom.ini /etc/php5/conf.d
  # Set your timezone in the gtx_gcn_custom.ini (default: Europe/Vienna)

  # Enable apache autostart
  systemctl enable apache2

1.5 Configure Firewall


  sysconf_addword /etc/sysconfig/SuSEfirewall2 FW_CONFIGURATIONS_EXT apache2
  sysconf_addword /etc/sysconfig/SuSEfirewall2 FW_CONFIGURATIONS_EXT apache2-ssl

  rcSuSEfirewall2 restart

1.6 Package setup


  # Move package files into place - This step must be omitted when doing a migration
  mv ${PACKAGEDIR}/Node /opt
  ln -s /opt/Node/ /Node

1.7 Java setup

Install OpenJDK 8:


zypper install java-1_8_0-openjdk
zypper install java-1_8_0-openjdk-devel
update-alternatives --config java
update-alternatives --config javac

or alternatively, if the above isn’t avilable, install Oracle Java SE Development Kit 8 tar.gz :


  cd /opt
  ln -s jdk1.8.0_111 java
  /usr/sbin/update-alternatives --install "/usr/bin/java" "java" "/opt/java/jre/bin/java" 40
  /usr/sbin/update-alternatives --install "/usr/bin/jar" "jar" "/opt/java/bin/jar" 40

Please verify that “java -version” prints the right Java version and that the command “jar” (part of JDK) exists in PATH.

1.8 Filesystem permission setup


  # Creation of mandatory groups and permissions
  groupadd node
  useradd -d /Node -g node node
  usermod -G node wwwrun
  usermod -G www node
  /Node/dist_setperm.sh

  # Add this sudo rule to your sudoers file. This allows the apache to execute processes with the node user.
  echo "wwwrun  ALL=(node)NOPASSWD: ALL" >   /etc/sudoers.d/gentics_cms
  chmod 600 /etc/sudoers.d/gentics_cms

  # Restart your apache
  service apache2 restart

1.9 Database setup and package configuration


  # Setup the database
  echo "CREATE DATABASE node_utf8" | mysql -u root -p
  echo "GRANT ALL PRIVILEGES ON node_utf8.* TO 'node_cms'@'localhost' identified by 'YOUR_PASSWORD'" | mysql -u root -p
  
  # Configure database settings
  vi /Node/etc/conf.d/node.db.conf
  # Example
  # $SETTINGS["server"] = "localhost:3306";
  # $SETTINGS["login"] = "node_cms";
  # $SETTINGS["pw"] = "YOUR_PASSWORD";

  sudo -u node php /Node/.node/setup-database.php

  echo "CREATE DATABASE contentrepository" | mysql -u root -p
  echo "GRANT ALL PRIVILEGES ON contentrepository.* TO 'node_cr'@'localhost' identified by 'YOUR_PASSWORD'" | mysql -u root  -p
  mysql -u root -p contentrepository < /Node/etc/dumps/contentrepository.sql

  # Add your license key to /Node/etc/tomcat/gentics/license.key
  echo "1111-2222-3333-4444-5555-6666-7777-8888" > /Node/etc/tomcat/gentics/license.key

  # Start the Tomcat
  /Node/bin/nodectl start

  # Add cronjob task for node user
  crontab -e -u node
  # * * * * *         /Node/bin/scheduler.sh >> /Node/node/log/scheduler.log 2>&1

You maybe also need to configure SSL properties in the $SETTINGS[“jdbcparameters”] setting. Read the MySQL SSL documentation for more information.

1.10 Login

A password for the node CMS user will be generated automatically. See: How can i set the password of the node CMS user?

1.11 Startup script


  cp ${PACKAGEDIR}/dist/sles/genticscms.service  /etc/systemd/system/genticscms.service
  systemctl enable genticscms

1.12 Cleanup


  # Remove no longer needed files
  rm -rf ${PACKAGEDIR}

1.13 Finalizing

Please also check the final recommendations and suggestions for additional information.

2 Migrating to the new package (introduced with 5.16.0)

This section will list a step by step guide to migrate your Gentics CMS installation to the new Gentics CMS package structure introduced in 5.16.0. After this migration, Gentics CMS will use the system distribution Apache and PHP.

Instead of migrating you can also do a new Gentics CMS installation and then move the database, the /Node/node/content/dbfiles and the node configuration, however this way is not documented at the moment.

The MySQL steps are only necessary if you are still using the MySQL-server from the old Gentics CMS package inside /Node, running on port 42006. The minimum MySQL server version should be 5.5.

2.1 Backup

Create a backup of your package installation and MySQL database (/Node directory)


  mysqldump --max_allowed_packet=512M -u root -h localhost -P 42006 -p node_utf8 > /Node/tmp/pre-update-node_utf8.sql
  mysqldump --max_allowed_packet=512M -u root -h localhost -P 42006 -p contentrepository > /Node/tmp/pre-update-cr.sql
  /Node/bin/nodectl stop
  cp -ra /Node /Node.pre-update

2.2 Update Gentics CMS

Update your Gentics CMS installation to 5.16.0 or newer.

2.3 Distribution update

Make sure your distribution is updated at least to the earliest supported version.

2.4 Download contentnode-package

  • Download the latest package .tar.gz file (see: Downloads) for the version you want to update to.
  • Extract the file in a temporary location (e.g: /var/tmp/).

We’ll use some files form the archive to augment the existing installation.


  cd /var/tmp
  tar xfvz contentnode-package-5.25.10.tar.gz
  export PACKAGEDIR=/var/tmp/package

2.5 Package MySQL migration

Please note that the package MySQL Server will no longer be supported. Install the MySQL database server according to the system specific installation. Dump your MySQL databases and migrate the data to the distribution MySQL Server. The Gentics CMS database user is stored in various stored procedured and triggers.

Please remove these procedures and triggers when the username and or the used connection ip / hostname changes because those elements contain a reference to the previously used login.

We highly recommend to host the MySQL Server for the Gentics CMS installation on the same system as Gentics CMS is running on.

It is advised to update the database settings (/etc/mysql) and restart the server before starting the MySQL migration.

2.6 Database migration


  # Create SQL Dump and delete old mysql installation
  mysqldump --max_allowed_packet=512M -u root -h 127.0.0.1 -P 42006 -p node_utf8 > /Node/tmp/node_utf8-postupdate.sql
  mysqldump --max_allowed_packet=512M -u root -h 127.0.0.1 -P 42006 -p contentrepository > /Node/tmp/cr-postupdate.sql
  /Node/bin/nodectl stop
  rm -rf /Node/mysql*

  # Update MySQL Server configuration
  cp ${PACKAGE}/dist/mysql/gentics_custom.cnf /etc/mysql/conf.d/
  /etc/init.d/mysql restart

  # Create the desired users and insert the data
  mysql> create database node_utf8;
  mysql> create database contentrepository;
  mysql> grant all privileges on node_utf8.* to 'node_cms'@'%' identified by 'pass';
  mysql> grant all privileges on contentrepository.* to 'node_cr'@'%' identified by 'pass';
  mysql> flush privileges;

  mysql -u root -p node_utf8 < /Node/tmp/node_utf8-postupdate.sql
  mysql -u root -p contentrepository < /Node/tmp/cr-postupdate.sql

  # Update your mysql settings in your /Node/etc/node.conf (or /Node/etc/conf.d/node.db.conf)
  vi /Node/etc/node.conf

Please keep in mind that it might be needed to update the Content.Repository connection settings within the Gentics CMS administration area. Those settings must be updated otherwise the publishing process will fail.

2.7 Package directory migration

The following folders and files are no longer needed and can be removed.


  rm -rf /Node/apache
  rm -rf /Node/httpd-2.2.22
  rm -rf /Node/var/httpd/cgi-bin
  rm /Node/etc/my.cnf
  rm -rf /Node/etc/httpd
  rm /Node/etc/httpd.custom.conf
  rm -rf /Node/etc/mysql
  rm -rf /Node/etc/php
  rm -rf /Node/var/http/httpd*
  rm -rf /Node/var/http/mysql

Sanitize the /Node/bin directory.


  cd /Node/bin
  rm -rf /Node/bin/*
  cp ${PACKAGEDIR}/Node/bin/nodectl .
  cp ${PACKAGEDIR}/Node/bin/env.sh .
  cp ${PACKAGEDIR}/Node/bin/scheduler.sh .
  cp ${PACKAGEDIR}/Node/bin/java.sh .

Please update your scheduler tasks if needed since some might use the /Node/bin/ tools (eg.: rsync)

Sanitize the /Node/lib directory.


  rm -rf /Node/lib
  cp -ra ${PACKAGEDIR}/Node/lib /Node/lib

Customize the node.conf file.


  mkdir -p /Node/etc/conf.d
  mv /Node/etc/node.conf /Node/etc/node.main.conf
  cp ${PACKAGEDIR}/Node/etc/node.conf /Node/etc/node.conf

From now on the node.conf should never be edited directly. Instead custom files should be added to the conf.d directory. The files should be grouped by functionality or feature. (e.g: conf.d/node.alohaeditor.conf, conf.d/features.conf, conf.d/node.db.conf)

2.8 Package Apache webserver migration

2.9 Additional migration steps


  # Add new apache vhosts inclusion files from the package
  cp -ra ${PACKAGEDIR}/Node/etc/apache /Node/etc

2.10 System changes

Remove the node_public group from the system. This group will no longer be used. When not removed the system will not be able to function correctly after the migration has been performed.


  cp ${PACKAGEDIR}/Node/dist_setperm.sh /Node/