{"result":{"depiction_url":null,"edges":{"hasreference":{"objects":[{"created":"2026-10-07T11:13:45Z","object_id":{"id":2992,"is_a":["text","documentation","developerguide"],"name":"developer_environment_settings","title":{"_type":"trans","tr":{"en":"Keep development and production settings distinct"}},"uri":"https:\/\/zotonic.com\/id\/2992"},"seq":1},{"created":"2026-10-07T11:13:45Z","object_id":{"id":2990,"is_a":["text","documentation","developerguide"],"name":"developer_configuration_layers","title":{"_type":"trans","tr":{"en":"Find the configuration layer to change"}},"uri":"https:\/\/zotonic.com\/id\/2990"},"seq":2},{"created":"2026-10-07T11:13:45Z","object_id":{"id":2933,"is_a":["text","documentation","developerguide"],"name":"developer_inspect_configuration","title":{"_type":"trans","tr":{"en":"Inspect global and site configuration"}},"uri":"https:\/\/zotonic.com\/id\/2933"},"seq":3}],"predicate":{"id":2774,"is_a":["meta","predicate"],"name":"hasreference","title":{"_type":"trans","tr":{"en":"Documentation reference"}},"uri":"https:\/\/zotonic.com\/id\/hasreference"}},"references":{"objects":[{"created":"2020-05-30T05:47:23Z","object_id":{"id":1482,"is_a":["text","documentation","reference"],"name":"doc_developerguide_configuration_port_ssl_configuration","title":"Port configurations","uri":"https:\/\/zotonic.com\/id\/1482"},"seq":1000000}],"predicate":{"id":332,"is_a":["meta","predicate"],"name":"references","title":{"_type":"trans","tr":{"en":"References"}},"uri":"https:\/\/zotonic.com\/id\/references"}},"refers":{"objects":[{"created":"2026-10-07T11:13:01Z","object_id":{"id":2990,"is_a":["text","documentation","developerguide"],"name":"developer_configuration_layers","title":{"_type":"trans","tr":{"en":"Find the configuration layer to change"}},"uri":"https:\/\/zotonic.com\/id\/2990"},"seq":1000000},{"created":"2026-10-07T11:13:01Z","object_id":{"id":2991,"is_a":["text","documentation","developerguide"],"name":"developer_runtime_config","title":{"_type":"trans","tr":{"en":"Change a runtime setting deliberately"}},"uri":"https:\/\/zotonic.com\/id\/2991"},"seq":1000000}],"predicate":{"id":2409,"is_a":["meta","predicate"],"name":"refers","title":{"_type":"trans","tr":{"en":"Refers"}},"uri":"https:\/\/zotonic.com\/id\/refers"}},"subject":{"objects":[{"created":"2026-10-07T11:13:45Z","object_id":{"id":2554,"is_a":["categorization","keyword","keyword_information_type"],"name":"zotonic_topic_how_to_guide","title":"How-to guide","uri":"https:\/\/zotonic.com\/id\/2554"},"seq":1},{"created":"2026-10-07T11:13:45Z","object_id":{"id":2566,"is_a":["categorization","keyword","keyword_audience"],"name":"zotonic_topic_operator","title":"Operator","uri":"https:\/\/zotonic.com\/id\/2566"},"seq":2},{"created":"2026-10-07T11:13:45Z","object_id":{"id":2603,"is_a":["categorization","keyword","keyword_domain"],"name":"zotonic_topic_configuration","title":"Configuration","uri":"https:\/\/zotonic.com\/id\/2603"},"seq":3},{"created":"2026-10-07T11:13:45Z","object_id":{"id":2605,"is_a":["categorization","keyword","keyword_domain"],"name":"zotonic_topic_site_management","title":"Site management","uri":"https:\/\/zotonic.com\/id\/2605"},"seq":4}],"predicate":{"id":308,"is_a":["meta","predicate"],"name":"subject","title":{"_type":"trans","tr":{"en":"Keyword"}},"uri":"http:\/\/purl.org\/dc\/elements\/1.1\/subject"}}},"id":1481,"is_a":["text","documentation","developerguide"],"links":[{"rel":"self","target":"https:\/\/zotonic.com\/.zotonic\/websub\/topic\/1481"},{"rel":"hub","target":"https:\/\/zotonic.com\/.zotonic\/websub"}],"medium":null,"medium_url":null,"name":"doc_developerguide_deployment_env","page_url":{"en":"https:\/\/zotonic.com\/docs\/1481\/keep-development-and-production-settings-distinct","x-default":"https:\/\/zotonic.com\/docs\/1481\/keep-development-and-production-settings-distinct"},"preview_url":null,"resource":{"body":{"_type":"trans","tr":{"en":"<p>Set the site&#39;s environment intentionally and inspect the resolved value before relying on environment-specific tools. Development behavior can include trace controls, extra browser output, and asset settings that are unsuitable for normal visitor traffic.<\/p>\n<p>Keep credentials outside shared documentation and committed examples. Give local installations their own database and hostname so an ordinary test cannot target the production site by accident.<\/p>\n<p>Exercise the release configuration in an acceptance environment before deploying it. Compare the resolved settings, enabled modules, and storage paths when behavior differs between environments.<\/p>\n<h2>Find the configuration layer to change<\/h2>\n<p>Distinguish global Zotonic configuration, Erlang runtime configuration, site configuration files, and module settings stored for a site. Similar setting names can exist at different layers.<\/p>\n<p>Use <code>bin\/zotonic configfiles<\/code> and <code>bin\/zotonic siteconfigfiles garden<\/code> to locate the files that the command resolves. Use the corresponding configuration display commands to inspect the values, taking care when sharing output that may include credentials.<\/p>\n<p>Check the implementation of a setting to see when it is read. Some values are consulted on each request; others are used at process or site startup.<\/p>\n<h2>Inspect global and site configuration<\/h2>\n<p>Use the command suited to the question:<\/p>\n<pre class=\"notranslate\"><code class=\"notranslate language-sh\">bin\/zotonic configfiles\nbin\/zotonic configtest\nbin\/zotonic siteconfigfiles garden\nbin\/zotonic siteconfig garden\n<\/code><\/pre>\n<p><code>configfiles<\/code> and <code>siteconfigfiles<\/code> locate configuration sources. <code>configtest<\/code> checks global configuration loading. <code>siteconfig<\/code> prints the site&#39;s file-based configuration; it is not a complete dump of every database-backed module setting.<\/p>\n<p>For runtime values, use the relevant model or configuration API in the running context. <code>setconfig<\/code> changes global runtime Zotonic settings without writing configuration files.<\/p>\n<p>Do not share unredacted configuration output: database passwords and other secrets may be present. See <a href=\"\/id\/2990\">Find the configuration layer to change<\/a> and <a href=\"\/id\/2991\">Change a runtime setting deliberately<\/a>.<\/p>"}},"category_id":{"id":317,"is_a":["meta","category"],"name":"developerguide","title":"Developer guide","uri":"https:\/\/zotonic.com\/id\/developerguide"},"content_group_id":{"id":339,"is_a":["meta","content_group"],"name":"default_content_group","title":{"_type":"trans","tr":{"en":"Default Content Group"}},"uri":"https:\/\/zotonic.com\/id\/default_content_group"},"created":"2020-05-30T05:47:23Z","creator_id":{"id":336,"is_a":["person","robot"],"name":"gitbot","title":"Git","uri":"https:\/\/zotonic.com\/id\/336"},"doc_editorial_bundle":true,"doc_editorial_edges":{"hasreference":[2933,2990,2992],"subject":[2554,2566,2603,2605]},"github_url":"https:\/\/github.com\/zotonic\/zotonic\/tree\/master\/doc\/developer-guide\/deployment\/env.rst","is_authoritative":true,"is_dependent":false,"is_featured":false,"is_protected":false,"is_published":true,"is_unfindable":false,"language":["en"],"modified":"2026-10-07T11:13:56Z","modifier_id":{"id":1,"is_a":["person"],"name":"administrator","title":"Site Administrator","uri":"https:\/\/zotonic.com\/id\/1"},"name":"doc_developerguide_deployment_env","pivot_geocode":null,"pivot_location_lat":null,"pivot_location_lng":null,"privacy":0,"publication_end":"9999-06-01T00:00:00Z","publication_start":"2022-02-15T10:01:29Z","slug":"keep-development-and-production-settings-distinct","summary":{"_type":"trans","tr":{"en":"Keep development and production settings distinct."}},"title":{"_type":"trans","tr":{"en":"Keep development and production settings distinct"}},"title_slug":{"_type":"trans","tr":{"en":"keep-development-and-production-settings-distinct"}},"tz":"UTC","uri":null,"version":36,"visible_for":0},"uri":"https:\/\/zotonic.com\/id\/1481","uri_template":"https:\/\/zotonic.com\/id\/:id","websub":{"hub":"https:\/\/zotonic.com\/.zotonic\/websub","topic":"https:\/\/zotonic.com\/.zotonic\/websub\/topic\/1481"}},"status":"ok"}