Installation - Red Hat and CentOS

Package

Jarvis is available in RPM package format compatible with most modern Red Hat-based distributions. The following instructions should be accurate for:

For other distributions including earlier versions of Red Hat Enterprise or CentOS, you may need to install additional packages to resolve dependencies.

The Jarvis RPM package can be installed with the rpm command, e.g:

rpm -Uvh jarvis-6.0.10-1.noarch.rpm

This will likely fail due to dependencies, which can be resolved by following the instructions in the next section. Once installed, the following directory locations will be populated:

Path Notes
/usr/share/jarvis/cgi-bin This contains agent.pl, which is the CGI script which accepts requests over http/https when not using mod_perl. This is a simple bootstrap program. Most of the functionality is in the lib/Jarvis/*.pm files in the lib directory.
/usr/share/jarvis/demo Contains demo files which comprise a simple application showing how to use Jarvis with ExtJS and SQLite.
/usr/share/doc/jarvis Documentation including this file.
/usr/share/jarvis/htdocs This contains a helper JavaScript include file for use with ExtJS.
/usr/share/jarvis/lib Contains the majority of the Jarvis functionality as Perl modules.
/etc/jarvis Your application top-level configuration XML files will go here.
/etc/jarvis/apache Apache configuration files.

Mandatory Dependencies

You will need use the yum or dnf package managers to resolve the following mandatory dependencies (if they are not already installed).

yum install httpd 'perl(CGI)' 'perl(CGI::Session)' 'perl(CGI::Cookie)' \ 
	'perl(HTTP::Cookies)' 'perl(MIME::Types)' 'perl(DBI)' 'perl(JSON)' \
    'perl(Digest::MD5)' 'perl(Time::HiRes)' 'perl(XML::LibXML)'

You will also need a package to provide perl(CGI::Session), which can be retrieved from CPAN.

See https://metacpan.org/pod/CGI::Session for more information.

cpan install CGI::Session

Optional Dependencies

The following additional dependencies are required in specific cases.

To run the demo application:

yum install 'perl(DBD::SQLite)'

To run Jarvis under Apache mod_perl under CentOS 6.8:

yum install mod_perl 
cpan install Apache2::DBI

To run Jarvis under Apache mod_perl under CentOS 7:

yum install epel-release
yum install mod_perl 
cpan install Apache2::DBI

To use Database Login or eksblowfish Authentication:

See http://search.cpan.org/~zefram/Crypt-Eksblowfish/lib/Crypt/Eksblowfish.pm for more information.

cpan install Crypt::Eksblowfish

To use LDAP or ActiveDirectory Login:

yum install 'perl(Net::LDAP)'

To use OAuth2 Login:

yum install 'perl(JSON::XS)' 'perl(JSON::WebToken)'

To use Microsoft SSAS sdp Database type:

yum install 'perl(SOAP::Lite)'

To use CSV formatting for responses:

See http://search.cpan.org/~makamaka/Text-CSV-1.33/ for more information.

yum install 'perl(IO::String)'
cpan install Text::CSV

To use XLSX formatting for responses:

See http://search.cpan.org/~jmcnamara/Excel-Writer-XLSX-0.95/ for more information.

cpan install Excel::Writer::XLSX

Additionally available DB Drivers:

yum install 'perl(DBD::Pg)'

Apache Configuration - Without mod_perl

If performance is not a significant factor, you can simply run Jarvis as a CGI script.

The RPM package performs this configuration automatically:

cp /usr/share/jarvis/etc/jarvis/apache/jarvis.conf /etc/httpd/conf.d/jarvis.conf

If using Apache 2.4, you are likely to need to remove some restrictions. Firstly, grant access to the appropriate directory for Jarvis. In /etc/apache2/conf-available/jarvis.conf, adding:

<Directory /usr/share/jarvis/> 
	Options FollowSymLinks 
	AllowOverride None 
	Require all granted 
</Directory> 

You may need to restart the Apache webserver, and provide access to it remotely:

sudo systemctl enable httpd.service
systemctl start httpd.service
firewall-cmd --permanent --zone=public --add-service=http 
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload