Rekrea weby: Informace pro vývojáře
Něco ti nejde? Pomůže ti Martin Michálek: martin@vzhurudolu.cz, T 724 071 700.
V jednom systému spravujeme následující weby. V závorce jsou lokální verze, tak jak běží po úspěšné instalaci prostředí. Ta je popsaná níže.
Hlavní web:
- http://dovolena.ck-rekrea.cz/ (http://dovolena.ck-rekrea.local/)
- http://www.ck-rekrea.cz/admin/ (http://ck-rekrea.local/admin/)
Odvozené „velké weby“:
- http://www.e-slovensko.cz/ (http://e-slovensko.local)
- http://www.tuzemska-dovolena.cz/ (http://tuzemskadovolena.local/)
- http://www.rywal.cz/ (http://rywal.local/)
- http://www.termalnikoupaliste.cz/ (http://termalnikoupaliste.local/)
Jednoúčelovější, „malé weby“:
- http://www.e-sturovo.cz/ (http://e-sturovo.local/)
- http://www.e-podhajska.cz/ (http://e-podhajska.local/)
- http://www.velkymeder.cz/ (http://velkymeder.local/)
- http://www.besenova.cz/ (http://besenova.local/)
- http://www.e-senec.cz/ (http://e-senec.local/)
- http://www.e-patince.cz/ (http://e-patince.local/)
- http://www.hotelyjeseniky.cz/ (http://hotelyjeseniky.local/)
- http://www.hotely-luhacovice.cz/ (http://hotely-luhacovice.local/)
1. Instalace backend prostředí (Apache, PHP/Nette, MySQL)
Pro zjednodušení běhu doporučujeme některů AMPů: Na Macu MAMP Pro, na Windows XAMP.
PHP
Projekt pro svůj běh vyžaduje PHP ve verzi 5.6, na vyšší verze PHP není zatím připraven.
Databáze
- instalovat mysql server ve verzi alespoň 5.5 nebo vyšší
- založit si mysql databázi
rekrea
, username/pas:rekrea
/rekrea
- dostat kopii aktuální verze db a naplnit tedy svoji daty
Databáze je větší, proto pomůže importovat přes software jako Sequel (Mac) nebo příkazovou řádku:
Import přes phpMyAdmin bývá nespolehlivý. V php.ini je minimálně nutné zvýšit čas pro běh skriptu. Viz Google.
Stáhnutí repozitáře
Repozitář je na Bitbucketu, prostě je potřeba naklonovat repozitář.
Adresáře
Pokud jste na Macu/Linuxu, pak v adresářích www u konkrétních webů (např. besenova.cz/www/
) vytvořit adresář cache/
s právy zápisu pro všechny (kvůli Nette).
Lokální domény
Návod pro editaci hosts
souboru a přidání VirtualHost do httpd-vhosts.conf
pro XAMPP na Windows. Následují nastavení specifická pro Rekreu.
Na lokálním Apache serveru a ve hosts
souboru pak nastavit všechny rekreí domény na nazev-domeny.local
(např. dovolena.ck-rekrea.local
, e-slovensko.local
, velkymeder.local
).
Koncovka .local
zajistí, že systém správně rozpozná development prostředí a tedy správné globální proměnné, hesla do db atp.
Domény je možné vyčíst z názvů adresářů v kořenovém adresáři repozitáře.
Lokální VirtualHost
- Vytvořte virtualhosty s příslušnými názvy, které smeřují vždy do
cesta_k_adr/nazev_domeny/www
. - Kvůli mezidoménovým ajaxům přidat ke všem webům do
<VirtualHost>
: - Je také nutné povolit
short_tags
vphp.ini
.
Ukázka httpd-vhosts.conf
:
2. Instalace frontend prostředí (NPM, Grunt)
Assety – JS, CSS nebo obrázky – se při práci na lokále kompilují do lepších verzí (spojují, minifikují atd.). Potřebujeme k tomu Grunt. A o frontend závislosti se nám stará NPM.
Nastavení frontend prostředí
Vše v adresáři kde máš root repozitáře.
První instalace
Budeš potřebovat nainstalovaný Git do příkazové řádky, dále pak Node.js a Grunt a Bower.
1) Instalace Grunt.js:
2) Stažení všech balíčků:
3. Používání frontend prostředí
Správa balíčků
Při každé změně package.json:
Práce s Gruntem
Zobrazení všech úkolů:
Při práci v LESS a JS souborech je potřeba spouštět watch task:
Spustí prohlížeč s nastartovaným browserSync
a watch
task.
Distribuce CSS a JS
Kompilace LESS souborů na localhostu
Výchozí grunt
task kompiluje jen rekrea.css
, protože obvykle na lokále designujeme a k tomu stačí jeden web. Kompilace všech assetů pro všechny weby na produkci se pak dělá pomocí grunt dist
.
Pokud chci testovat CSSka na jiných webech než dovolena.ck-rekrea.local, potřebuji mít nastavený Access-Control-Allow-Origin "*"
. Viz nastavení projektu výše.
Distribuce JS
Minimalizovaný balíček téměř všech JS souborů v jednom pro použití na produkci i lokále připravím takto:
Distribuce CSS+JS
Alternativně prostě spustím výchozí úkol Gruntu, ten provede úkoly js
i css
:
Práce na Intra
Pro interní klientskou sekci (např. dotazníky) používáme jiná CSS než pro zbytek - vycházejí z Bootstrapu. Viz intra.less
a tato Grunt úloha:
5. Spolupráce kolem Git repozitáře
master
- produkční větev – co pushnete to za pár minut projeví na produkci.devel
- vývojová branch, která slouží pro kontinuální vývoj všech featur. Sem napřed implementujeme nové funkce a až po otestování napříč vývojáři se to pustí do master.- Větve pro konkrétní vlastnosti pojmenováváme podle úkolů v Trellu - např.
141-svg-ikonky
. Merge feature branches domaster
dělá buď Martin nebo Přemek. - Hlavní rozdíly mezi prostředími a editory sjednocujeme pomocí EditorConfig. Ujistěte se prosím, že váš editor obsahuje podporující plugin.
6. Deployment
Po každém pushnutí do větve master
se spouští autodeploy pomocí https://www.deployhq.com/.
Tady je pak možné sledovat průběh nahrávání na server. Obvykle to trvá mezi do pěti minut.
Testovací prostředí zatím bohužel nemáme.
Následuje detailní dokumentace pro backend. Při rozjíždění projektu není třeba číst.
Rekrea weby: CRON úlohy
Generování sitemap.xml soborů
Pro generování mapy jednotlivých webů je připraven skript generator_sitemap.php
. Tento skript je spouštěn CRON úlohou, kdy výsledkem generování je na každém z webů několik dílčích souborů sitemap_xxxxxx.xml
a hlavní soubor sitemap.xml
obsahující linky na tyto dílčí soubory - viz. specifikace. Pokud je zapnuto zipování (příznak compress=TRUE ve volání metody vytvorSitemapIndex
ve skriptu), jsou dílčí soubory gzipovány a mají příponu .gz
. Hlavní soubor není nikdy zipován.
To, které dílčí soubory jsou na konkrétním webu generovány je určeno tím, které veřejné metody třídy AdmSitemapsPresenter
jsou pro daný web volány. Takto lze konfigurovat složení sitemap souboru pro konkrétní web.
Skript je spouštěn denně, vždy v 5:02 hodin.
Odesílání žádostí o feedback a upomínky na tyto žádosti
Na základě importovaných rezervací v adminově sekci "Klienti" jsou těmto klientům rozesílány emaily s žádostí o vyplnění dotazníku spokojenosti a také upomínky na tyto žádosti (po 7 dnech od odeslání žádosti bez reakce klienta). Obě sady odesílá jedna CRON úloha /cron/sendRatingRequestEmails.php
,
která zpracovává v nastavených dávkách jednotlivé záznamy a generuje emaily.
Skript je spouštěn ve dnech PO - ČT, vždy v 6:15 hodin a vyrábí log soubory sendRatingRequestEmails.log
a sendRatingRequestReminders.log
, kam se loguje vždy poslední spuštění skriptu.
Ostatní aktivní úlohy ( TODO - dopsat info k jednotlivým úlohám)
- denně v 5:05:
/scripts/delete_lm.php
- denně v 5:27:
/exporty/generuj_exporty.php
- existence souborů exportů je hlídána službou Uptime doctor v intervalu 30 min. Při absenci souborů exportu odesílá warningy Martinovi. - neděle v 5:19:
/exporty/generuj_ceny.php
- neděle v 5:21:
/exporty/parser.php
- */2:42
/cron/generuj_cenyod.php
- */2:43
/cron/generuj_obecne.php
Případné další info k tomuto: premek.koch@gmail.com, T 777 672 731