Skip to content

Requirements

Cliff Ingham edited this page Sep 4, 2020 · 5 revisions

Requirements

We use Ubuntu for production deployments. Here's the full list of packages for an Ubuntu machine.

sudo apt-get install language-pack-en gettext default-jre imagemagick xsltproc \
apache2 libapache2-mod-php \
mysql-client mysql-server libmysqlclient-dev \
php-common php-cli php-mysql php-json php-readline php-mbstring php-intl php-curl php-ldap php-xsl

Locale

The i18n libraries for uReport rely on the locale being available in the operating system. Make sure the language you want to use is installed in the OS.

Web Server

CRM will work with a web server capable of running PHP. Accommodation will need to be made to support the Open311 interface, which normally is implmented using Apache's mod_rewrite.

Apache (recommended)

SSL

For security it is highly recommended to host the entire application over SSL. PHP sessions are tracked using cookies, which if intercepted, are just as good as a user's password. Hosting over SSL minimizes this risk.

mod_rewrite

The Open311 interface is implemented relying on Apache's mod_rewrite to route requests to the correct PHP script.

PHP >= 7.2

This application relies on code features only found in PHP 5.4 and greater. In addition there are particulay PHP libraries that we rely on. Make sure these are available in your PHP install.

XML

This extension is enabled by default in most PHP installations.

Curl

Web service and error reporting calls are implemented using curl functions.

LDAP

We support integrating with LDAP or ADS directories for user information and, if desired, authentication.

General Configuration Notes

PHP needs the following ini settings that might differ from the default php.ini

  • register_globals: off
    • With PHP 5.4 this should be the default, but some hosts have it enabled.
  • error_reporting:
    • CRM is written to work with no errors with error_reporting set to E_ALL | E_STRICT.
  • arg_separator:
    • To do valid XHTML strict, hrefs cannot be written with plain &. Rather than using entities, we chose to use the W3C recommendation of using the semicolon in all markup. PHP can use both semicolon and ampersand when parsing url parameters.
      • arg_separator.output = ";"
      • arg_separator.input = ";&"
  • Date
    • Be sure to edit the date settings for your location. CRM deals with location-based reports and uses these values when mapping.
      • date.timezone
      • date.default_latitude
      • date.default_longitude

MySQL (or an equivalent, such as MariaDB)

There are several drop-in replacements for MySQL.

The search interface is written to use Solr. You will need to install a Solr server somewhere accessible to this web application. In configuration.inc, point to wherever you installed Solr.

Third Party Libraries

All of the required libraries now come bundled, if you download from the Releases. However, if you have lots of applications and want to use a central library repository for them, you can always edit configuration.inc to point to your own copies of these libraries.

External Web Services (optional)

As a city, there's a lot of information that's useful for the reports that resides in other applications. Currently supported are GIS Addressing and Rental applications. The applications that provide this information are going to vary from city to city. CRM is written to expect custom XML data from webservices of applications that provide this information. Setting up the webservice interfaces to these applications will propably require custom code.

CAS (Single Sign on)

For improved security, all City of Bloomington web applications are configured to use CAS for authentication. This way, passwords never need to be stored in individual web applications and users only ever type their passwords into one website. If you have your own CAS server, you can configure CRM to do CAS authentication.

CAS authentication can be disabled by leaving it undefined in configuration.inc

Master Address

CRM can use a Master Address system for reverse geolocation and address validation. Talking to a MasterAddress webservice is handled entirely in classes/AddressService.php. The release includes the implementation we use for the City of Bloomington, Indiana. You will need to adapt the functions in this class to match your own addressing server.

MasterAdress lookups can be disabled by leaving ADDRESS_SERVICE undefined in configuration.inc

Rental

CRM will attempt to look up owner information for rental properties. Currently, it is hard coded to work with the City of Bloomington's Rental application. A more customizable interface is coming in a future release. However, the only block that attempts to query Rental is locations/locationInfo.inc. By manually editing this block in all of it's formats, you should be able to adapt it for your own situation.

Rental lookups can be disabled by leaving RENTAL_SERVICE undefined in configuration.inc

Graylog (External Error Logging)

In the City of Bloomington, we have a central logging service, that all web applications report any errors to. Graylog collects the errors, reports them to developers, and provides for browsing, slicing, and dicing the error reports. Direct notification to developers when errors occur is the best way to make sure bugs are fixed quickly.

Graylog is open source and available at https://www.graylog.org/releases

Graylog reporting can be left undefined in configuration.inc, if not not desired.