AR1/docs/configuration.md

8.3 KiB

Configuration Guide

This guide covers all configuration options available in Aurora GIS.

Configuration Files

Primary Configuration: config/const.php

This file contains the core application constants. It is created during initialization and should not be edited manually unless necessary.

const DB_HOST = 'localhost';           // PostgreSQL host
const DB_NAME = 'aurora_gis';         // Database name
const DB_USER = 'aurora_user';        // Database username
const DB_PASS = 'your_password';      // Database password
const DB_PORT = '5432';               // Database port

const DATA_DIR = '/var/www/data';     // Data directory for file storage
const SESS_USR_KEY = 'dc_user';       // Session key for user data
const SUPER_ADMIN_ID = 1;             // ID of super admin user

Database Configuration: config/database.php

This file handles database connections and connection pooling settings.

Key settings:

  • PDO Error Mode: Set to ERRMODE_EXCEPTION for error handling
  • Prepared Statements: Uses emulated prepares for PgBouncer compatibility
  • Statement Timeout: 30 seconds (30000ms)
  • Idle Transaction Timeout: 15 seconds (15000ms)

Authentication Configuration

OAuth Providers

Configure OAuth providers in config/const.php:

const DISABLE_OAUTH_USER_CREATION = false;  // Set to true to disable auto user creation
const GITHUB_CLIENT_ID = 'your_github_client_id';
const GITHUB_CLIENT_SECRET = 'your_github_client_secret';
const GOOGLE_CLIENT_ID = 'your_google_client_id';
const GOOGLE_CLIENT_SECRET = 'your_google_client_secret';
const MICROSOFT_CLIENT_ID = 'your_microsoft_client_id';
const MICROSOFT_CLIENT_SECRET = 'your_microsoft_client_secret';
const MICROSOFT_TENANT_ID = 'your_microsoft_tenant_id';

OAuth Setup

  1. GitHub OAuth:

    • Go to GitHub Settings > Developer settings > OAuth Apps
    • Create a new OAuth App
    • Set Authorization callback URL: https://your-domain/auth-github.php
    • Copy Client ID and Client Secret
  2. Google OAuth:

    • Go to Google Cloud Console > APIs & Services > Credentials
    • Create OAuth 2.0 Client ID
    • Add authorized redirect URI: https://your-domain/auth-google.php
    • Copy Client ID and Client Secret
  3. Microsoft OAuth:

    • Go to Azure Portal > App registrations
    • Create new registration
    • Add redirect URI: https://your-domain/auth-microsoft.php
    • Copy Application (client) ID, Directory (tenant) ID, and Client secret

Data Directory Configuration

The DATA_DIR constant specifies where uploaded files and processed data are stored:

const DATA_DIR = '/var/www/data';

Ensure this directory:

  • Exists and is writable by the web server user
  • Has sufficient disk space
  • Has proper permissions (755 for directories, 644 for files)

Subdirectories created automatically:

  • uploads/ - Uploaded files
  • uploads/geoserver_documents/ - GeoServer documents
  • uploads/tabular/ - Tabular data files
  • uploads/raster/ - Raster files
  • uploads/qgis/ - QGIS projects
  • logs/ - Application logs

Database Settings

Connection Pooling (PgBouncer)

If using PgBouncer for connection pooling, the application uses emulated prepared statements:

PDO::ATTR_EMULATE_PREPARES => true

Timeout Settings

Configured in config/database.php:

$pdo->exec("SET statement_timeout = 30000");  // 30 seconds
$pdo->exec("SET idle_in_transaction_session_timeout = 15000");  // 15 seconds

Adjust these values based on your workload:

  • Increase statement_timeout for long-running queries
  • Decrease idle_in_transaction_session_timeout to prevent connection leaks

Application Settings

Application settings are stored in the app_settings table and can be managed via the admin interface or directly in the database.

Common Settings

Access via includes/settings.php functions:

get_app_setting($pdo, 'setting_key', $default);
set_app_setting($pdo, 'setting_key', 'value');

System Settings Page

Access system settings via the admin interface at /system_settings.php:

  • Site Name: Display name for the application
  • Default Basemap: Default map tile provider
  • Max Upload Size: Maximum file upload size
  • Enable Public Access: Allow anonymous dataset access
  • Email Settings: SMTP configuration for notifications

Worker Configuration

Background workers are configured via systemd service files in the systemd/ directory.

Worker Service Files

Each worker has a corresponding .service file:

  • hotspot_worker.service - Hotspot analysis worker
  • outlier_worker.service - Outlier analysis worker
  • nearest_worker.service - Nearest neighbor analysis worker
  • dissolve_worker.service - Dissolve operations worker
  • clip_worker.service - Clip operations worker
  • raster_clip_worker.service - Raster clip operations worker

Configuring Workers

Edit the service file to set:

  • Working directory
  • PHP path
  • User/group
  • Environment variables
  • Resource limits

Example service file:

[Unit]
Description=Hotspot Analysis Worker
After=network.target postgresql.service

[Service]
Type=simple
User=www-data
WorkingDirectory=/var/www/html/aurora-gis
ExecStart=/usr/bin/php workers/hotspot_analysis_worker.php
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

GeoServer Configuration

If using GeoServer for WMS/WFS services:

  1. Configure GeoServer connection in config/const.php or environment variables
  2. Set GeoServer admin credentials
  3. Configure workspace and data stores
  4. Enable required services (WMS, WFS, WCS)

QGIS Server Configuration

For QGIS project rendering:

  1. Install QGIS Server (see Installation Guide)
  2. Configure QGIS Server settings in mapproxy_settings.php
  3. Set QGIS Server URL in application settings
  4. Ensure QGIS projects are accessible to QGIS Server

pg_tileserv Configuration

For vector tile generation:

  1. Install and configure pg_tileserv
  2. Ensure PostGIS tables have proper SRID constraints
  3. Configure pg_tileserv to discover tables automatically
  4. Set pg_tileserv URL in application settings

Security Configuration

File Upload Security

  • File type validation is enforced
  • File size limits can be configured
  • Uploaded files are stored outside the web root when possible
  • File names are sanitized to prevent path traversal

Database Security

  • Use prepared statements (automatic via PDO)
  • Database credentials stored in config/const.php (protect this file)
  • User access controlled via access_group and user_access tables
  • Dataset-level permissions via dataset_permissions table

Session Security

  • Session key configured via SESS_USR_KEY constant
  • Session cookies should be HTTP-only and secure in production
  • Configure session timeout in php.ini

Performance Tuning

PostgreSQL Tuning

Key PostgreSQL settings for optimal performance:

-- Increase shared buffers
shared_buffers = 256MB

-- Increase work memory for complex queries
work_mem = 16MB

-- Enable parallel queries
max_parallel_workers_per_gather = 4

-- Optimize for spatial queries
random_page_cost = 1.1  # For SSD storage

PHP Tuning

In php.ini:

memory_limit = 512M
max_execution_time = 300
upload_max_filesize = 100M
post_max_size = 100M

Application Tuning

  • Enable OPcache for PHP
  • Use connection pooling (PgBouncer)
  • Configure appropriate worker counts
  • Monitor and optimize slow queries

Environment-Specific Configuration

Development

  • Enable error display: ini_set('display_errors', 1)
  • Use verbose logging
  • Disable caching
  • Use test database

Production

  • Disable error display: ini_set('display_errors', 0)
  • Enable error logging
  • Use production database
  • Enable caching
  • Use HTTPS only
  • Configure proper backup strategy

Monitoring and Logging

Application Logs

Logs are stored in the logs/ directory:

  • error.log - PHP errors
  • worker_*.log - Worker-specific logs
  • import_*.log - Import operation logs

Database Logging

Enable PostgreSQL logging:

# In postgresql.conf
logging_collector = on
log_directory = 'log'
log_filename = 'postgresql-%Y-%m-%d.log'
log_statement = 'all'  # or 'mod' for modifications only