Pro odlišení připojení k databázi pro lokální a ostrou verzi webu můžeme použít následující nastavení souborů určených pro konfiguraci. Dobrý vzorový příklad celé aplikace najdeme nahraný na serveru github.com (aplikace ZUMScore).
Konfiguraci můžeme rozhodit např. do tří souborů: config.neon, config.local.neon a config.product.neon.
Adresář config
Soubor config.neon
Pro společná nastavení založíme sekci
common:
v config.neon.
Pro odlišení databázových přístupů pro lokální verzi a ostrou produkční verzi na webu můžeme použít nastavení zapsané v
production < common:
a
development < common:
. Tyto zápisy znamenají, že production verze bude dětit nastavení zapsané pro common a přidá k ní vlastní nastavení. To samé se týká development verze. Zdědí nastavení common a přidá své vlastní nastavení.
Pokud chceme nastavení odlišit zvlášť v samostatných souborech, lze tyto soubory vložit do config.neon pomocí
includes:
Config.neon pak může vypadat následovně (upravený config.neon ze vzorové aplikace sandbox):
# # SECURITY WARNING: it is CRITICAL that this file & directory are NOT accessible directly via a web browser! # # If you don't protect this directory from direct web access, anybody will be able to see your passwords. # http://nette.org/security-warning # common: parameters: php: date.timezone: Europe/Prague # zlib.output_compression: yes nette: application: errorPresenter: Error mapping: *: App\*Module\Presenters\*Presenter session: expiration: 14 days services: - App\UserManager - App\RouterFactory router: @App\RouterFactory::createRouter production < common: includes: - config.product.neon development < common: includes: - config.local.neon
Příklad v aplikaci ZUMScore je /app/config/config.neon.
Soubor config.local.neon
Takto může vypadat pak konfigurace připojení pro lokální verzi webu umístěnou v souboru config.local.neon:
nette: database: dsn: 'mysql:host=127.0.0.1;dbname=DATABASE_NAME' user: USER password: PASSWORD options: lazy: yes
Příklad v aplikaci ZUMScore je /app/config/config.local.neon.
Soubor config.product.neon
Takto může vypadat pak konfigurace připojení pro ostrou verzi běžící na webu v souboru config.product.neon:
nette: database: dsn: 'mysql:host=IP_ADRESA_SERVERU;dbname=DATABASE_NAME' user: USER password: PASSWORD options: lazy: yes
Příklad v aplikaci ZUMScore je /app/config/config.product.neon.
Text zapsaný velkými písmeny si samozřejmě přepíšete dle vlastního nastavení.
Jinak nastavení přístupů do databází pro lokální verzi a pro ostrou verzi by šlo umístit i do souboru config.neon, a to pod text development < common: (obdobně pod development < common:). Nemuselo by být v extra jiných souborech. Nastavení by se zapsalo naprosto stejně, jako se zapisuje nastavení např. pro samotné common:. Nastavení se zdědí od common a případné společné vlastnosti se přepíšou novým detailnějším nastavením.
Soubor bootstrap.php
V souboru bootstrap lze pak rozlišit lokální verzi od ostré pomocí nastavení IP adresy ostrého serveru (např. 170.85.255.248) viz dokumentace Nette: Environment.
$environment = Nette\Configurator::detectDebugMode('170.85.255.248') ? $configurator::DEVELOPMENT : $configurator::PRODUCTION; $configurator->addConfig(__DIR__ . '/config/config.neon', $environment);
Když bude server spouštěn z lokální adresy 127.0.0.1 (DEVELOPMENT), tak se aplikuje připojení k databázi podle config.local.neon. Když bude server spuštěn z ostré verze umístěné na webu (PRODUCTION), aplikuje se připojení k databázi podle config.product.neon.
Příklad v aplikaci ZUMScore je /app/bootstrap.php. V tomto příkladu ale toto rozlišení není.
Další informace
- Konfigurace CZ a Konfigurace EN – doc.nette.org, bohužel zde toho moc není…
- config.neon prostředí production < common apod – forum.nette.org
- config.local.neon a zrušení sekcí v config.neon – forum.nette.org