Přeskočit obsah
V
Pro vývojáře
Architektura, konvence, jádro systému a bezpečnost
Začínáme / Instalace a spuštění

Instalace a spuštění#

Požadavky#

Co Verze / poznámka
PHP ≥ 8.3 (composer.json)
MySQL / MariaDB
Composer
Node.js a npm pro sestavení assetů
Redis doporučené, dá se vypnout
Elasticsearch volitelné — bez něj hledání spadne na SQL

Postup: rozjíždím projekt poprvé#

  1. Závislosti
composer install
npm install
  1. Konfigurace — zkopíruj vzor a vyplň skutečné hodnoty:
cp config/Shared/local.neon.example config/Shared/local.neon
openssl rand -hex 32          # JWT secret

Do local.neon patří přístup k databázi (mariadb.*jediný zdroj pravdy, používá ho Doctrine i nette/database) a jwt.secret. Includuje se jako poslední v config/common.neon, takže přebíjí všechny placeholdery.

  1. Databáze — schéma je v docs/sql/. Systém nepoužívá migrace; schéma se udržuje ručně psanými idempotentními skripty.

  2. Redis — na hostingu bez Redisu odkomentuj v local.neon:

redis:
    storage: false
    sessions: false
jwt:
    useRedis: false          # deny-list půjde do DB (potřebuje cron cleanup)
ratelimit:
    useRedis: false
  1. Assety
npm run build:admin        # administrace

Front téma se sestavuje ze své složky — viz Témata frontendu.

  1. Práva k zápisutemp/, log/, var/ a složky pro nahrané soubory.

  2. Cron token nastav v administraci (1/cronToken) dřív, než zapojíš crony — bez něj vrací všechny úlohy 403.

  3. Naplánované úlohy podle Checklistu nasazení a Naplánovaných úloh.

local.neon nepatří do gitu

Obsahuje hesla k databázi a JWT secret. V .gitignore je (/config/local.neon i /config/Shared/local.neon) — zkontroluj to dřív, než něco commitneš.

validateClass není migrace

Ověření entity proti schématu jen řekne, co nesedí. Změnu ve schématu musíš provést sám skriptem v docs/sql/.

Postup: zapínám ladicí režim na vývojovém stroji#

touch config/debug-mode.flag      # gitignored, existence = debug ON

Nebo přes proměnnou prostředí NETTE_DEBUG=1, která má přednost. Produkční výchozí stav je vypnuto; podrobně Checklist nasazení.

Ladicí režim se nenastavuje v local.neon

Rozhoduje se o něm v App\Bootstrap::resolveDebugMode(), tedy před načtením konfigurace. Cokoli napsaného do NEONu nemá na debug žádný vliv.

Konfigurace#

Soubor Obsah
config/common.neon kostra, includuje zbytek
config/Shared/*.neon sdílená konfigurace po oblastech (25 souborů)
config/Shared/local.neon 🔴 tajemství a lokální přepisy, mimo git
config/debug.neon co platí jen v ladicím režimu
config/Admin/, config/System/ konfigurace jednotlivých sekcí

Část nastavení je v databázi, ne v souborech — čte je SettingManager a v runtime SettingContext.

SettingContext má dvě vrstvy

setSettings() je pro managery no-op. Ve skriptech musíš zapsat i setServerSettings(), jinak nastavení nedorazí tam, kam čekáš.

Postup: změnil jsem konfiguraci a nic se nestalo#

  1. Smaž temp/cache. Nette drží zkompilovaný DI kontejner.
  2. U nového jazyka navíc temp/cache/translation/ — katalog překladů se sám neregeneruje.
  3. U nové třídy může být problém zastaralá mapa tříd.
  4. Teprve pak hledej chybu v tom, co jsi napsal.

Zastaralá mapa tříd shodí CELÝ web

Ne srozumitelnou hláškou — chybou 500 na všech stránkách naráz. Po přidání jazyka, nového modulu nebo změně konfigurace vždycky smaž temp/cache.

Ověření po instalaci#

  1. Titulní stránka.
  2. Přihlášení do administrace.
  3. Jeden výpis a jeden formulář v administraci.
  4. Odeslání jednoho formuláře na frontu.
  5. log/ — přibylo něco?

Živý proklik odhalí to, co harness ne

Testovací běh přes CLI obchází spoustu vrstev. Než něco prohlásíš za hotové, proklikej to v prohlížeči — podrobně Testy a nástroje.

Produkce a vývoj sdílejí jednu databázi

Instalace na novém stroji se tedy připojuje k ostrým datům. Než začneš cokoli zkoušet, ověř si, ke které databázi jsi vlastně připojený.

Kam sáhnout#

Chci Kde
vzor lokální konfigurace config/Shared/local.neon.example
rozhodnutí o ladicím režimu app/Bootstrap.phpresolveDebugMode()
SQL skripty schématu docs/sql/
příkazy sestavení package.json, composer.json
checklist nasazení Checklist nasazení

Navazující kapitoly: Checklist nasazení · Naplánované úlohy · Struktura projektu · Testy a nástroje