Contents

System Requirements

Hardware Requirements

  • Processor: 2.4 GHz
  • RAM: 4 GB
  • Disk: 250Mb

Software Requirements

  1. Java SDK

    actiTIME requires Java SDK 7.0 or higher which may be obtained at
    http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html.

    The link above points to the latest release of JDK 7.

    actiTIME does not work with GNU Java that comes with some of Linux systems. So please make sure that you have Oracle JDK installed. Please refer to the following instructions describing how to install Oracle JDK:



  2. Apache Tomcat Application Server

    actiTIME requires Tomcat 7 or higher which may be obtained at
    http://tomcat.apache.org/index.html

  3. MySQL

    If you want actiTIME to work with MySQL database, it will need MySQL 5.x installed (you can download MySQL installation package from
    http://www.mysql.com/downloads/mysql/).

  4. MariaDB

    If you want actiTIME to run on MariaDB, a version starting from 10.0 is required. You can download it at https://mariadb.com/downloads.

Installing actiTIME

  1. Extract the installation package (a tar.gz file) into a local directory. Subdirectory 'actitime' will appear.

    Note that if you extract the archive into the '<tomcat home>/webapps' you will only need to restart Tomcat server to make your actiTIME installation available. Otherwise you will have to configure Tomcat to make it able to run actiTIME in another directory.

  2. Enter the 'actitime' directory.

  3. Create a MySQL user account with all privileges on the database that will be created later during the installation. The default name of this database is 'actitime'. You can choose any other name, but then you have to specify this name as a parameter for the installation script.

  4. Run the following query in MySQL under the 'root' user account or under any other user account with SUPER privilege:

    SET GLOBAL log_bin_trust_function_creators = 1;

    This is necessary to allow actiTIME to create required stored functions in its database.

  5. Launch the setup_mysql.sh script.

    setup_mysql.sh has the following launch format:

    bash ./setup_mysql.sh [-mysqlpath <MYSQLPATH>]
                          [-username <USERNAME>] [-password <PASSWORD>]
                          [-host <HOST>] [-port <PORT>] [-dbname <DBNAME>]

    where

    <MYSQLPATH> is the path to the MySQL executables (where the 'mysql' and 'mysqldump' executable files are placed). If not specified, setup_mysql.sh will ask for it when running.

    <USERNAME> is the MySQL user name under which actiTIME will create and use the database. If not specified, setup_mysql.sh will ask for it when running.

    <PASSWORD> is the password of user <USERNAME>. If not specified, setup_mysql.sh will ask for it when running.

    <HOST> is the host name of the the server where MySQL server is running. If not specified, the local host will be assumed. It is required if actiTIME uses a remote MySQL database.

    <PORT> is the port on which MySQL server is running. If not specified, the default MySQL port will be used.

    <DBNAME> is the name of the database to be created. If not specified, 'actitime' will be used as the database name.

    NOTE: If the script finds the previous version of the actiTIME database, it will back up the database to the actitime.mysql4.sql.backup_[current date] file.
  6. Run the following query in MySQL under the 'root' user account or under any other user with SUPER privilege:

    SET GLOBAL log_bin_trust_function_creators = 0;

    This will revert the configuration parameter changed on steps above to the previous value.

  7. Make necessary activities to the Tomcat application server if you want to run actiTIME in non-default configuration (different port, virtual host etc.).

    1. If you want to configure actiTIME to work via secure connections (HTTPS) you can use Tomcat's facilities, but it may decrease the system performance since Tomcat's HTTPS module is built on Java and requires considerable computational resources.

      It is recommended to use Tomcat together with Apache web server (http://httpd.apache.org/). If you configure your installation this way, secure requests will be processed without serious loss of performance. Apache HTTP server will handle HTTPS requests, decrypt them and then transfer decrypted data forwards to Tomcat. To make it work this way, see Tomcat and Apache documentation at: https://www.javacodegeeks.com/2012/06/apache-http-server-with-tomcat-on-ssl.html.

    2. If you want to run Tomcat with "-security" option, you will need to add special permissions to $CATALINA_HOME/conf/catalina.policy file (or $CATALINA_HOME/conf/tomcat.policy depending on the Tomcat version). The set of permissions depends on Tomcat version and its configuration.

      Examples of lines to add for different server versions are listed below:

      Tomcat 5.5.x:

      grant codeBase "file:<PATH>/actitime/-" {
        // Access to Tomcat logs (necessary to allow Tomcat to rotate its logs)
        permission java.io.FilePermission "${catalina.home}${file.separator}logs", "read";
        permission java.io.FilePermission "${catalina.home}${file.separator}logs${file.separator}-", "write";

        // Database access permissions
        permission java.net.SocketPermission "<HOST>:<PORT>", "connect,resolve";

        // actiTIME requires permissions to access an SMTP server to send email notifications.
        // Please replace <SMTP_HOST> below with name or IP address of your SMTP server.
        // It must be equal to the one specified in actiTIME General Settings.
        permission java.net.SocketPermission "<SMTP_HOST>:25", "connect,resolve";

        // Access to Tomcat libraries
        permission java.io.FilePermission "${catalina.home}${file.separator}server${file.separator}lib${file.separator}-", "read";
        permission java.io.FilePermission "${catalina.home}${file.separator}common${file.separator}lib${file.separator}-", "read";
        // Access to system properties
        permission java.util.PropertyPermission "org.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER", "read";
        permission java.util.PropertyPermission "org.apache.coyote.USE_CUSTOM_STATUS_MSG_IN_HEADER", "read";
        permission java.util.PropertyPermission "catalina.home", "read";
        permission java.util.PropertyPermission "file.encoding", "read";
        permission java.util.PropertyPermission "java.runtime.version", "read";

        // Network and Runtime permissions
        permission java.lang.RuntimePermission "getClassLoader";
        permission java.lang.RuntimePermission "accessDeclaredMembers";
        permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.compiler";
        permission java.lang.RuntimePermission "accessClassInPackage.sun.security.provider";

        //File permissions
        permission java.io.FilePermission "<PATH>${file.separator}actitime${file.separator}img${file.separator}custom${file.separator}*", "read,delete,write";
        // Optional permissions that would increase actiTIME performance
        permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
        permission java.lang.RuntimePermission "defineClassInPackage.java.lang";
        permission java.lang.RuntimePermission "accessClassInPackage.sun.util.logging.resources";
        permission java.lang.RuntimePermission "defineClassInPackage.org.apache.jasper.runtime";
        permission java.lang.RuntimePermission "defineClassInPackage.java.util";
        permission java.lang.RuntimePermission "accessClassInPackage.org.apache.coyote";
      };

      You will also need to add the following permission to the existing block "file:${catalina.home}/bin/tomcat-juli.jar" in the
      $CATALINA_HOME/conf/catalina.policy file:

      permission java.io.FilePermission "<PATH>${file.separator}actitime${file.separator}WEB-INF${file.separator}classes${file.separator}logging.properties", "read";

      Tomcat 6.0.x:

      grant codeBase "file:<PATH>/actitime/-" {
        // Access to Tomcat libraries
        permission java.io.FilePermission "${catalina.home}${file.separator}lib${file.separator}-", "read";

        // Access to Tomcat logs (necessary to allow Tomcat to rotate its logs)
        permission java.io.FilePermission "${catalina.home}${file.separator}logs", "read";
        permission java.io.FilePermission "${catalina.home}${file.separator}logs${file.separator}-", "write";

        // Database access permissions
        permission java.net.SocketPermission "<HOST>:<PORT>", "connect,resolve";

        // actiTIME requires permissions to access an SMTP server to send email notifications.
        // Please replace <SMTP_HOST> below with name or IP address of your SMTP server.
        // It must be equal to the one specified in actiTIME General Settings.
        permission java.net.SocketPermission "<SMTP_HOST>:25", "connect,resolve";

        // Access to system properties
        permission java.util.PropertyPermission "org.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER", "read";
        permission java.util.PropertyPermission "org.apache.coyote.USE_CUSTOM_STATUS_MSG_IN_HEADER", "read";
        permission java.util.PropertyPermission "catalina.home", "read";
        permission java.util.PropertyPermission "file.encoding", "read";
        permission java.util.PropertyPermission "java.runtime.version", "read";

        // Network and Runtime permissions
        permission java.net.NetPermission "specifyStreamHandler";
        permission java.lang.RuntimePermission "getClassLoader";
        permission java.lang.RuntimePermission "accessDeclaredMembers";
        permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.session";
        permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.connector";
        permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.core";
        permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.util";
        permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina";
        permission java.lang.RuntimePermission "accessClassInPackage.javax.servlet";
        permission java.lang.RuntimePermission "accessClassInPackage.sun.util.logging.resources";
        permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.util.buf";
        permission java.lang.RuntimePermission "accessClassInPackage.org.apache.coyote";
        permission java.lang.RuntimePermission "accessClassInPackage.sun.security.provider";

        //File permissions
        permission java.io.FilePermission "<PATH>${file.separator}actitime${file.separator}img${file.separator}custom${file.separator}*", "read,delete,write";
        // Optional permissions that would increase actiTIME performance
        permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
        permission java.lang.RuntimePermission "defineClassInPackage.org.apache.jasper.runtime";
        permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina";
        permission java.lang.RuntimePermission "defineClassInPackage.java.lang";
        permission java.lang.RuntimePermission "defineClassInPackage.java.util";
      };

      Tomcat 7.0.x:

      grant codeBase "file:<PATH>/actitime/-" {
        // Access to Tomcat libraries
        permission java.io.FilePermission "${catalina.home}${file.separator}lib${file.separator}-", "read";

        // Access to Tomcat logs (necessary to allow Tomcat to rotate its logs)
        permission java.io.FilePermission "${catalina.home}${file.separator}logs", "read";
        permission java.io.FilePermission "${catalina.home}${file.separator}logs${file.separator}-", "write";

        // Database access permissions
        permission java.net.SocketPermission "<HOST>:<PORT>", "connect,resolve";

        // actiTIME requires permissions to access an SMTP server to send email notifications.
        // Please replace <SMTP_HOST> below with name or IP address of your SMTP server.
        // It must be equal to the one specified in actiTIME General Settings.
        permission java.net.SocketPermission "<SMTP_HOST>:25", "connect,resolve";

        // Access to system properties
        permission java.util.PropertyPermission "org.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER", "read";
        permission java.util.PropertyPermission "org.apache.coyote.USE_CUSTOM_STATUS_MSG_IN_HEADER", "read";
        permission java.util.PropertyPermission "catalina.home", "read";
        permission java.util.PropertyPermission "file.encoding", "read";
        permission java.util.PropertyPermission "java.runtime.version", "read";

        // Network and Runtime permissions
        permission java.net.NetPermission "specifyStreamHandler";
        permission java.lang.RuntimePermission "getClassLoader";
        permission java.lang.RuntimePermission "accessDeclaredMembers";
        permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.session";
        permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.connector";
        permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.core";
        permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.util";
        permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina";
        permission java.lang.RuntimePermission "accessClassInPackage.javax.servlet";
        permission java.lang.RuntimePermission "accessClassInPackage.sun.util.logging.resources";
        permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.util.buf";
        permission java.lang.RuntimePermission "accessClassInPackage.org.apache.coyote";
        permission java.lang.RuntimePermission "accessClassInPackage.sun.security.provider";

        //File permissions
        permission java.io.FilePermission "<PATH>${file.separator}actitime${file.separator}img${file.separator}custom${file.separator}*", "read,delete,write";
        // Optional permissions that would increase actiTIME performance
        permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
        permission java.lang.RuntimePermission "defineClassInPackage.org.apache.jasper.runtime";
        permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina";
        permission java.lang.RuntimePermission "defineClassInPackage.java.lang";
        permission java.lang.RuntimePermission "defineClassInPackage.java.util";
      };

      where

      <PATH> is the path to the actiTIME directory or '${catalina.home}/webapps' if actiTIME is installed to webapps directory.

      <SMTP_HOST> is the host name or IP of the SMTP server.

      <HOST> is the host name or IP of the server where MySQL server is running.

      <PORT> is the port on which MySQL server is running (MySQL uses port 3306 by default).

  8. Restart Tomcat.

    Now you can access actiTIME via your web browser at: http://<IP address or server name>:8080/actitime if Tomcat is configured by default and actiTIME is installed into the '<tomcat home>/webapps' directory).

    Login as user 'admin' with password 'manager'.

Configuring actiTIME Notifications

After you have successfully logged in to actiTIME, go to Settings --> General Settings and scroll down to the end of the page. You will find the Email Settings section. Specify here your mail server parameters in order to make actiTIME email notifications work.

Please enter correct values in the following mandatory fields:

  • Outgoing mail server (SMTP) - name or address of your mail server.
  • Port - mail server port (usually 25)
  • URL of your actiTIME installation - address you used to log in to actiTIME on the previous step (ex. http://<IP address or server name>:8080/actitime). This address is required to enable links from email messages back to actiTIME
  • "From" address for email messages – address from which the notifications will be sent
  • Error Processing - email address of your system or network administrator who will be notified if actiTIME detects issues when sending email messages.

If you don't know what are the correct values, please consult your System or Network Administrator.

Upgrading actiTIME from a Previous Version

We have done our best to ensure that your data stays safe. However it is strongly recommended that you make a backup of actiTIME files prior to upgrading actiTIME.

We also recommend you to back up your actiTIME database before the upgrade procedure.

  1. Stop the Tomcat server.

  2. Make sure Java 7 or higher is installed. If not, upgrade it. You can check the installed Java version using the following command:

    java -version

  3. Copy the file 'actitime/WEB-INF/classes/com/actimind/actitime/AT.properties' to 'actitime/', then delete all files and directories from the directory 'actitime/WEB-INF', where 'actitime' is the directory where actiTIME is installed.

  4. Copy the tar.gz installation package file to the parent directory of the 'actitime' directory (where actiTIME is installed). Unpack the file. The files of your existing actiTIME installation will be overwritten with their new versions.

  5. Move the file 'actitime/AT.properties' back to the directory 'actitime/WEB-INF/classes/com/actimind/actitime/'.
  6. Enter the 'actitime' directory.

  7. Run the following query in MySQL under the 'root' user account or under any other user with SUPER privilege:

    SET GLOBAL log_bin_trust_function_creators = 1;

  8. Launch the setup_mysql.sh script.

    setup_mysql.sh has the following launch format:

    bash ./setup_mysql.sh [-mysqlpath <MYSQLPATH>]

    where

    <MYSQLPATH> is the path to the MySQL executables (where the 'mysql' and 'mysqldump' executable files are placed). If not specified, setup_mysql.sh will ask for it when running.

    Prior to updating database structure the setup script backs up the database and saves the data in a file in the 'actitime' directory. Name of the backup file is
    actitime.mysql4.sql.backup_<YYYYMMDDhhmmss>, where <YYYYMMDDhhmmss> is date and time when the script was run.

  9. Run the following query in MySQL under the 'root' user account or under any other user with SUPER privilege:

    SET GLOBAL log_bin_trust_function_creators = 0;

  10. Delete all files from the Tomcat cache directory
    <tomcat>/work/<Engine Name>/<Host Name>/actitime/

    Where

    <tomcat> is the directory where Tomcat is installed.

    <Engine Name> is the name of the Tomcat engine configured for your installation. Usually it is 'Standalone' or 'Catalina'.

    <Host Name> is the name of the virtual host configured for your Tomcat installation.

  11. Start the Tomcat server.

  12. After you have successfully upgraded actiTIME, configure mail server parameters to make actiTIME notifications work properly. Refer to the 'Configuring actiTIME Notifications' section for instructions.

Database Backup Instructions

Backup procedure:
  1. Start shell.

  2. Find the folder where MySQL is installed and go to the 'bin' folder.

  3. Run the following command:

    mysqldump -u <username> -p<password> -R [-h <host>] [-P <port>] --protocol=tcp <dbname> > actitime_data.sql

    where

    square brackets [] indicate that the enclosed parameter is optional. Don't enter the square brackets themselves.

    <username> is the name of the user who has all the necessary rights to administer the database (you can also use 'root' for it).

    <password> is the password of this user (please note that there should be NO space between '-p' and 'password').

    <host> is the host name of the server where MySQL server is running. If not specified, the local host will be assumed.

    <port> is the port used by MySQL. If not specified, the default MySQL port will be used.

    <dbname> is the name of the MySQL database used by actiTIME. If you did not specify a custom database name when installing actiTIME, specify 'actitime' as the database name.

    By executing this command, you will create a dump of your database and save it in the file 'actitime_data.sql'.

Restore procedure:
  1. Stop the Tomcat server.

  2. Start shell.

  3. Find the folder where MySQL is installed and go to the 'bin' folder.

  4. Run the following command:

    mysqladmin -f -u <username> -p<password> -h <host> -P <port> --protocol=tcp drop <dbname>

    After this command the current data will be dropped.

    mysqladmin -f -u <username> -p<password> [-h <host>] [-P <port>] --protocol=tcp create <dbname>

    mysql -u <username> -p<password> [-h <host>] [-P <port>] --protocol=tcp <dbname> < actitime_data.sql

    where

    square brackets [] indicate that the enclosed parameter is optional. Don't enter the square brackets themselves.

    <username> is the name of the user who has all the necessary rights to administer the database (you can also use 'root' for it).

    <password> is the password of this user (please note that there should be NO space between '-p' and 'password')

    <host> is the host name of the server where MySQL server is running. If not specified, the local host will be assumed.

    <port> is the port used by MySQL. If not specified the default MySQL port will be used.

    <dbname> is the name of the MySQL database used by actiTIME. If you did not specify a custom database name when installing actiTIME, specify 'actitime' as the database name.

  5. Start the Tomcat server.

Uninstalling actiTIME

  1. Stop the Tomcat server.

  2. If you need to remove the actiTIME database with all its data, go to the 'actitime' directory and execute command:

    bash ./cleanup_mysql.sh. [-mysqlpath <MYSQLPATH>]

    where

    <MYSQLPATH> is the path to the MySQL executables (where the 'mysql' and 'mysqladmin' executable files are placed). If not specified, the script will ask for it when running.

    cleanup_mysql.sh completely deletes the database created during installation.

  3. Delete the 'actitime' directory and all its subdirectories.