Deploying implementations using Linux
If you are looking for information on how to install or update your Gentics Content Management Platform, please refer to the installation or update guide. |
Gentics CMS
Gentics CMS implementation
To deploy new implementations replace the Gentics CMS Devtool packages with your latest version and run the Gentics CMS Devtool synchronisation.
Gentics CMS Devtool sync bash script
This bash script can be used to automate the Gentics CMS Devtool synchronisation on deployment.
usage info for syncPackages.sh
This will sync cms devtool packages from fileystem to CMS.
usage: syncPackages.sh [-c | --cmsuri <gentics cms uri>] [-u | --user <username>] [-p | --password <password>] [-z | --zip <path>] [-H | --header <html header value>]
Example:
syncPackages.sh --cmsuri http://localhost:80 --user node --password node
OR for interactive mode:
syncPackages.sh -i
syncPackages.sh
#!/bin/bash
set -o nounset
set -o errexit
packages="reference"
cmsuri=
defaultCmsUri="http://localhost"
user=
defaultUser="node"
password=
defaultPassword="node"
zippath=
header=
interactive=
# print usage hint
function usage() {
echo "This will sync cms devtool packages from fileystem to CMS."
echo
echo "usage: $0 [-c | --cmsuri <gentics cms uri>] [-u | --user <username>] [-p | --password <password>] [-z | --zip <path>] [-H | --header <html header value>]"
echo
echo "Example:"
echo " $0 --cmsuri http://localhost:80 --user node --password node"
echo "OR for interactive mode:"
echo " $0 -i"
exit 1
}
# handle params as options
if [[ "$#" -ge 1 ]] ; then
while [ "$1" != "" ]; do
case $1 in
-c | --cmsuri )
shift
cmsuri=$1
;;
-u | --user )
shift
user=$1
;;
-p | --password )
shift
password=$1
;;
-z | --zip )
shift
zippath=$1
;;
-H | --header )
shift
header=$1
;;
-i | --interactive )
interactive=1
break
;;
--help )
usage
exit
;;
* )
usage
exit 1
esac
shift
if [[ $# -lt 1 ]]; then
break
fi
done
fi
# setup interactive mode
if [ "$interactive" = "1" ]; then
response=
echo -n "Enter URL to Gentics CMS [$defaultCmsUri ] > "
read response
if [ -n "$response" ]; then
cmsuri=$response
else
cmsuri=$defaultCmsUri
fi
echo -n "Enter username [$defaultUser] > "
read response
if [ -n "$response" ]; then
user=$response
else
user=$defaultUser
fi
echo -n "Enter password [$defaultPassword] > "
read response
if [ -n "$response" ]; then
password=$response
else
password=$defaultPassword
fi
echo -n "Enter path where a zip file of the packages should be created (optional, not set by default) > "
read response
if [ -n "$response" ]; then
zippath=$response
fi
echo -n "Enter additional Header (optional, not set by default) > "
read response
if [ -n "$response" ]; then
header=$response
fi
fi
# call REST API of Gentics CMS to sync DevToolPackages
function syncPackages () {
local cmsuri=$1
local user=$2
local password=$3
local zippath=
local header=
if [[ -n "${5-}" ]]; then
header="${5}"
fi
if [[ -n "${4-}" ]]; then
zippath="${4}"
if ! [ -x "$(command -v zip)" ]; then
echo 'Command zip not found, creation of packages.zip will be skipped'
else
echo 'Creating zip ...'
# check if this is run on a stage environment
if [ -d "/cms/packages" ]; then
zip -r -q "${zippath}" /cms/packages
else
# check if we are in local environment
if [ -d "packages" ]; then
zip -r -q"${zippath}" packages
else
echo 'packages directory not found at "/cms/packages" or "packages" - skipping'
fi
fi
fi
fi
echo 'Starting Gentics CMS DevTool packages sync ...'
local resLogin=$(curl --noproxy "localhost" -vks -c /tmp/cookie-jar -H "${header}" -H "Content-Type: application/json" -X POST -d '{"login" : "'$user'", "password" : "'$password'"}' $cmsuri/rest/auth/login)
local sid=$(echo $resLogin | sed -e 's/.*sid.*:.*"\(.*\)".*/\1/')
echo "sid $sid"
for packagename in $packages
do
local resSyncPackage=$(curl --noproxy "localhost" -vks -b /tmp/cookie-jar -H "${header}" -w "%{http_code}" -o /dev/null -X PUT $cmsuri/rest/devtools/packages/$packagename/fs2cms?sid=$sid)
echo "response for syncing package '$packagename': $resSyncPackage"
if [ "$resSyncPackage" != "200" ] && [ "$resSyncPackage" != "409" ]; then
echo
echo "Failed to set sync status - try this manually in CMS and debug"
echo "check /cms/logs/devtools.log for more info"
exit 1
else
echo
echo 'DONE syncing Gentics CMS DevTool packages'
fi
done
exit
}
if [[ -n "$cmsuri" ]] && [[ -n "$user" ]] && [[ -n "$password" ]] && [[ -n "$zippath" ]] && [[ -n "$header" ]] ; then
# use quotes for $header, as this may contain spaces
syncPackages $cmsuri $user $password $zippath "$header"
fi
if [[ -n "$cmsuri" ]] && [[ -n "$user" ]] && [[ -n "$password" ]] && [[ -n "$header" ]] ; then
# use quotes for $header, as this may contain spaces
syncPackages $cmsuri $user $password 0 "$header"
fi
if [[ -n "$cmsuri" ]] && [[ -n "$user" ]] && [[ -n "$password" ]] && [[ -n "$zippath" ]] ; then
syncPackages $cmsuri $user $password $zippath
fi
if [[ -n "$cmsuri" ]] && [[ -n "$user" ]] && [[ -n "$password" ]] ; then
syncPackages $cmsuri $user $password
fi
usage
change this to your package name, this can also be a space seperated list of package names |
Gentics Portal | php
When installing Gentics Portal | php from the source project, the only required setup for the portal is to install its dependencies following the documentation of the project which should be similar or an extension of the Demo project.
Gentics Portal | java
For your portal implementation there are two types of changes to consider:
- Changes in the configuration, template and GraphQL files
For an example setup where these files could be located, see the respective section about the portal installation.
- Changes in the portal application
To deploy changes in your custom Java code, rebuild the portal and replace the portal.jar at the location configured in the service specification.