Nestor Encinas23.5.2018Zpět

Roots.io a Bedrock: WordPress na steroidech

Roots.io je dobrá volba pro vývojáře, kteří mají rádi CMS WordPress a chtějí ho používat, ale zároveň by chtěli postavit svůj web profesionálně a s dostatečnou mírou flexibility. Systém, který si popíšeme, rozjedeme na lokální instalaci za 20 minut. Dalších 10 minut zabere instalace nezbytných pluginů a komponent, a dalších 10 minut jen sledujeme, jak se vše stahuje a instaluje - čas na kafe. Za dalších 20 minut pak můžeme stránku rozjet na cílovém umístění.

Roots.io je kompletní řešení pro WordPress, které sestává ze tří nástrojů: Trellis, Bedrock a Sage. Můžeme je využít dohromady nebo každý zvlášť, záleží, co přesně pro váš projekt potřebujete.

V tomto článku se budeme zabývat převážně základem, což je Bedrock. Další dva nástroje jsou:

  • Trellis: umožní jednoduše a rychle nastavit kompletní WordPress server včetně prostředí lokálního, testovacího a produkčního. S nimi to umí veškerá kouzla, včetně deploy na jeden klik přes Ansible.

  • Sage: startovací šablona která nabízí pokročilý vývoj vašeho vzhledu s moderními front-end nástroji jako Gulp a Bower. Na oficiálním webu projektu najdete příklady stránek, postavených na tomto starteru.

Níže pokryjeme výhody, které nabízí Bedrock oproti standardnímu WordPressu a důvody, proč byste měli používat Bedrock na všechny WordPress projekty, bez ohledu na jejich velikost. Můžete se na to dívat skepticky. Vždyť přece WordPress používáte už řadu let, máte zaběhané postupy, rutinní operace, tipy a triky! Věřte mi, pokud Bedrock neznáte, stojí za vyzkoušení.

Takže není na co čekat, pojďme se podívat Bedrocku na zoubek.

Bedrock

Bedrock nám umožní vybrat si z typických vývojových prostředí, jako je production, staging a testing. Ve všech nabídne moderní vývojové nástroje, lepší adresářovou strukturu a vylepšenou bezpečnost pro WordPress vývoj.

Bedrock umožní spravovat instalaci a updatování WordPress jádra, pluginů a šablon pomocí Composeru. Pro ty z vás, kdo neznají Composer (snad jich moc není), tak jde o manager závislostí pro PHP s mnoha výhodami, například udržováním verzí knihoven mezi jednotlivými vývojáři na projektu. Composer tím napomáhá spolupráci v týmu a udržuje Git repozitář více přehledný, protože v něm zůstane jen váš kód.

Můžete také instalovat command-line rozhraní, zvané WP-CLI, které umožní volání mnoha operací ve WordPressu z příkazové řádky. Například:

  • přidat uživatele,

  • spravovat cache,

  • instalovat šablonu nebo plugin - běžnou cestou, nikoliv přes Composer.

Ano, čtete správně, při instalaci pluginů a témat můžete kombinovat cestu klasickou přes WP-CLI / WordPress administraci a cestu přes Composer.

WordPress je jeden z nejvíce rozšířených open-source CMS s dlouhou historií, a kvůli tomu je v současné době pochopitelně velmi častým terčem útoků a hackování. Často tomu napomáhá historický dluh, kdy například standardní WordPress stále využívá hashování hesel přes MD5, což by vás určitě mělo znepokojit, pokud pracujete s citlivými daty.

Řešením pro bezpečnost je Bedrock. Kromě mnoha jiných vylepšení nabízí plugin, který nahradí původní MD5 hashování hesel mnohem odolnějším řešením na bázi bcrypt hashe. Plugin se jmenuje wp-password-bcrypt.

Bedrock a srovnání s WordPressem

Standardní WordPress

Pro instalaci pluginů a šablon musíte použít WordPress admin panel, a to zabere nějaký čas klikáním v rozhraní.

Chcete-li instalovat pár nových pluginů, můžete to udělat instalací přímo z WordPress repozitáře, nebo pomocí uploadování zip souboru s pluginem / šablonou. Pokud to děláte pro jednu věc, asi to tolik času nezabere. Ale při instalaci 10 pluginů je ztráta času opakovat tento proces 10×.

Obecně jde o repetitivní manuální práci, což není nikdy dobrý přístup. Lidé dělají chyby, nejsou to stroje. Tomu chceme předcházet.

V tomto ohledu vám může Bedrock hodně pomoci. Troufnu si dokonce tvrdit, že pokud s WordPressem děláte na opakované bázi, vyzkoušíte-li jednou Bedrock, těžko se budete vracet zpět.

Standardní přístup  se vyznačuje těmito problémy:

  • Opakovaná a zdlouhavá operace pro přidávání pluginů / šablon.

  • Málo flexibilní kontrola nad updaty. V jádře je sice automatický updatovací mechanismus, ale že byste nad ním měli velkou kontrolu, to se říct bohužel nedá - ne bez řešení třetích stran.

  • Musíte si hlídat verze pluginů mezi lokálním, testovacím, produkčním, atd... prostředím vašeho webu

  • Musíte si hlídat, že nový plugin se instaluje a aktivuje také na dalších prostředích vašeho webu.

Inovativní Bedrock

Tento přístup přinese méně problémů díky automatizaci. Nyní jste schopni spravovat pluginy přes jeden jednoduchý příkaz a můžete mít jednoduchou konfiguraci přes PHP dotenv.

Composer:

  • update – pokusí se updatovat balíčky na nejnovější možnou verzi a přepíše soubor composer.lock s novým stavem věcí,

  • install – instaluje prostředí podle composer.lock

Rozdělení prostředí - máte ihned k dispozici:

  • development – pro lokální práci

  • staging – pro testování s klientem

  • production – produkční stránka

Nastavení prostředí. V adresáři config je specifický soubor který nahrazuje wp-config.php pro každé prostředí zvlášť. Není tak problém používat jiná nastavení, typicky přístupy k databázi, debug ano/ne, atd.

Pokud již WordPress používáte déle, možná znáte zmíněný WP-CLI. Tento nástroj funguje společně s Composerem a zde začíná opravdová automatizace. Pokud spustíte nějaký příkaz přes WP-CLI, automaticky si detekuje zda máte Composer nastavení u projektu, a pokud ano, aktualizuje jej s odpovídajícími změnani, které jste dělali přes příkazovou řádku.

Lepší struktura projektu. Bedrock umožní udržovat náš kód v lépe strukturované podobě. WordPress instalace je v samostatném adresáři wp, a náš kód pak v adresáři app, který nahrazuje wp-content.

Podívejme se na strukturu projektu na obrázku a popišme si jednotlivé věci:

Bedrock file structure

  • composer.json: spravuje verzi WP, pluginů, šablon a jiných knihoven

  • config: zde jsou soubory konfigurace WP

    • config/application.php: jde o globální konfiguraci pro všechna prostředí.  Je to v podstatě ekvivalent wp-config.php

    • config/environments: obsahuje nastavení specifická pro prostředí, která přepisují pro dané prostředí, co je deklarováno v application.php:

      • development.php: pro vývoj - obvykle lokální prostředí

      • staging.php: pro staging - demo, které si ladíte s klientem

      • production.php: produkce - zde běží finální web

  • vendor: zde budou uloženy externí závislosti spravované přes Composer, kromě pluginů a šablon

  • web: slouží ve vašem projektu jako kořenový adresář webu a dále se dělí:

    • web/app: toto je původní wp-content, přejmenovaný aby lépe shrnoval svoje určení. Zde budou vaše pluginy a šablony

    • web/app/mu-plugins:  Bedrock obsahuje speciální autoloader, který umožní standardní pluginy označit jako must use - musí být aktivovány

    • web/wp: toto je WordPress. Ano, logicky by měl být ve vendor, ale z historických omezení to není možné, proto takto.

    • web/wp-config.php: toto je WordPressem vyžadováno, ale ve finále tento soubor pouze nahraje configy zmíněné výše

Správa závislostí přes Composer - můžeme spravovat instalaci WP, pluginů a šablon přes Composer.

Ti z vás, kteří pracují s WordPressem denně, jistě uvítají jak výrazně Bedrock vaši práci zjednoduší. Integrace s WP-CLI je jednou z hlavních výhod tohoto nástroje.

Pokud jste dočetli až sem, troufám si tvrdit, že jsem vás alespoň trochu ovlivnil a Bedrock chcete vyzkoušet.

Co dál?

Existuje kompletní dokumentace a příklady na oficiální stránce.

Po zažití Bedrocku a jeho adoptování doporučuji pokračovat se Sage a Trellis.

Rekapitulace.

Výhody, které Bedrock nabízí, by měly být teď jasné. Proč tedy v Kurzoru Bedrock používáme:

  • Lepší struktura projektu.

  • Nezávislé repozitáře.

  • Podpora více prostředí.

  • Snadnější proces deploymentu.

  • Správa aktualizací přes Composer = šetří čas.

  • Vylepšuje bezpečnost.

= méně problémů, více automatizace.

Chceme vyzkoušet Sage a Trellis v dalších projektech. Zajímá-li vás, jak pracujeme s Wordpressem, odkážu vás na samostatný článek na našem anglickém webu.

Nestor Encinas

Web developer