Please rate how useful you found this document: 
Average: 2.5 (2 votes)

Overview

Follow these instructions to install ProcessMaker 2.8.0 or later on top of a LAMP (Linux, Apache, MySQL, PHP) stack in Debian.

ProcessMaker 2.8.0 - 3.0.1.6 can be installed in Debian 6 (Squeeze) or 7 (Wheezy). ProcessMaker 3.0.1.7 or later can be installed in Debian 7 (Wheezy). If wishing to install ProcessMaker 3.0.1.7 or later in Debian 6, then PHP will need to be upgraded to version 5.4 or 5.5. ProcessMaker has not been tested with PHP 7 which is found in Debian Testing and Unstable, so it may be necessary to downgrade to PHP 5.6 if using those versions of Debian.

Before installing it is recommended to check the Installation Requirements. After installation, see Additional Server Configuration.

Note: There are no known problems running ProcessMaker on Debian Linux, but the ProcessMaker Quality Control team does not test on Debian servers so use at your own risk.

ProcessMaker Installation

Follow the steps listed below to install ProcessMaker in Debian.

Step 1: Install MySQL, PHP and Apache

Warning: ProcessMaker is not compatible with MySQL STRICT mode, which is enabled by default as of MySQL 5.6.6. Read the Turning Off MySQL STRICT Mode section to learn how to disable it.

If the LAMP stack isn't already installed, open a shell by going to "Applications>Accessories >Terminal". At the command line, switch to the "root" user.

If using Debian 6.0 (Squeeze) or earlier, enter the following command:

apt-get install mysql-server php5 apache2 php5-mysql php5-gd php5-ldap php5-curl php5-cli \ php5-mcrypt php5-soap php5-xml

If using Debian 7.0 (Wheezy) or later, enter the following command:

apt-get install mysql-server php5 apache2 php5-mysql php5-gd php5-ldap php5-curl php5-cli php5-mcrypt

When apt-get installs MySQL, a dialog box will appear asking for a new root password for MySQL.

EnterMySQLRootPassword.png

Enter a password and select the option OK. Then enter the same password a second time, to confirm it.

Install SSH Server and PhpMyAdmin

OpenSSH Server can be installed to allow the ProcessMaker server to be remotely accessed from the command line, which is very useful when executing the processmaker and gulliver commands or conducting administrative tasks. In addition, phpMyAdmin can be installed to easily view the MySQL databases used by ProcessMaker inside a web browser.

To install OpenSSH Server and phpMyAdmin:

apt-get install openssh-server phpmyadmin

If asked which web server PhpMyAdmin should use, press the space bar to select "apache2":

PhpMyAdminWhichWebServerDialog.png

Then, select whether to configure the database with the dbconfig-common package. In most cases, it is easier to select :

When asked for a password to create the MySQL databases, enter the MySQL root password:

PhpMyAdminRootPasswordDialog.png

Then enter a password which can be used to access the PhpMyAdmin web application:

PhpMyAdminApplicationPasswordDialog.png

Reconfirm that password by entering it a second time:

PhpMyAdminApplicationPasswordReconfirmDialog.png

In Debian (Squeeze) 6.0, the Apache configuration file for phpMyAdmin is not automatically included in the list of sites. To add it and restart Apache:

ln -s /etc/phpmyadmin/apache.conf /etc/apache2/sites-enabled/phpmyadmin.conf /etc/init.d/apache2 restart

Step 2: Configure PHP

The default configuration of PHP should be able to run ProcessMaker, however, check the following settings if PHP's configuration file php.ini has been modified.

Edit PHP's configuration file php.ini:

nano /etc/php5/apache2/php.ini

Each ProcessMaker session needs a minimum of 128MB RAM to run properly, so set the memory_limit to 128M or greater:

memory_limit = 128M

Note: After installation, the same value for the memory_limit should be set in the ProcessMaker interface by going to Admin > Settings > System (or in the env.ini file).

file_uploads and short_open_tag need to be enabled:

file_uploads = On short_open_tag = On

If planning on uploading large files, as Input Documents while running processes, post_max_size and upload_max_filesize should be increased to more than the default 2MB. For instance, if planning on uploading files as large as 24MB, then:

post_max_size = 24M upload_max_filesize = 24M

It is also recommended to set the date.timezone to a your time zone, especially if using timer events in the Enterprise Edition. See this list of supported time zones.

date.timezone = America/New_York

Note: After installation, the same time zone should be set in the ProcessMaker interface by going to Admin > Settings > System and setting the Time Zone (or in the env.ini file).

To avoid viewing unnecessary warning messages in the @@__ERROR__ system variable in the debugger, it is recommended to turn off deprecated and strict warnings:

error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT display_errors = Off

Step 3: Download & Extract ProcessMaker

Go to http://sourceforge.net/projects/processmaker/files/ProcessMaker/ and download a recent tarball of ProcessMaker, which should be named processmaker-X.X.X.X-community.tar.gz.

After the download has finished, decompress the tarball in the directory where ProcessMaker will be installed. ProcessMaker can be installed in any directory which is not publicly accessible to the internet (so do NOT install it in /var/www), but it is generally installed in /opt, since it is an optional program which doesn't come from the standard repositories.

To decompress the ProcessMaker tarball in the /opt directory, issue the following command as the "root" user (or use sudo): tar -C /opt -xzvf processmaker-X.X.X.X-community.tar.gz

Verify that ProcessMaker was correctly decompressed:

ls /opt/processmaker

The processmaker directory should contain the following contents:

components gulliver LICENSE.txt processmaker rbac vendor framework INSTALL.txt pmos.conf.example processmaker.bat shared workflow

Set file permissions

Then, issue the following commands as the "root" user so that ProcessMaker can access the necessary files when run by the Apache server:

cd /opt/processmaker mkdir shared (only necessary in versions 2.8.0 and 3.0.0.1) chmod -R 770 shared workflow/public_html gulliver/js gulliver/thirdparty/html2ps_pdf/cache cd workflow/engine/ mkdir js/labels (only necessary in versions 2.8.0 and 3.0.0.1) chmod -R 770 config content/languages plugins xmlform js/labels chown -R www-data:www-data /opt/processmaker

Step 4: MySQL Configuration

The MySQL "root" user should already have all the necessary privileges to setup the ProcessMaker databases. If planning on using a MySQL user other than "root" to set up the ProcessMaker databases, then follow the steps below to grant a MySQL user superuser privileges to create and update databases.

Login to MySQL:

mysql -u root -p

Enter the root password for MySQL.

Once in MySQL, give the user which will be running ProcessMaker superuser privileges to create create and modify MySQL databases:

mysql> grant all on *.* to 'USER'@'localhost' identified by 'PASSWORD' with grant option;

Replace USER with the name of your MySQL user and PASSWORD with the password for that user. (If that user doesn't already exist, he/she will be automatically created with the above grant command.) If you are running ProcessMaker on a different server than your MySQL server, then replace localhost with the domain name or IP address of the server where ProcessMaker is located.

Exit MySQL:

mysql> exit;

MySQL Configuration Issues

Setting the root Password

If MySQL doesn't have a root password, set one for better security:

mysqladmin -u root password PASSWORD

If you have forgotten the root password, see these instructions to reset it.

Starting as a Service

When logging into MySQL, if the following error message appears:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

Then, MySQL needs to be started as a service:

service mysql start

If MySQL was installed from its Debian package, it should automatically start as a service on bootup. If not, then use use update-rc.d to add it as a service:

update-rc.d mysql defaults

Step 5: Configure Apache

Copy the sample ProcessMaker configuration file (which is named pmos.conf.example in version 3 and virtualhost.conf.example in version 2.8) to Apache's list of available sites:

cp /opt/processmaker/pmos.conf.example /etc/apache2/sites-available/pmos.conf

Then edit the pmos.conf file to fit your environment:

nano /etc/apache2/sites-available/pmos.conf

To configure ProcessMaker in Debian 6 - 7, see VirtualHost in Apache 2.2. If using Debian 8 (Jessie) or later, see VirtualHost in Apache 2.4.

VirtualHost in Apache 2.2

If using Apache 2.2 which is found in Debian 6 - 7, then use the following VirtualHost configuration. In the pmos.conf file, replace your_ip_address and your_processmaker_domain with the IP address and domain name used by your ProcessMaker server:

# Please change the IP address with your server IP address and # the ServerName with your own subdomains. NameVirtualHost your_ip_address #processmaker virtual host <VirtualHost your_ip_address > ServerName "your_processmaker_domain" DocumentRoot /opt/processmaker/workflow/public_html <Directory /opt/processmaker/workflow/public_html> AddDefaultCharset UTF-8 AllowOverRide All Options FollowSymlinks Order allow,deny Allow from all RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ /app.php [QSA,L] ExpiresActive On ExpiresDefault "access plus 1 day" ExpiresByType image/gif "access plus 1 day" ExpiresByType image/png "access plus 1 day" ExpiresByType image/jpg "access plus 1 day" ExpiresByType text/css "access plus 1 day" ExpiresByType text/javascript "access plus 1 day" #Deflate filter is optional. It reduces download size, but adds slightly more CPU processing: AddOutputFilterByType DEFLATE text/html </Directory> </VirtualHost>

Replace your_ip_address with the IP number or domain name of the server running ProcessMaker. If only planning on running and accessing ProcessMaker on your local machine, then use the IP address "127.0.0.1". If using ProcessMaker on a machine whose IP address might change (such as a machine whose IP address is assigned with DHCP), then use "*", which represents any IP address. If not using the standard port 80, then it is necessary to also specify the port number.

If your DNS or /etc/hosts has a defined domain for ProcessMaker, then use that domain for your_processmaker_domain. Otherwise, use the same IP address for your_processmaker_domain as was used for your_ip_address. For more information, see the Apache Virtual Hosts Documentation.

Note: It is also possible to define the virtual host for ProcessMaker directly in the Apache configuration by inserting the above VirtualHost definition in the file /etc/apache2/apache2.conf.

Example 1:

ProcessMaker is installed in the /opt/processmaker directory and is running on a server at the address 192.168.1.100:

NameVirtualHost 192.168.1.100 #processmaker virtual host <VirtualHost 192.168.1.100> ServerName "192.168.1.100" DocumentRoot /opt/processmaker/workflow/public_html ...

Example 2:

ProcessMaker is installed in the /user/fred directory on your local machine at port 8080 with an dynamic IP assigned by DHCP:

NameVirtualHost *:8080 Listen 8080 #processmaker virtual host <VirtualHost *:8080 > ServerName "*" DocumentRoot /user/fred/processmaker/workflow/public_html ...

Example 3:

ProcessMaker is installed in the /opt/pm3.0.1.7 directory at the IP address 123.45.67.89 and the domains www.example.com and any variant of X.example.com:

NameVirtualHost 123.45.67.89 #processmaker virtual host <VirtualHost 123.45.67.89 > ServerName "www.example.com" ServerAlias "*.example.com" DocumentRoot /opt/pm3.0.1.7/processmaker/workflow/public_html ...

Note that www.example.com and *.example.com need to be defined in the server's DNS or /etc/hosts file for this example to work correctly.

VirtualHost in Apache 2.4

If using Apache 2.4 which is found in Debian 8 (Jessie) and later, then use the following VirtualHost configuration. In the pmos.conf file, replace your_ip_address and your_processmaker_domain with the IP address or domain name used by your ProcessMaker server:

#processmaker virtual host <VirtualHost your_ip_address > ServerName "your_processmaker_domain" DocumentRoot /opt/processmaker/workflow/public_html DirectoryIndex index.html index.php <Directory /opt/processmaker/workflow/public_html> Options Indexes FollowSymLinks MultiViews AddDefaultCharset UTF-8 AllowOverride All Require all granted ExpiresActive On <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^.*/(.*)$ app.php [QSA,L,NC] </IfModule> #Deflate filter is optional. It reduces download size, but adds slightly more CPU processing: AddOutputFilterByType DEFLATE text/html </Directory> </VirtualHost>

Replace your_ip_address with the IP number or domain name of the server running ProcessMaker. If only planning on running and accessing ProcessMaker on your local machine, then use the IP address "127.0.0.1". If using ProcessMaker on a machine whose IP address might change (such as a machine whose IP address is assigned with DHCP), then use *, which represents any IP address. If not using the standard port 80, then it is necessary to also specify the port number.

If your DNS or /etc/hosts has a defined domain for ProcessMaker, then use that domain for your_processmaker_domain. Otherwise, use the same IP address for your_processmaker_domain as was used for your_ip_address. For more information, see the Apache Virtual Hosts Documentation.

Note: It is also possible to define the virtual host for ProcessMaker directly in the Apache configuration by inserting the above VirtualHost definition in the file /etc/apache2/apache2.conf.

Example 1:

ProcessMaker is installed in the /opt/processmaker directory and is running on a server at the address 192.168.1.100:

#processmaker virtual host <VirtualHost 192.168.1.100> ServerName "192.168.1.100" DocumentRoot /opt/processmaker/workflow/public_html ...

Example 2:

ProcessMaker is installed in the /user/fred directory on your local machine at port 8080 with an dynamic IP assigned by DHCP:

Listen 8080 #processmaker virtual host <VirtualHost *:8080 > #don't include ServerName DocumentRoot /user/fred/processmaker/workflow/public_html ...

Example 3:

ProcessMaker is installed in the /opt/pm3.0.1.7 directory at the IP address 123.45.67.89 and the domains www.example.com and any variant of X.example.com:

#processmaker virtual host <VirtualHost 123.45.67.89 > ServerName "www.example.com" ServerAlias "*.example.com" DocumentRoot /opt/pm3.0.1.7/processmaker/workflow/public_html ...

Note that www.example.com and *.example.com need to be defined in the server's DNS or /etc/hosts file for this example to work correctly.

Enable site and modules

After editing the pmos.conf file, enable the ProcessMaker web site:

a2ensite pmos.conf

ProcessMaker needs to use the expires, rewrite, deflate and vhost_alias modules in the Apache 2 web server. Check to see whether these modules are enabled:

ls /etc/apache2/mods-enabled/

If you don't see them in the list, they can be enabled with the a2enmod command:

a2enmod expires a2enmod rewrite a2enmod deflate a2enmod vhost_alias

Note: If using Apache 2.4 (found in Debian 8.X (Jessie) and later), either enable the filter module:

a2enmod filter

Or remove the following line from pmos.conf:

AddOutputFilterByType DEFLATE text/html

After adding the web site pmos.conf and enabling modules, it is necessary to restart the Apache web server:

/etc/init.d/apache2 restart

Apache Configuration Issues

No ServerName

If a similar warning message appears when restarting Apache:

apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName

Then, the ServerName needs to be set for Apache. Edit the Apache configuration file:

nano /etc/apache2/apache2.conf

Add the line:

ServerName ip-address

For instance, if running ProcessMaker from the local machine, then:

ServerName 127.0.0.1
Non-standard Port

If running ProcessMaker off a port other than the default port 80, then add the following line to the file /etc/apache2/ports.conf:

Listen ip-address:port

For instance, if running ProcessMaker from the local machine at port 8080:

Listen 127.0.0.1:8080

Or simply:

Listen 8080

Note: If Apache is using the default port 80, then configure other programs (like Skype) to not use port 80. Check whether a program is currently listening on port 80 with the command:

netstat -tanp

To configure Skype to stop listening on port 80, press CTRL+O or go to Tools > Options. Under the Advanced section of the "Options" dialog box, go to the "Connection" section and enter an alternative port for Use port [ ] for incoming connections.

Disable the default Apache site
If Apache is configured to display a default message like the following in Debian 5 - 7:
It works!
This is the default web page for this server.
The web server software is running but no content has been added, yet.

Then, disable Apache's default site:

a2dissite default /etc/init.d/apache2 reload

In Debian 8 (Jessie), use the following commands to disable the "Apache2 Debian Default Page": a2dissite 000-default.conf service apache2 reload

No VirtualHosts Warning

If you see the following message when reloading or restarting Apache:

[warn] NameVirtualHost *:80 has no VirtualHosts

Then, comment out or delete the following line in the file /etc/apache2/ports.conf:

NameVirtualHost *:80

Step 6: Setting up ProcessMaker

Open a web browser and enter the IP address (and port number if not using the default port 80) where ProcessMaker is installed. For instance, if ProcessMaker is installed at the address 192.168.10.100, then go to: http://192.168.10.100
If using ProcessMaker which is installed locally on port 8080, go to: http://127.0.0.1:8080.

Then follow the steps in the Installation Wizard in the web browser to complete the installation of ProcessMaker.

Step 7: Additional Configuration

Additional aspects of ProcessMaker may need to be configured. See Additional Server Configuration and the Administration section of the wiki. Most installations of ProcessMaker need to configure the following:

Setting the Time Zone

The default time zone for the ProcessMaker server can be set by logging into ProcessMaker with the "admin" user and going to Admin > Settings > System and setting the Time Zone. Another way to set the time zone is edit the env.ini configuration file.

Configuring Email

If planning on sending out email notifications or enabling users to recover forgotten passwords, then see Email - Settings to configure ProcessMaker to use an email server.

Execution of cron.php

If planning on using email notifications or timer events, then the server running ProcessMaker has to be configured to periodically execute the cron.php file. See Executing Cron Scripts.

Downgrading to PHP 5.3

The ProcessMaker Quality Control team has tested ProcessMaker 3.0.1.X with PHP 5.4 and PHP 5.5. However, if installing ProcessMaker 2.8.0 or 3.0.0.X, these versions have only been tested with PHP 5.3. There are no known problems running ProcessMaker 2.8.0 or 3.0.0.X with PHP 5.4 or 5.5. However, if not wishing to run ProcessMaker on an untested version of PHP, it recommended to downgrade PHP to version 5.3.3, which is found in Debian 6 (Squeeze).

Note: Remember that these instructions are only for ProcessMaker 2.8.0 or 3.0.0.X and should be ignored if installing ProcessMaker 3.0.1.X. Also remember that ProcessMaker 3.0.1.7 and later must use PHP 5.4 or later.

Switch to the "root" user and edit the /etc/apt/sources.list file:

nano /etc/apt/sources.list

Add the following two lines to use the Squeeze repositories:

deb http://ftp.us.debian.org/debian/ squeeze main contrib non-free deb-src http://ftp.us.debian.org/debian/ squeeze main contrib non-free

Then create a pinning file in /etc/apt/preferences.d/preferences:

nano /etc/apt/preferences.d/preferences

Add the following content to the file:

Package: php5* Pin: release n=squeeze Pin-Priority: 700 Package: libapache2-mod-php5 Pin: release n=squeeze Pin-Priority: 700 Package: php-* Pin: release n=squeeze Pin-Priority: 700 Package: * Pin: release a=stable Pin-Priority: 600

If using Testing or Unstable, then change stable to testing or unstable.

Now update the list of packages:

sudo apt-get update

Then, create a $PHP variable with the packages to be replaced:

PHP=$(dpkg -l|grep php|grep 5.4.4|awk '{print $2}')

Check to see that the $PHP variable has all the PHP packages:

echo $PHP

Then, replace PHP 5.4 with PHP 5.3:

apt-get install --reinstall $PHP

Errors during Installation

If an error occurs during the installation, check the installation log file:
/shared/log/install_log.log
It will generally be found at:
/opt/processmaker/shared/log/install_log.log

Depending on the errors found in the installation log file, check the following files:
The Apache configuration file:
/etc/apache2/apache2.conf
The ProcessMaker web site configuration file for Apache:
/etc/apache2/sites-available/pmos.conf
The PHP configuration file:
/etc/php5/apache2/php.ini
The MySQL configuration file:
/etc/mysql/my.cnf
The ProcessMaker configuration file where components are installed:
/workflow/engine/config/paths_installed.php
The ProcessMaker configuration file for database connections:
/shared/sites/workflow/db.php
The ProcessMaker redirection to login screen:
/processmaker/workflow/public_html/index.html

If the following error appears at the login screen:

ErrorIDNotWorkspace.png

This error indicates that the installer was unable to access the MySQL databases to install the translations. Make sure that the MySQL port (which is 3306 by default) isn't blocked by a firewall and MySQL is configured to accept connections from the server running ProcessMaker. If that doesn't work, then ask for help on the forum.