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:

Odvozené „velké weby“:

Jednoúčelovější, „malé weby“:

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

  1. Vytvořte virtualhosty s příslušnými názvy, které smeřují vždy do cesta_k_adr/nazev_domeny/www.
  2. Kvůli mezidoménovým ajaxům přidat ke všem webům do <VirtualHost>:
  3. Je také nutné povolit short_tags v php.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 do master 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