Deployment
Server Configuration
Every PhoenixmlDb server setting — storage, full-text indexing, schema validation — with defaults, startup validation, legacy keys and the startup summary
#Server Configuration
Both servers, the gRPC server and the REST server, read standard .NET configuration:
appsettings.json, appsettings.<Environment>.json, environment variables and command-line
arguments, later sources winning. As environment variables, write __ between levels:
PhoenixmlDb:Storage:DataPath becomes PhoenixmlDb__Storage__DataPath.
Settings are validated at startup. A bad value stops the server, and the error names the key.
Other sections are documented with their features:
Authentication (Auth, PhoenixmlDb:Auth),
Resource Access (PhoenixmlDb:ResourceAccess),
gRPC endpoints (PhoenixmlDb:Endpoints) and
Cluster Mode (PhoenixmlDb:Raft).
#Storage
PhoenixmlDb:Storage applies to both servers.
|
Setting |
Default |
Notes |
|---|---|---|
|
|
|
A relative path resolves against the content root. |
|
|
the engine default, 50 GiB on 64-bit |
The storage map size in MB. If an existing store already holds that much data or more, the server refuses to start: a smaller map would make it read-only. |
|
|
|
Concurrent read transactions. At least 1. |
|
|
|
When |
{
"PhoenixmlDb": {
"Storage": { "DataPath": "/var/lib/phoenixml", "MapSizeMb": 102400 }
}
}
#Full-text indexing
PhoenixmlDb:Indexing:FullText applies to the gRPC server only. It tunes the background worker
that applies queued full-text entries (see Full-Text Search). The REST
server runs no background full-text worker, so it ignores this section with a warning.
|
Setting |
Rule |
|---|---|
|
|
at least 1 |
|
|
at least 1 |
|
|
at least 0 |
#Schema validation
PhoenixmlDb:Validation applies to the REST server.
|
Setting |
Default |
Notes |
|---|---|---|
|
|
|
A blank value fails startup. |
|
|
|
A blank value fails startup. |
|
|
||
|
|
|
How long compiled schemas stay cached. At least 1. |
|
|
Has no effect; a startup warning says so. |
#Legacy keys
Settings that moved are still accepted for one release. Each old key used logs a startup warning (event id 3002) naming the old key and its replacement; values are never logged. If both the old and the new key are set, the new key wins.
|
Old key |
Server |
New key |
|---|---|---|
|
|
gRPC |
|
|
|
REST |
|
|
|
REST |
|
|
|
REST |
|
An old relative data path still resolves against the working directory, as it always did.
Ignored keys. XrxServer:* keys were never read by any release. They are now ignored with a
warning telling you which new key to set, so upgrading changes nothing for them.
Validation:EnableXsd11 and Validation:DefaultSchematronBinding were never implemented and are
ignored with a warning.
#Startup summary
Each server logs one Information event at startup (event id 3001, EffectiveConfiguration) listing
every key that is set, one per line, as key = value (source). Defaults aren't listed. The
source is file:<name>, environment, command line, in-memory or legacy:<old key>.
Secrets are shown as ***: API keys and their hashes, the JWT secret, the cluster secret and
certificate passwords. The deprecated Auth:ApiKey:Keys dictionary is shown only as a count. The
summary is logged even when startup then fails validation, so it's the first place to look when a
server won't start.
#Embedded applications
An embedded application configures storage in code, with LmdbStorageOptions (for example
MapSize, MaxReaders, MaxDatabases and CreateIfMissing). DocumentDatabase validates them,
and an invalid value throws ArgumentException.