跳转至

7. Deployment view

Standard deployment

flowchart TB
  subgraph Client
    Browser[Browser]
  end
  subgraph ApplicationHost[Application host]
    TLS[Web server / TLS]
    PHP[PHP runtime]
    Files[MRBS web files and config]
    TLS --> PHP
    PHP --> Files
  end
  subgraph DatabaseHost[Database host]
    Database[(MySQL/MariaDB or PostgreSQL)]
  end
  subgraph External[Optional external services]
    IdP[LDAP / CAS / SAML / CMS]
    SMTP[SMTP or local MTA]
  end

  Browser -->|HTTPS| TLS
  PHP -->|PDO| Database
  PHP -->|secured protocol| IdP
  PHP -->|SMTP or process| SMTP

The web server exposes the contents of the release's web/ directory. The operator creates web/config.inc.php, which is local, secret, and excluded from source control.

Nodes

Node Deployed artifacts State
Browser HTML, CSS, JavaScript, downloads Cookies and local UI preferences
Web/PHP host MRBS PHP, assets, local configuration, optional themes Configuration, logs, possibly file sessions
Database host MRBS schema and records Bookings, resources, users, variables, sessions
Identity provider External service Accounts, credentials, roles, attributes
Mail transport External or local service Queue and delivery state

Clustered deployment

Multiple PHP/web nodes can serve the same installation if they share:

  • one consistent MRBS code and configuration version;
  • one database;
  • a session strategy suitable for multiple nodes;
  • consistent timezone, locale, and PHP extensions; and
  • shared or externally delivered mail behavior.

Database-backed session handling is preferable to node-local files where the database supports the required locking behavior.

Trust boundaries

flowchart LR
  Internet((Untrusted network)) -->|HTTPS boundary| Web[Web tier]
  Web -->|credential boundary| IdP[Identity provider]
  Web -->|data boundary| DB[(Database)]
  Web -->|message boundary| Mail[Mail service]

Terminate TLS at a trusted proxy or web server, preserve the correct client and scheme information, and restrict direct access to PHP and database nodes.

Operational files

Do not publish the repository root, database scripts, backups, test utilities, or generated logs. Only the intended application directory belongs behind the web server.