In order to successfully install, configure, and deploy Swarm, the following dependencies are required:
mod_rewrite
and mod_phpx
(where x
is the version of PHP you are running, for example 5 or 7). For supported versions of PHP, see PHP.A supported version of PHP with the following extensions:
In addition, Swarm greatly benefits from the following optional extensions:
A supported Helix Core Server 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:
Because Swarm includes binary versions of P4PHP (the Perforce extension for PHP), we support Swarm on the following operating systems:
Recommended for CentOS/RHEL 6: Change the following parameters in the [Pcre] section of the /etc/php.ini file to the values shown below. This ensures that very large comments are displayed:
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_phpx
for interacting with PHP (usually installed with PHP)x
is the version of PHP you are running. For supported versions of PHP, see PHP.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, the 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:
Download Helix Server from here: https://www.perforce.com/downloads/helix-core-p4d
Swarm requires an automated user with at least admin privileges in the Helix Core Server 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 Core Server, see Installing and upgrading the server in Helix Core Server 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 on the Swarm server. Installation is not required, but when LibreOffice is installed Swarm automatically detects its presence.
For more information about LibreOffice, see LibreOffice.
You can download a ZIP archive of files/folders when the zip command-line tool is installed on the Swarm server.
For more information about installing and configuring Zip, see Zip archive.
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.