← Zpět na všechny články blogu

Bez FTP a starostí: Nasazení NF aplikací na VPS pomocí Gitu

Honza Černý
Honza Černý Aktualizováno 1. 11. 2024 – 5 min. čtení
Blog

Doba, kdy jsme soubory na server nahrávali výhradně pomocí FTP, je naštěstí dávno pryč. I když samozřejmě víme, že můžeme využít i nástroje jako SFTP nebo Rsync… to přenecháme jiným a ukážeme si něco úplně jiného.

S příchodem verzovacích systémů a jejich snadné integrace do editorů a IDE můžeme říct, že Git je dnes všude kolem nás. Platformy jako GitHub, GitLab a další nástroje pro verzování aplikací jsou dostupné za nízké ceny, nebo dokonce zdarma. Nebudeme se zde pouštět do toho, který z nich je nejlepší a proč – to necháme jiným a jejich nekonečným diskuzím na internetu. 🙂

Co ale všechny tyhle systémy spojuje, je právě Git na podvozku. Proto jsme i my přidali podporu Gitu do VPS Centra. Můžete ho tak používat jako jednoduchý privátní Git server. Pokud potřebujete webové rozhraní a další vychytávky, které GitLab nabízí, mrkněte na návod, jak si snadno rozběhnout GitLab na svém VPS. Teď ale zpět k našemu minimalistickému Git serveru v rámci VPS Centra.

Jak si rozběhnout Git ve VPS Centru

Bez klíče a uživatelů to nejde

Do Gitu jako takového se uživatelé přihlašují pomocí SSH a přihlašovacích certifikátů. Proto to úplně první, kam se musíte vydat, je založit v sekci Uživatelé nového uživatele a přiřadit mu SSH klíč. Mimochodem, jde o stejný klíč, který máte na svém počítači propojený pro práci s Gitem (lze tedy použít stejný klíč, co používáte pro GitHub, GitLab, nahrává se pouze veřejná část klíče).

VPS Centrum

Vyzkoušejte zdarma naši aplikaci pro správu serveru a domén. Budete si připadat jako zkušený administrátor.

Uživatele máte, tak teď si založte nový Git repozitář.

Přejděte do nastavení domény, do sekce Git. Nový repozitář doporučujeme pojmenovat podobně jako doménu samotnou (pro lepší přehled). Deploy složku nastavte jako hlavní www složku, povolte automatický deploy z větve master a nezapomeňte povolit přístup uživateli s SSH klíčem. Ten, který máte na svém počítači nastavený pro práci s Gitem.

Mezitím si na počítači připravte základní aplikaci s Nette Framework (přímo dle dokumentace). 

composer create-project nette/web-project admin-git-example

Projekt doporučujeme otevřít například ve Visual Studio Code s integrovaným Gitem a terminálem. Upravte si šablonu a můžete se pustit do propojení s Gitem na svém serveru.

Do e-mailové schránky vám mezitím dorazí zpráva o vytvoření repozitáře a instrukce, jak stávající kód na server poslat.

Na lokálním počítači si ve složce vytvořte čistý Git repozitář a přidejte všechny soubory projektu.

git init

git add .

git commit -m 'init'

Následně si přidejte jako remote server svůj právě vytvořený Git repozitář a pushněte projekt na server.

git remote add origin cf380@tester.vas-server.cz:/git/cf380/muj-server-website-muj-server.cz.git 

git branch -M master 

git push -u origin master

Nejspíše bude třeba povolit nový server a přidat ho do známých hosts.

Freelo - Nástroj na řízení úkolů a projektů

Přidej se, pozvi svůj tým a klienty, rozděl práci a sleduj, jak se úkoly dají do pohybu.

O úspěšném deploy na server se dozvíte z výstupu na konci vykonaného příkazu. Ten potvrdí, že kód byl správně odeslán a nasazen do zvolené složky.

Teoreticky by vše mělo fungovat, avšak je tam jedno drobné „ale.“

Pošlete Apache o dům dál

Chyba 403 je způsobena tím, že Nette Framework aplikace se neukládá přímo do rootu projektu (jak je běžné třeba u WordPressu nebo malých statických stránek). Aby aplikace fungovala správně, je třeba nastavit směrování do podsložky www, kde se nachází i veřejná část aplikace.

Pro správné nastavení upravte document_root pro danou doménu. V konfiguračním souboru Apache přidejte ke stávající cestě ještě jedno /www (přibližně kolem řádku 80). Stejnou úpravu proveďte i pro HTTPS verzi na portu 443. Tím Apache přesměrujete přímo na veřejnou složku aplikace.

DocumentRoot /www/hosting/muj-server.cz/www/www

a

DocumentRoot /www/hosting/muj-server.cz/www/www

Ano, jde o dvě stejné www/www za sebou. První je pro definici subdomény a druhé je pro definici public složky z NF.

Po nastavení SSL certifikátu Let’s Encrypt doporučujeme zkontrolovat, že všechno prošlo, jak má a vaše subdoména na www je skutečně zabezpečená. I tak může celý proces chvilku trvat.

Po deployi spalte… cache

Skoro by se zdálo, že máme hotovo, ale jak se v IT světě říká: „Dva největší problémy při programování jsou invalidace cache, pojmenování věcí a chyby o jedničku.“ 

Na problém s cache bychom stejně brzy narazili. Když totiž provedete změnu v kódu a „pushnete“ ji do větve master, pochopitelně očekáváte, že na stránkách uvidíte nějakou změnu. Tady byste však stále viděli verzi původní. Schválně si to vyzkoušejte. Je to tím, že Nette Framework na serveru předgeneruje Latte šablony na PHP kód a v produkčním režimu se o jejich přegenerování už nezajímá z performance důvodu.

Abychom tomu předešli, při další změně a pushnutí, stačí deploy doplnit o vlastní příkaz – smazání obsahu temp složky. Tím zajistíte, že se při každém deployi cache automaticky smažou, a server si vytvoří nové cache soubory nejen pro Latte šablony, ale i pro DI container apod.

rm -rf ./temp/*

Po následné úpravě kódu v Latte šabloně a pushnutí na server se po deploy procesu cache automaticky smaže. Vy tak máte dostupnou a viditelnou poslední verzi stránek.

Tak to bychom měli. Základní nastavení pro snadný deploy Nette Framework aplikace na váš server s VPS Centrem je hotový. Konec otravnému nahrávání souborů. 

V dalším z pokračování si ukážeme, jak přidat automatické migrace databáze.

Zůstaňte s námi v kontaktu

Jednou za měsíc posíláme souhrn novinek. Nemusíte se bát, spamovat vás nebudeme a odhlásit se můžete kdykoliv...

Karel Dytrych
Tým Váš Hosting
Vyzkoušejte náš trial na týden zdarma

Garance 14denní záruky vrácení peněz

Vyzkoušejte server na týden zdarma

Vyzkoušet server