In order to successfully install, configure, and deploy Swarm, the following dependencies are required:
mod_rewrite
and mod_php5
A supported version of PHP with the following extensions:
In addition, Swarm greatly benefits from the following optional extensions:
A supported Helix Versioning Engine deployment, and the ability to connect to it from the system hosting Swarm.
"Helix Server deployment" can refer to a running p4d
or a proxy, replica, edge server, or commit server.
curl
or wget
(for Swarm worker operation)Optional dependencies:
zip
, the command-line archiving tool (for downloading archives of files/foldersBecause Swarm includes binary versions of P4PHP (the Perforce extension for PHP), we support Swarm on the following operating systems:
You may be able to get Swarm running on another platform if you build P4PHP yourself and satisfy the other runtime dependencies. Instructions on how to obtain and build P4PHP from source can be found here.
P4PHP does not support threaded operation. If you compile P4PHP from source, ensure that the version of PHP you compile for is non-threaded.
Swarm requires Apache HTTP Server 2.2 or newer:
Swarm also requires the following Apache modules:
mod_rewrite URL rewriting engine
Only the prefork
MPMMulti-Processing Module, a component of the Apache web server that is responsible for binding to network ports, accepting requests, and dispatch operations to handle the request. is supported. Use of the worker or event MPMs is not supported and is likely to cause problems because P4PHP does not support threaded operation.
For more information on the prefork MPM, see:
Swarm requires PHP 5.3.3+, 5.4.x, 5.5.x, 5.6.x, or 7.0:
PHP must be non-threaded because P4PHP does not support threaded operation.
Swarm requires the following PHP extensions:
iconv (character encoding converter)
https://secure.php.net/iconv
This is typically enabled by default with most PHP distributions
JSON (JavaScript Object Notation)
https://secure.php.net/json
This is typically enabled by default with most PHP distributions, although recent distributions are making this optional
Session (session handling)
This is typically enabled by default with most PHP distributions
P4PHP (the Perforce PHP Extension)
Included with the Swarm package. See the install directions.
php-xml (DOM API for XML manipulation)
Included with PHP on many operating systems, but must be manually installed on CentOS/RHEL. When not installed, the Swarm RSS feed does not work.
php-mbstring (multi-byte character strings)
Included with PHP on many operating systems, but must be manually installed on CentOS/RHEL. When not installed, Swarm's RSS feed does not work.
Swarm greatly benefits from the following PHP extensions:
APC (the Alternative PHP Cache)
https://secure.php.net/apc
Installation instructions for APC.
Zend OPCache
https://secure.php.net/opcache
Installation instructions for Zend OPCache.
Imagick (integrates ImageMagick into PHP)
https://secure.php.net/imagick
Installation instructions for Imagick.
Swarm works with any supported version of the Helix Server (Standard Maintenance). The versions supported in this release of Swarm are:
Swarm performs best with the Helix Versioning Engine version 2016.2 or newer.
Swarm requires an automated user with at least admin privileges in the Helix Versioning Engine to enable Swarm to run against the Helix Server. This can be an existing user, or a new user created specifically to support Swarm.
If your Helix Server is configured for Multi-Factor Authentication (MFA), the user account running Swarm must not use MFA.
For more information about setting up Helix Versioning Engine, see Installing and upgrading the server in Helix Versioning Engine Administrator Guide: Fundamentals.
Swarm triggers are installed on the Helix Server during Swarm installation.
The Swarm triggers require perl 5.08+
:
https://www.perl.org/get.html
On the Windows platform, we have tested Swarm against Strawberry Perl. There are two Perl modules that are also required which may not be part of a minimal Perl installation.
HTTP::Tiny
is required to make calls to the Swarm server. If this is not present, then the trigger will attempt to use the command line curl program. This module is standard on Strawberry Perl on Windows, and available as a package with the version of Perl provided on CentOS 7, Ubuntu 14.04 and Ubuntu 16.04.
IO::Socket::SSL
is required if the Swarm server is configured to use SSL and HTTP::Tiny is present. This is provided as standard by Strawberry Perl, and available on Linux.
If the HTTP::Tiny
module is not available, for example on CentOS 6, then the triggers require the use of curl
. This must be installed for the triggers to function. On CentOS 6 this can be done using the yum
package installer using yum install curl
if it isn't already installed.
Swarm triggers also require the following perl modules to be installed:
JSON
is required to exchange data between the browser and the server and is included by default with Strawberry Perl.JSON
is required to exchange data between the browser and the server and must be installed. libjson-perl
is required to manipulate JSON formatted data and must be installed. JSON
is required to exchange data between the browser and the server and must be installed.perl-JSON
is required to manipulate JSON formatted data and must be installed. If Swarm is installed from a package on the same machine as P4D, the triggers require the following perl modules to be installed:
Perl 5.08+
libio-socket-ssl-perl
is required if the Swarm server is configured to use SSL. libjson-perl
is required to manipulate JSON formatted data and must be installed. Perl 5.08+
perl-IO-Socket-SSL
is required if the Swarm server is configured to use SSL. perl-JSON
is required to manipulate JSON formatted data and must be installed. The recurring task to invoke Swarm workers, installed in a later step, requires either of:
curl
https://curl.haxx.se/download.html
For Windows, curl.exe
depends on MSVCR100.dll
. You can get a copy by installing the Microsoft Visual C++ Redistributable Package, available for:
If you install Swarm with HTTPS, curl.exe
requires recent CA certificates (or HTTPS connections silently fail). You can get a copy of the cacert.pem
from:
https://curl.haxx.se/docs/caextract.html
Once downloaded, copy cacert.pem
to the same folder where you installed curl.exe
, and rename it to curl-ca-bundle.crt
.
If curl
(or curl.exe
on Windows) cannot execute as expected, trigger execution may block or fail. For example, if MSVCR100.dll
is missing from a Windows system, invoking curl.exe
causes a dialog to appear.
Prior to configuring the triggers, verify that curl
executes. On Linux systems, run:
$ curl -h
On Windows systems, run:
C:\> curl.exe -h
The start of the output should be similar to:
Usage: curl [options...] <url> Options: (H) means HTTP/HTTPS only, (F) means FTP only --anyauth Pick "any" authentication method (H) -a, --append Append to target file when uploading (F/SFTP) --cacert FILE CA certificate to verify peer against (SSL) --capath DIR CA directory to verify peer against (SSL) ...[truncated for brevity]...
For a more thorough test that actually fetches content over a network, try the following test:
For Linux systems, run:
$ curl https://www.perforce.com/
For Windows systems, run:
C:\> curl.exe https://www.perforce.com/
The output should look like HTML.
wget
https://ftp.gnu.org/gnu/wget
http://gnuwin32.sourceforge.net/packages/wget.htm (for Windows)
If you are using Powershell on Windows systems, be aware that Powershell includes aliases for curl
and wget
that call the Powershell command Invoke-WebRequest
instead of curl.exe
or wget.exe
. Invoke-WebRequest
has different command-line options than either curl
or wget
, which can be confusing.
If you want to remove the built-in aliases for curl
and wget
from Powershell, follow these steps:
Create a Powershell profile (only if you have not already done so):
PS C:\> New-Item $profile -force -itemtype file
Edit your profile:
PS C:\> notepad $profile
Add the following line to your profile:
remove-item alias:curl
remove-item alias:wget
notepad
.Reload your profile:
PS C:\> . $profile
The following browsers are supported for use with Swarm:
Other web browsers might also work, including prior, development or beta builds of the above web browsers, but are not officially supported.
JavaScript and cookies must be enabled in the web browser for Swarm to operate.
Swarm can display previews of office-type documents when LibreOffice is installed. Installation is not required, but when LibreOffice is installed Swarm automatically detects its presence.
For more information, see LibreOffice.
To use the Download .zip feature (see Downloading files as ZIP archive), Swarm requires that the zip
command-line tool is available.
For more information, see Archives configuration.
Swarm supports SELinux on CentOS 7. SELinux is an advanced access control mechanism that improves security for Linux distributions.
SELinux operates in one of three modes:
enforcing
: this mode blocks and logs any actions that do not match the defined security policy. This is the default mode for SELinux on CentOS 7.permissive
: this mode logs actions that do not match the defined security policy but these actions are not blocked.disabled
: in this mode SELinux is off, actions are not blocked and are not logged. See SELinux on CentOS 7 configuration for details.
If you see a Swarm configuration error similar to the error shown below, SELinux has not been correctly configured for Swarm. Check you have configured SELinux on CentOS 7 correctly.
Once you have reviewed the Runtime dependencies and know that you can satisfy them, there are a number of ways to install Swarm.
Installing Swarm using Install and configure Swarm from a package ensures that all of the Swarm dependencies are installed and is the easiest way to install Swarm.
Choose one of the following installation processes:
Swarm packages (RPM or Debian):
To get started with Swarm, see the Quickstart chapter.
Swarm.ova (Open Virtualization Appliance):
To get started with Swarm, see the Quickstart chapter.
Swarm.tgz (Tarball):
To get started with Swarm, see the Quickstart chapter.