Udržitelnost WordPress webu - WordCamp Praha 24.2.2018 · Prezentace bude dostupná na GitHubu....
Transcript of Udržitelnost WordPress webu - WordCamp Praha 24.2.2018 · Prezentace bude dostupná na GitHubu....
Obsah
• Prémiové šablony a pluginy
• Struktura
• Nástroje
• Verzování
• Deployment
• Testování
• DokumentacePetr Hlavička: Udržitelnost WordPress webu 2/58
Co pro mě znamená, že je projekt udržitelný?
Petr Hlavička: Udržitelnost WordPress webu - Úvod 4/58
Cíl přednášky.
Petr Hlavička: Udržitelnost WordPress webu - Úvod 5/58
Proč je dobré tu udržitelnost řešit?
Petr Hlavička: Udržitelnost WordPress webu - Úvod 6/58
Myslet dopředu.
Petr Hlavička: Udržitelnost WordPress webu - Úvod 7/58
Jaké problémy vidím s premiovými šablonami?
• aktualizace
• co maj "pod kapotou"?
• uzamčení obsahu (theme/plugin lock-in)
Petr Hlavička: Udržitelnost WordPress webu - Prémiové šablony a pluginy 8/58
Nad čím se zamyslet při výběru pluginu?
• Opravdu je potřeba?
• Jak kri4cký bude pro web?
• Jaká je podpora? Vývoj?
• Je bezpečný? (WPScan Vulnerability Database)
Petr Hlavička: Udržitelnost WordPress webu - Prémiové šablony a pluginy 9/58
Shrnu&
• Nemáte kontrolu nad vývojem šablony / pluginu.
• ⤵ závislos= ⤴ kontrola ➡ udržitelnější.
• ⤵ závislos= ⤴ čas ➡ dražší.
Petr Hlavička: Udržitelnost WordPress webu - Prémiové šablony a pluginy 10/58
Webové frameworky
• Struktura
• Nástroje
• Verzování
• Deployment (CI/CD)
• Testování
• Dokumentace
Petr Hlavička: Udržitelnost WordPress webu - Webové frameworky 11/58
Struktura WordPressusite/├── index.php├── license.txt├── readme.html├── wp-activate.php├── wp-admin/├── wp-blog-header.php├── wp-comments-post.php├── wp-config.php├── wp-config-sample.php├── wp-content/│ ├── themes/│ ├── languages/│ └── plugins/├── wp-cron.php├── wp-includes/├── wp-links-opml.php├── wp-load.php├── wp-login.php├── wp-mail.php├── wp-settings.php├── wp-signup.php├── wp-trackback.php└── xmlrpc.php
Petr Hlavička: Udržitelnost WordPress webu - Struktura 12/58
Struktura WordPressusite/├── index.php├── license.txt├── readme.html├── wp-activate.php├── wp-admin/├── wp-blog-header.php├── wp-comments-post.php├── wp-config.php├── wp-config-sample.php├── wp-content/│ ├── themes/│ ├── languages/│ └── plugins/├── wp-cron.php├── wp-includes/├── wp-links-opml.php├── wp-load.php├── wp-login.php├── wp-mail.php├── wp-settings.php├── wp-signup.php├── wp-trackback.php└── xmlrpc.php
Petr Hlavička: Udržitelnost WordPress webu - Struktura 13/58
Struktura WordPress šablony
Petr Hlavička: Udržitelnost WordPress webu - Struktura 14/58
Struktura WordPress šablony
Proč to řešit?
• Povinné soubory šablony:
• index.php
• style.css
Petr Hlavička: Udržitelnost WordPress webu - Struktura 15/58
Struktura WordPress šablony
Jaké máme možnos-?
• Oficiální (doporučená)1
• Použi7 WordPress frameworku
• Vlastní
1 Organizing Theme Files | WordPress Developer Resources
Petr Hlavička: Udržitelnost WordPress webu - Struktura 16/58
Oficiální (doporučená)theme/├── 404.php├── archive.php├── assets/├── comments.php├── footer.php├── front-page.php├── functions.php├── header.php├── inc/├── index.php├── page.php├── README.txt├── rtl.css├── screenshot.png├── search.php├── searchform.php├── sidebar.php├── single.php├── style.css└── template-parts/
Petr Hlavička: Udržitelnost WordPress webu - Struktura 17/58
Oficiální (doporučená)theme/├── 404.php├── archive.php├── assets/├── comments.php├── footer.php├── front-page.php├── functions.php├── header.php├── inc/├── index.php├── page.php├── README.txt├── rtl.css├── screenshot.png├── search.php├── searchform.php├── sidebar.php├── single.php├── style.css└── template-parts/
Petr Hlavička: Udržitelnost WordPress webu - Struktura 18/58
Použi& WordPress frameworku
• Usnadnění vývoje.
• Možný odklon od standardního vývoje šablon.
• Další závislost v projektu.
• Hotová dokumentace.
Petr Hlavička: Udržitelnost WordPress webu - Struktura 19/58
Ukázka struktury Asselytheme/├── app├── bootstrap├── composer.json├── composer.lock├── config├── functions.php├── gulpfile.js├── index.php├── package.json├── public├── README.md├── resources├── screenshot.png├── storage├── style.css└── vendor
Petr Hlavička: Udržitelnost WordPress webu - Struktura 20/58
Ukázka struktury Asselytheme/├── app├── bootstrap├── composer.json├── composer.lock├── config├── functions.php├── gulpfile.js├── index.php├── package.json├── public├── README.md├── resources├── screenshot.png├── storage├── style.css└── vendor
Petr Hlavička: Udržitelnost WordPress webu - Struktura 21/58
Použi& WordPress frameworku
Doporučení
• Druh implementace.
• Zvážit omezení, které mají.
• Vývoj a podpora frameworku.
• Vyzkoušet!
Petr Hlavička: Udržitelnost WordPress webu - Struktura 22/58
Nelíbí se ani jedna z variant?
23/58
Vlastní strukturaDoporučení
• Samostatný git repozitář.
• S dokumentací.
• Nechte se inspirovat.
• Myslet dopředu.
Petr Hlavička: Udržitelnost WordPress webu - Struktura 24/58
Struktura WordPress pluginu
• Princip stejný jako u šablon.
• Kde se inspirovat:
• WordPress Plugin Boilerplate a s =m spojený Plugin Directory Boilerplate.
• Frameworky: WordPress Plugin Framework, Herbert, WordPress Plugin Template.
Petr Hlavička: Udržitelnost WordPress webu - Struktura 25/58
Struktura souborů je pouze základ
• Standardizovat si kód
• Vlastní standardy
• Cizí standardy např. WordPress Coding Standards + kontrola (WordPress Coding Standards for PHP_CodeSniffer)
• Standardizovat si nastavení editoru
• Soubor .editorconfig (editorconfig.org)
Petr Hlavička: Udržitelnost WordPress webu - Struktura 26/58
Je vhodné předem informovat klienta o nestandardních komponentách
projektu.
Petr Hlavička: Udržitelnost WordPress webu - Struktura 27/58
Nástroje
• WP-CLI
• GenerateWP
• Plugin Developer + jim doporučené pluginy
• Případné nástroje frameworků.
Petr Hlavička: Udržitelnost WordPress webu - Nástroje 28/58
Lokální vývojové prostředí• přímo
• hotové řešení
• WPLib Box, Local (bývalý Pressma>c) či Trellis pro Bedrock.
• Vagrant
• VCCW
• Docker
• Local WordPress Development with Docker: 3 Easy Steps & Using wp-cli with Docker
Petr Hlavička: Udržitelnost WordPress webu - Nástroje 29/58
Offline dokumentace
• Dash - macOS, iOS
• Zeal - Windows, Linux
• Velocity - Windows
Petr Hlavička: Udržitelnost WordPress webu - Nástroje 30/58
Verzování
• Nic 2x
• Jen svoji práci
• Vše kri5cké
Petr Hlavička: Udržitelnost WordPress webu - Verzování 31/58
Jaké jsou možnos-?
• Git submoduly
• Composer
• VersionPress
Petr Hlavička: Udržitelnost WordPress webu - Verzování 32/58
Git submoduly
• Propojování git repositářů.
• WordPress na GitHub
• WP Plugins na GitHub
Petr Hlavička: Udržitelnost WordPress webu - Verzování 33/58
Git submoduly
Ukázka strukturysite/├── index.php├── wp-config.php├── wp-content/│ ├── plugins/│ │ └── wordpress-seo/ # Plugin jako submodul│ └── themes/│ └── theme/ # Vlastní šablona├── wp-cli.yml # Info pro WP-CLI, kde je WP└── wp/ # WordPress jako submodul
Petr Hlavička: Udržitelnost WordPress webu - Verzování 34/58
Git submoduly
Co se výsledně verzujesite/├── index.php├── wp-config.php├── wp-content/│ ├── plugins/│ │ └── wordpress-seo/ # Plugin jako submodul│ └── themes/│ └── theme/ # Vlastní šablona├── wp-cli.yml # Info pro WP-CLI, kde je WP└── wp/ # WordPress jako submodul
Petr Hlavička: Udržitelnost WordPress webu - Verzování 35/58
Git submoduly
Výhody
• Jen důležité.
• Verze WP a pluginů.
• Žádný další nástroj.
• Jednoduchý deployment pomocí Git-Ep.
Petr Hlavička: Udržitelnost WordPress webu - Verzování 36/58
Git submoduly
Nevýhody
• Náročnější správa verzí WP a pluginů.
• Nelze aktualizovat pluginy a ani WP z admina či WP-CLI.
• Klade vyšší nároky na znalost gitu.
Petr Hlavička: Udržitelnost WordPress webu - Verzování 37/58
Composer
• Balíčkovací systém pro PHP.
• Možné díky WordPress Packagist - WordPress sám
o sobě nepodporuje Composer2.
• Využívá např. Bedrock, WP Starter a další.
2 #23912 (Add Composer package descrip6on) – WordPress Trac
Petr Hlavička: Udržitelnost WordPress webu - Verzování 38/58
Composer
Ukázka: instalace Bedrocku
1. composer create-project roots/bedrock
2. Nastavení DB, WP Salt a další v souboru .env.
3. Hotovo.
Petr Hlavička: Udržitelnost WordPress webu - Verzování 39/58
Composer
Práce s Composerem
• Instalace pluginu: composer require wpackagist-plugin/wordpress-seo
• Aktualizace WP a pluginů: composer update
Petr Hlavička: Udržitelnost WordPress webu - Verzování 40/58
Ukázka struktury Bedrockusite/├── config/│ ├── environments/│ │ ├── development.php│ │ ├── staging.php│ │ └── production.php│ └── application.php # Primary wp-config.php├── vendor/ # Composer dependencies└── web/ # Virtual host document root ├── app/ # WordPress content directory │ ├── mu-plugins/ │ ├── plugins/ │ ├── themes/ │ └── uploads/ └── wp/ # WordPress core
Petr Hlavička: Udržitelnost WordPress webu - Verzování 41/58
Composer
Výhody
• composer.json
Petr Hlavička: Udržitelnost WordPress webu - Verzování 42/58
Composer
Nevýhody
• Nutný deployment.
• Vyšší požadavky na hos9ng.
• Nelze aktualizovat pluginy a ani WP z admina či WP-CLI.
Petr Hlavička: Udržitelnost WordPress webu - Verzování 43/58
VersionPress
• Trochu jiné verzování, než předchozí varianty.
• Stále ve vývoji.
Petr Hlavička: Udržitelnost WordPress webu - Verzování 44/58
Další možnost.gitignore3
• Zakázání verzování všeho kromě vlastní šablony a
podpůrných souborů.
• Neverzuje se verze WP a pluginů.
• WP-CLI, aktualizace přímo, jednoduchý
deployment.
3 WordPress .gi-gnore
Petr Hlavička: Udržitelnost WordPress webu - Verzování 45/58
Zamyšlení: WP-CLI pro správu verzí WP a pluginů?
• wp-cli.json
• wp plugin install wordpress-seo, wp plugin update --all, wp core update, ...
• nové příkazy wp install, wp update
• tak kdyby se někdo nudil...
!
Petr Hlavička: Udržitelnost WordPress webu - Verzování 46/58
Možnos& verzování databáze
• DBV - webové rozhraní, umí vytvářet migrace
• MMP - CLI, umí vytvářet migrace
• DBVC - CLI, neumí vytvářet migrace
• VersionPress - pro podporované pluginy
Petr Hlavička: Udržitelnost WordPress webu - Verzování 47/58
Deployment
• Development -> Staging -> Produc7on.
• Součást CI4/CD5.
• Automa7cky.
5 Con&nuous delivery
4 Con&nuous integra&on
Petr Hlavička: Udržitelnost WordPress webu - Deployment 48/58
Deployment
Jak si vybrat?
• Dle požadavků
• Dle rozpočtu
• Dle preferencí
Petr Hlavička: Udržitelnost WordPress webu - Deployment 49/58
Deployment
Obecné požadavky
• Specifickou strukturu (pro služby nebo nástroje pro WP)
• Repositáře na GitLab/GitHub (pro automaBcký deploy)
• FTP nebo nejlépe VPS
Petr Hlavička: Udržitelnost WordPress webu - Deployment 50/58
Deployment: Nástroje
• Jednoduché (nízkonákladové):
• Git-:p - development -> produc?on
• Git na hos?ngu (některé sdílené mají podporu gitu) - vlastní řešení (git pull) nebo VersionPress plugin
• Nástroje pro WP (nutný SSH přístup a další u?lity na straně serveru):
• wp-deploy - Capistrano
• Evolu?on WordPress - Vagrant, Ansible, Capistrano
• WP Stack - Capistrano
• Wordmove - Ruby Gem pro development <=> produc?on
• DebOps for WordPress - Python, Ansible, DebOps
• bedrock-capistrano - Capistrano pro Bedrock
• Trellis - Vagrant, Ansible pro Bedrock
Petr Hlavička: Udržitelnost WordPress webu - Deployment 51/58
Deployment: Služby
• Univerzální služby:
• DeployBot
• DeployHQ
• WP služby:
• Pantheon
• WP Engine
• VersionPress.com
• Presslabs, GiFum
• Flywheel
Petr Hlavička: Udržitelnost WordPress webu - Deployment 52/58
Deployment: Zajímavé
• Deploy pouze šablony či pluginu
• WP Pusher
• GitHub Updater
Petr Hlavička: Udržitelnost WordPress webu - Deployment 53/58
Testování• Plugin Unit Tests - PHPUnit, WP-CLI
• Codecep9on pro WP - přes Composer, Integra9on Tests, WordPress Func9onal Tests, Acceptance Tests, BDD
• Zajímavé odkazy:
• WP Test - kolekce dat pro testování WP
• Unit Tes9ng WordPress Plugins with PHPUnit
• Introduc9on to WordPress Unit Tes9ng
Petr Hlavička: Udržitelnost WordPress webu - Testování 54/58
Dokumentace
• Rychlejší orientace v projektu.
• Stručně. Jasně.
• Wiki u GitLab/GitHub.
• Dokumentovat i kód (PHP DocumentaHon Standards).
Petr Hlavička: Udržitelnost WordPress webu - Dokumentace 55/58
Shrnu&
Petr Hlavička: Udržitelnost WordPress webu 56/58
Dotazy?
Petr Hlavička: Udržitelnost WordPress webu 57/58
Prezentace bude dostupná na GitHubu. Sledujte @WordCampPraha na Twi?eru.
Děkuji za pozornost.
Petr Hlavička
hlavicka.cz
Petr Hlavička: Udržitelnost WordPress webu 58/58