The right infrastructure for an awesome portal

1 Standard installation (webserver, database, cache) on Linux

This examples are only for Debian Linux.

For the operating system, here is list of shell commands for installing a basic LAMP stack:


# Apache2 as webserver:
apt-get install apache2
# Activate Apache2 rewrite module:
ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/

/etc/init.d/apache2 restart
# or Nginx webserver:
apt-get install nginx

# MySQL:
apt-get install mysql-server mysql-client
# PHP5 or PHP 7 with modules (You might need to add a version number to the PHP package names):
apt-get install php libapache2-mod-php php-mysql php-gd
# APC, MemCached:
apt-get install memcached php-memcache php-memcached
apt-get install libpcre3-dev php-pear php-dev make
pecl install apc

Note:

1.1 Information on Load Balancing

Read some more words on load balancing for high performance portals

1.2 Database character set

Please ensure that the character-set of your database/database server is set to utf8. This can be different on different installations, so please check the settings of the database used by you.

1.3 Apache 2 webserver settings

This can be different on different installations, so please check the settings of the webserver used by you.

Edit the (usually called) httpd.conf-settings.

On a Debain-system these settings are stored in the file: /etc/apache2/sites-available/www.<yourdomain>.com

  1. Change the DocumentRoot to <portal>/frontend/www
  2. Change the other settings for directories to the shown below
  3. Remove Scriptaliases and other stuff

An example of a working-well default (http.conf)-file:


	<VirtualHost *:80>
		ServerAdmin webmaster@localhost
		ServerName www.<portal>.com
		DocumentRoot <portal>/frontend/www/

		<Directory />
			Options -Indexes FollowSymLinks
			AllowOverride None
		</Directory>

		<Directory <portal>/frontend/www/>
			Options -Indexes FollowSymLinks Multiviews
			AllowOverride All
			Order allow,deny
			 allow from all
		</Directory>

		ErrorLog ${APACHE_LOG_DIR}/error.log
		LogLevel warn
		CustomLog ${APACHE_LOG_DIR}/access.log combined
	</VirtualHost>

Nginx If you use Nginx, the following lines can be used to configure you server in /etc/nginx/sites-enabled/default (default is only an example)

Be sure, the ###-marked lines are commented out!


upstream phpfpm {
    server unix:/var/run/php5-fpm.sock;
    #avoid sockets for nginx-fpm on Linux, they are good for BSD
    #server 127.0.0.1:9000;
}
server {
    # Listening on port 80 without an IP address is only recommended if you arenot running multiple v-hosts
    #listen       80;
    # Bind to the public IP bound to your domain
    listen 176.9.202.17:80;
    listen 10.0.1.3:80;
    # Specify this vhost's domain name
    server_name web1.lupus.gentics.com;
    root /var/www/portal_FSCR/frontend/www/;
    index index.php index.html index.htm;
    # Specify log locations for current site
    access_log /var/log/nginx/default-access.log;
    error_log /var/log/nginx/default-error.log warn;
    # stats
    location /nginx_status {
        stub_status on;
        access_log   off;
        allow 78.142.159.226;
        deny all;
    }
    # Typically I create a restrictions.conf file that I then include across all of my vhosts
    #include conf.d/restrictions.conf;
    # I've included the content of my restrictions.conf in-line for this example
    # BEGIN restrictions.conf
    # Disable logging for favicon
    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }
    # Disable logging for robots.txt
    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }
    # Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac).
    location ~ /\. {
        deny all;
        access_log off;
        log_not_found off;
    }
    # END restrictions.conf
    # Typically I create a yiiframework.conf file that I then include across all of my yii vhosts
    #include conf.d/yiiframework.conf;
    # I've included the content of my yiiframework.conf in-line for this example
    # BEGIN yiiframework.conf
    # Block access to protected, framework, and nbproject (artifact from Netbeans)
    location ~ /(protected|framework|nbproject) {
        deny all;
        access_log off;
        log_not_found off;
    }
    # Block access to theme-folder views directories
    location ~ /themes/\w+/views {
        deny all;
        access_log off;
        log_not_found off;
    }
    # Attempt the uri, uri+/, then fall back to yii's index.php with args included
    # Note: old examples use IF statements, which nginx considers evil, this approach is more widely supported
    location / {
        try_files $uri $uri/ /index.php?$args;
    }
    # END yiiframework.conf
    # Tell browser to cache image files for 24 hours, do not log missing images
    # I typically keep this after the yii rules, so that there is no conflict with content served by Yii
###    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
###        expires 24h;
###        log_not_found off;
###    }
    # Block for processing PHP files
    # Specifically matches URIs ending in .php
    location ~ \.php$ {
        try_files $uri =404;
        # Fix for server variables that behave differently under nginx/php-fpm than typically expected
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        # Include the standard fastcgi_params file included with nginx
        include fastcgi_params;
        fastcgi_param  PATH_INFO        $fastcgi_path_info;
        fastcgi_index index.php;
        # Override the SCRIPT_FILENAME variable set by fastcgi_params
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        # Pass to upstream PHP-FPM; This must match whatever you name your upstream connection
        fastcgi_pass phpfpm;
    }
}

Examples of configurations for Apache2 and Nginx are in scripts/examples/.

1.4 Gentics Content Connector for dynamic content

You need a Gentics Content Connector installed on an application server for requesting dynamic content. Configure the URL to the Gentics Content Connector in your portal configuration, i.e. http://localhost:8080/ccr/

Further information on Gentics Content Connector

We deliver a configuration of our demo server within the code of the portal. Go to scripts/examples/gentics_content_connector_config in your portal, adapt the configs and copy them to the Application server configuration, i.e. /opt/tomcat/conf/gentics/

1. Install Apache Tomcat http://www.ctrip.ufl.edu/tomcat6-debian-lenny-howto

2. Install Gentics Content Connector https://github.com/gtxcontentconnector/contentconnector/wiki

Download URL of Gentics Content Connector

Change the database settings in the properties-files to the correct settings. List of Gentics Content Connector config files in order of priority

  • <name of your webapp, for example>ccr.properties – main config file for delivering personalized content
  • content.properties – config for delivering binary content via content servlet
  • nav.properties – config for navigation
  • search.properties – config for search
  • indexer.properties – config for search indexer

Other configs, most of them are for search

  • ap.properties
  • analyzer.properties
  • autocompleteanalyzer.properties
  • autocomplete.properties
  • stopwords.list
  • json.properties
  • nodecr.properties
  • social.properties
  • velocity.properties

This is only an EXAMPLE! tomcat/gentics/rest/ccr.properties and tomcat/gentics/rest/content.properties to: rp.1.ds-handle.url=jdbc:mysql://%mysqlserver%:3306/%name of contentrepository database%?user=%mysqluser%&password=%mysqlpassword%&autoReconnect=true

(/%path to your tomcat%/tomcat6/bin) setenv.sh JAVA_OPTS=“$JAVA_OPTS -Dcom.gentics.portalnode.confpath=/%path to your tomcat%/tomcat6/conf/gentics”

Restart the application server.

We suggest to rename the webapp to ccr.war before you deploy it into the application server.

1.5 GenticsImageStore for resizing images dynamically (module of CMS)

Make a symlink from published GenticsImageStore folder of CMS to frontend/www/

To use resized images from GenticsImageStore in your website or portal, link the published GenticsImageStore folder to frontend/www/ in your portal. It depends where the CMS publishes the folder on your system.

Alternatively you can deploy the GenticsImageStore webapp on your tomcat and configure your webserver to rewrite all /GenticsImageStore/* URLs to the webapp. The GenticsImageStore is part of the Gentics Portal.Node Java application, so please ask our sales for further information (sales@gentics.com).

This download only works with product key (as username) and license key (as password). Download URL

2 Download and Installation of Gentics Portal.Node PHP

Create directory, in which you want to store the Gentics Portal.Node PHP-files and move to this directory.

Follow the installation guide

2.1 Clear application cache of yii framework

You can use the clear cache and assets Yii extension for this.

Example usage:


# yiic clearcache cache

You can also just delete the contents of cache directories manually.