Nette - konfigurace ostré a lokální databáze

Datum vydání: 2014-07-25 15:20:12

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