Black Friday je tu! Využij jedinečnou příležitost a získej až 80 % znalostí navíc zdarma! Více zde
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
BF extended 2022

Lekce 2 - Nette sandbox a IDE

V minulé lekci, Úvod do Nette frameworku pro PHP, jsme si udělali úvod do Nette frameworku.

V dnešním tutoriálu si připravíme potřebné nástroje pro Nette.

Potřebný software

Jako první, co je potřeba udělat, je připravit si správný software, který budeme potřebovat. Budu předpokládat, že máte nainstalovaný a zprovozněný webový server Apache + PHP + MySQL. Pokud ne, tak pro začátečníky doporučuji XAMPP.

Pro instalaci Nette, budeme potřebovat PHP 7.4 a vyšší!

Dále pro ty, co jsou zvyklí psát v editoru jako třeba PSPad, bych doporučil nějaké IDE, které vám práci usnadní. Doporučuji NetBeans (aktuální verze v době psaní tohoto článku je 12.1) a nebo PhpStorm. Já budu používat NetBeans, tak budu dávat konkrétní postup přímo na toto IDE.

Pokud toto všechno máme, tak budeme samozřejmě potřebovat Nette framework. Ten stáhneme na oficiálním webu v sekci download a to v aktuální verzi a rozbalíme do nějaké složky na disku. Nejlepší bude, když ale využijeme composer a nainstalujeme framework pomocí toho. Kdybychom chtěli přidávat nějaké další balíčky, budeme ho stejně potřebovat. Pokud composer tedy nemáte, nainstalujte si ho :)

Instalace Nette

Pokud máme všechny nástroje nainstalované, nainstalujeme si framework. Najdeme si nějakou složku, kde má Apache přístup (například htdocs/). Jsme tedy v kořenové složce a otevřeme si zde terminál. Ten můžeme otevřít několika způsoby, nejjednodušší je asi kliknout na cestu ve složce a napsat do cesty cmd a potvrdit klávesou Enter na klávesnici:

Nyní do něj zadáme příkaz:

composer create-project nette/sandbox hello-world

Poslední slovo hello-world je název našeho projektu, tedy i složky. Zkontrolujme složku, kde jsme otevřeli příkazový řádek a ověřte, zda se vytvořila nová složka s názvem hello-world/.

Teď nám zbývá si projekt otevřít ve svém IDE, většinou stačí kliknout na File -> Open project a vybrat cestu k našemu projektu.

Pokud bychom nechtěli mít nejaktuálnější verzi či nám instalace nějak nešla, můžeme si stáhnout projekt pod článkem a začít pracovat na něm.

Tímto jsem vytvořili první projekt postavený na Nette! :)

Směrování

Jelikož vlastní soubor index.php se nachází ve složce www/, tak výsledná adresa bude vypadat jako http://localhost/hello-world/www/. Elegantní cesta, jak to vylepšit v rámci Apache serveru, je změnit v kořenovém adresáři projektu soubor .htaccess. Pomocí něj se poté můžeme snadno přesměrovat do složky www/ a URL adresa bude vypadat jako http://localhost/hello-world/.

Pokud soubor .htaccess v kořenovém adresáři otevřeme, najdeme v něm pouze jednu direktivu:

Require all denied

Direktiva znamená, že pokud by chtěl jít někdo do kořenové složky projektu, tak k němu nebude mít přístup (napíše mu to error). Direktivu smažeme a vložíme do něj pouze tento kód:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^$ www/ [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !^www/
    RewriteRule ^(.*)$ www/$1
</IfModule>

Pokud děláme pouze takovou zkoušku, je tento způsob vhodný. Pokud děláme ale reálnou aplikaci, kterou bychom chtěli třeba i prodávat, nikdy toto nedělejte. Uživatel pak bude moct zobrazit další složky (např logy či zdrojáky) a je to velká bezpečnostní díra.

Alternativním řešení je přinutit Apache, aby automaticky první navštívil složku www/. To můžeme udělat dvěma způsoby. Prvním z nich je nastavit proměnnou DocumentRoot v konfiguračním souboru httpd.conf. Pokud tuto proměnnou nastavíte na www složku Nette, máte zajištěno, že se uživatel nedostane mimo (po nastavení je potřeba restartovat Apache server). Alternativním způsobem je nastavit tzv. virtuální hosty. Jejich nastavení je nicméně mimo obsah tohoto článku.

Tím se dostáváme k dnešnímu výsledku, kdy by se nám měla zobrazit podobná stránka, jako vidíme níže. Potom jsme vše udělali správně a jsme tedy na správné cestě k naučení se Nette a k příští lekci:

Další způsob si ukážeme v další lekci přímo přes vestavěný server PHP :)

Requirements checker

Někdy se může hodit ověřit, zda nastavení Apache a PHP splňuje podmínky pro správný běh Nette frameworku. Toto se již ověřovat nemusí, Nette bude běžet správně, pokud má minimální požadovanou verzi PHP. Pokud jste nainstalovali Nette dnes, berte text níže jako bezpředmětný.

Ve složce sandbox/www/checker/ se nacházel tzv. Requirement Checker. Spouštěl se zadáním adresy - http://localhost/hello-world/checker/ a umožňoval ověřit správnost všech závislostí:

Všechny řádky by měly svítit zeleně. Pokud je nějaký žlutý, tak to nevadí a framework pojede, jen nebudete moci využívat danou funkcionalitu. Ale jak jsem již zmínil, v současné době je již tento nástroj zbytečný a už není součást instalace.

Příště, v lekci První aplikace v Nette, si vytvoříme svou první aplikaci v Nette. Prozradím, že se jedná o jednoduchou kalkulačku.


 

Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 852x (6.67 MB)
Aplikace je včetně zdrojových kódů v jazyce PHP

 

Předchozí článek
Úvod do Nette frameworku pro PHP
Všechny články v sekci
Základy Nette frameworku
Přeskočit článek
(nedoporučujeme)
První aplikace v Nette
Článek pro vás napsal michalkasparec
Avatar
Uživatelské hodnocení:
61 hlasů
Autor se věnuje backendovým systémům postavených na .NET Core a databázím MS-SQL a pracuje ve společnosti Avast Software..
Aktivity

 

 

Komentáře
Zobrazit starší komentáře (45)

Avatar
Jaroslav Patrný:23.8.2020 9:03

Jaroslav Patrný

Už jsem to vyřešil 8-), funguje mi i ten složitější projekt. Můžeš to smazat.

 
Odpovědět
23.8.2020 9:03
Avatar
Ondřej Vaňkát:13.12.2020 23:18

Ahoj, co je prosím špatném na tom řešení s htaccess ? Je potom i v tom eshopu, myslel jsem že to takto stačí, nasměrovat pouze na složku www. Složky s logy a zdrojáky jsou přece o uroven výše, kam by se neměl uživatel dostat.
Díky

 
Odpovědět
13.12.2020 23:18
Avatar
Odpovídá na Ondřej Vaňkát
Ondřej Vaňkát:13.12.2020 23:45

Už jsem tedy zjistil, že skutečně se do těchto složek dostanu, ale to by mělo stačit nahradit celý access tímto, je to tak ?
RewriteEngine On
RewriteRule (.*) www/$1 [L]

 
Odpovědět
13.12.2020 23:45
Avatar
Petra Petty Kunzová:18.10.2021 22:49

Zdravím... téměř celé odpoledne jsem si hrála s instalací a hlavně vytvořením projektu. Pokud jsem tvořila v xampp/htdocs tak mi to hlásilo nenalezeno. Tak jsem to zkusila mimo (v User) a to už se povedlo . Jen jsem to pak ručně přestěhovala. Taky jsem zjistila, že NetBeans 12.3 má jen Nette 2 . ** A poslední zjištění je, že **Requirement Checker na zde uvedené adrese není a ani nikde jinde... Ale přesto se mi povedlo zobrazit gratulaci od Nette ;)
Já jen pokud si někdo bude taky lámat hlavu, proč to nejde vše podle tutoriálu zdejšího. Doufám, že mi to poběží i tak :)

Odpovědět
18.10.2021 22:49
Kam míří naše pozornost, tam energie a tam se i objeví naše výsledky .
Avatar
Odpovídá na Petra Petty Kunzová
Jan Zahradník:31. ledna 17:36

Tak mě to také nejde a hlásí, že nemůže najít balíček s touto verzí. I když přepíšu číslo podle verze, kterou mi ukazuje příkazový řádek. Opět nemůžu pokračovat bez toho, aniž by mi někdo poradil. Mrzí mě, že ty jsi dávala komentář k postupu před třemi měsíci a nic se evidentně nezměnilo.
Honza

 
Odpovědět
31. ledna 17:36
Avatar
Samuel Hél
Tým ITnetwork
Avatar
Odpovídá na Jan Zahradník
Samuel Hél:4. února 12:56

Ahoj,
příkaz pro composer jsem v článku upravil, je třeba odstranit konkrétní verzi. Z nějakého důvodu to již nejde, chtěli jsme zachovat kompatibilitu. V případě dalších problémů s instalací doporučuji stáhnout projekt pod článkem.

 
Odpovědět
4. února 12:56
Avatar
Jaroslav Zeman:6. května 7:09

Hezký den

Budu upřímný, hned tato první lekce nepatří mezi ty, které by nového uživatele přesvědčila, že Nette je bez chyb. Klobouk dolů autorovi za snahu. Takže konec keců a k věci. Po nainstalování Nette dle uvedeného příkazu z lekce přes komposer a pokus o spuštění končí vše 500 a v logu je hláška, že se to nemůže připojit do databáze, jenže jakákoliv snaha nastavit config se míjí účinkem, až po přímém zásahu do kódu, kde jsou nahrazeny defaultní parametry funkčními se sice chyba eliminuje ale končí to jinou, nebudu dále specifikovat, ztráta času. Asi by to chtělo občas to co pustíte do světa vyzkoušet. OK dobře stáhnu si první lekci v zip, přičemž autor píše porovnejte si rozdíly, ale ty jsou už na úrovni adresářů, např. v zip není adresář config. To co je v lekci dole, funguje, zase ale, až do doby, kdy dojde k pokus o spuštění admineru, opět spoustu chyb a ne zrovna, že to nemá přístup do databáze. Navíc je frustrující proč některé chyby jdou do klienta a jiné do souboru, proč to není jednotné a za mne, pro začínajícího uživatele, by bylo lepší, aby šly do klienta, nejde přece o produkci. Další věc je, ok mám to částečně funkční, adminera oželím, a co kdybych si chtěl doinstalovat přes komposer všechny ostatní balíčky Nette jen tak kouknout pod pokličku, zkouším composer require nette/nette? Ha zase chyba, kolize na úrovní verzí balíčků, ach jo, zase zklamání. Sorry, nejde o to být negativní, ale aspoň v úvodních lekcích se snažte udržet věci pohromadě aby to fungovalo na první pokus a když víte (nejste nováčci), že to je extrémně závislé na něčem co nemůžete ovlivnit, tak to dám do read.me.

Jarda Zeman

 
Odpovědět
6. května 7:09
Avatar
Lukáš Šimoník:15. září 10:13

Zdravím, po nastavení presmerovania v .htaccess a spustení projektu sa mi zobrazí táto chybová stránka. Vedel by mi prosím niekto poradiť čo s tým, prípadne ako nastaviť MYSQL databázu na apache serveri? Vďaka

 
Odpovědět
15. září 10:13
Avatar
Nat Owen
Člen
Avatar
Nat Owen:26. září 17:59

Tak já nevím co dělám špatně... :(

 
Odpovědět
26. září 17:59
Avatar
Nat Owen
Člen
Avatar
Nat Owen:26. září 18:15

Tak jsem se posunula o kousek dál, ale zde opravdu nevím co mám špatně.. prosím poradil by mi někdo?

 
Odpovědět
26. září 18:15
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 55. Zobrazit vše