-
Notifications
You must be signed in to change notification settings - Fork 29
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
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.
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)
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.
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.
This extension is enabled by default in most PHP installations.
Web service and error reporting calls are implemented using curl functions.
We support integrating with LDAP or ADS directories for user information and, if desired, authentication.
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
.
- CRM is written to work with no errors with error_reporting set to
- 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 = ";&"
- 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.
- 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
- Be sure to edit the date settings for your location. CRM deals
with location-based reports and uses these values when mapping.
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.
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.
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
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
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.