Moodul 6 · 6.2
Uuendused, varukoopiad ja rollid
Moodul 6: Haldus ja turvalisus · Lugemisaeg: 11 minutit
Õpieesmärk: Pärast seda õppetundi oskad WooCommerce’i poodi uuendada ja varundada ilma tellimusi kaotamata ning jagada õigusi nii, et igaüks saab teha ainult seda, mida tal vaja on.
Põhimõisted: suur ja väike uuendus, andmebaasi uuendamine, laiendused ja ühilduvus, mallide ülekirjutused (template overrides), aegunud mallid, varukoopia enne uuendust, tellimused varukoopia ja taastamise vahel, HPOS-tabelid, rollid Poe haldur (Shop manager) ja Klient (Customer), vähimad õigused, versioonide näitamine, xmlrpc.php
Miks e-pood erineb tavalisest saidist
WordPressi kursuses (õppetunnid 7.2, 8.1 ja 8.2) on kirjas, kuidas WordPressi uuendada, varukoopiaid teha ja neid taastada. E-poe puhul kehtib see kõik, ühe suure erinevusega: andmebaas muutub terve päeva. Iga tellimus, iga klient, iga laoseisu muutus ja iga makse jõuab sinna. Infosaidi puhul kaotad eilse varukoopiaga kõige rohkem ühe postituse. E-poe puhul kaotad tellimused, mis on juba makstud.
Seepärast on selles õppetunnis kaks rusikareeglit:
- E-poe puhul on taastamine viimane samm, mitte esimene.
- Uuenda plaani järgi, mitte „korraks vahepeal reede pärastlõunal“.
WooCommerce’i uuendused
WooCommerce annab regulaarselt välja uusi versioone ja vahepeal väikseid parandusi. Versiooninumbril on kolm osa, näiteks 11.2.2. Viimase numbri muutus tähendab väikest parandust või turvauuendust; esimese või teise numbri muutus toob uusi funktsioone ja vahel muudatusi, millega laiendused või sinu teema peavad kohanema.
WooCommerce’i uuendamisel juhtub kolm asja, mida tavalise plugina puhul harvem näed:
- Andmebaasi uuendamine. Vahel peab WooCommerce tabeleid muutma. Siis näed halduses teadet, et andmebaasi uuendatakse; see käib taustal plaanitud toimingute kaudu (õppetund 7.3). Ära katkesta seda ja vaata jaotisest WooCommerce > Olek, kas see on valmis.
- Laiendused peavad kaasa tulema. Makse-, tarne- ja raamatupidamisühenduste pluginad näitavad, millise WooCommerce’i versioonini neid on testitud. Pluginate vaates näed hoiatust, kui laiendus uuemat versiooni ei nimeta. Loe oma makseplugina muudatusi enne uuendamist: kui makseplugin läheb katki, siis pood ei müü.
- Mallide ülekirjutused. Paljudel teemadel on WooCommerce’i mallidest oma koopiad (teema kaust
woocommerce/). Kui WooCommerce muudab originaali, muutub koopia aegunuks. Jaotises WooCommerce > Olek (Süsteemi olek) on allosas teema juures näha, milliseid malle teema üle kirjutab ja millised neist on aegunud. Aegunud mallidest võivad puududa uued väljad või need võivad anda vigu. Uuenda teemat või palu selle tegijalt uuendust.
Väikesed uuendused (viimane number) tee eelistatult kiiresti, kõige parem automaatselt, sest need parandavad sageli turvavigu. Suuri uuendusi testi kõigepealt testkeskkonnas (staging, õppetund 7.3), rahulikul ajal ja vahetult enne seda tehtud varukoopiaga.
Varukoopiad: mis taastamisel kaob
Näide. Theehuis Example teeb igal ööl kell 03.00 varukoopia. Teisipäeval kell 10.00 uuendab haldur WooCommerce’i ja pärast seda näitab tooteleht viga. Kella 03.00 ja 10.00 vahel tuli sisse kuus tellimust, mis on makseteenuse pakkuja kaudu makstud. Kui taastad nüüd kella 03.00 varukoopia, siis:
- need kuus tellimust on andmebaasist kadunud, kuigi raha on pakkuja juures olemas;
- pood ei tea enam, et laoseis on väiksem;
- pood võib hiljem saada pakkujalt veel teateid (webhooks) tellimuste kohta, mida ta ei tunne.
Seepärast:
- Tee varukoopia vahetult enne uuendust, mitte ainult öösel. Siis on auk võimalikult väike.
- Pane taastamisel kirja, millised tellimused tulid pärast varukoopiat (kirjadest „Uus tellimus“ ja oma pakkuja töölaualt) ning lisa need pärast käsitsi tagasi või ekspordi need eelnevalt.
- Taasta eelistatult ainult failid (vana plugina- või teemakaust), kui probleem on koodis, ja jäta andmebaas alles. Uuenduse saab sageli tagasi pöörata plugina eelmise versiooni paigaldamisega; WordPressi kursuse õppetund 8.2 näitab, kuidas sihipäraselt taastada. Kui uuendus on andmebaasi juba muutnud, ei pruugi vana versioon sellega enam töötada: seepärast testi kõigepealt testkeskkonnas.
- Varunda sagedamini kui tavalise saidi puhul: terve päeva tellimusi saav pood vajab andmebaasi varukoopiat vähemalt kord päevas, parem veel sagedamini, ning koopiat väljaspool serverit (reegel 3-2-1, WordPressi kursuse õppetund 8.1).
Alates WooCommerce 8.2-st on uute poodide tellimused eraldi tabelites (HPOS, õppetund 1.2), näiteks wp_wc_orders. Varundusplugin, mis võtab kaasa ainult „postitused“ või valib tabeleid nime järgi, peab ka need tabelid kaasa võtma. Kontrolli taastamistesti ajal (WordPressi kursuse õppetund 8.2), et tellimused on tõesti olemas.
WebOkés teeb WebOké Backups igal ööl varukoopia, mida hoitakse 30 päeva teises andmekeskuses (DA 16.1); lisaks saad ise enne uuendust teha varukoopia DirectAdminis või Installatronis. Teiste majutusteenuse pakkujate juures töötab see sarnaselt; küsi, kui tihti ja kui kaua koopiaid hoitakse.
Rollid: kes mida tohib
WooCommerce lisab WordPressile kaks rolli (WordPressi kursuse õppetund 3.3):
- Klient (Customer): kontoga klient. Näeb ainult oma tellimusi ja andmeid. Ära anna sellele rollile kunagi haldusõigusi.
- Poe haldur (Shop manager): saab hallata tooteid, tellimusi, kliente, kuponge ja WooCommerce’i seadeid, kuid ei saa paigaldada pluginaid ega muuta teemat.
Töötajatele, kes pakivad tellimusi, vastavad klientide küsimustele või sisestavad tooteid, piisab rollist Poe haldur. Töötleja on ainult sellele, kes tegeleb tehnikaga. Igal töötajal on oma konto koos kaheastmelise kinnitamisega (WordPressi kursuse õppetund 7.3); ühist kontot „pood“ ei ole. Poe haldur näeb kõiki kliendiandmeid, nii et eemalda kontod, kui keegi lahkub.
API-võtmed (õppetund 2.4) on samuti õiguste vorm: anna ühendusele ainult lugemisõigus, kui see ei pea midagi kirjutama, ja kustuta võtmed, mida enam ei kasutata.
Mida sinu pood kõigile näitab
Ründajad otsivad poode, millel on WooCommerce’i vana versioon või teadaoleva turvaauguga makseplugin. WooCommerce lisab vaikimisi lähtekoodi rea <meta name="generator" content="WooCommerce 11.2.2"> ja versioon on ka laaditabelite taga (?ver=). Peitmine on väike võit, uuendamine suur. Pood, mis on korralikult ajakohane, ei pea nähtava versiooninumbri pärast eriti muretsema. Pood, mis jääb maha, reedab end.
Fail xmlrpc.php on vana liides, mille kaudu rakendused WordPressi sisse logivad. Seda kasutatakse palju paroolide äraarvamiseks. Kui sa ei kasuta rakendust ega teenust, mis seda vajab, siis sulge see (WebOkés on see vaikimisi suletud, KB 169). Avatud xmlrpc.php vastab brauseri tavalisele päringule tekstiga „XML-RPC server accepts POST requests only.“ ja olekukoodiga 405. Suletud fail annab 403 või 404.
Kokkuvõte
- E-poe andmebaas muutub terve päeva: taastamine maksab juba makstud tellimusi.
- Väikesed uuendused kiiresti, suured kõigepealt testkeskkonnas; jälgi andmebaasi uuendamist, laiendusi ja aegunud malle jaotises WooCommerce > Olek.
- Tee varukoopia vahetult enne uuendust ja sagedamini kui tavalise saidi puhul; kontrolli, et tellimuste tabelid tulevad kaasa.
- Töötajad saavad rolli Poe haldur, mitte Töötleja; igaühel oma konto kaheastmelise kinnitamisega.
- Versioonide peitmine aitab vähe, uuendamine palju; sulge xmlrpc.php, kui sa seda ei kasuta.
Test (quiz)
Ülesanne
Ülesanne A6.2: Kas sinu e-pood näitab versioone? Sisesta oma poe aadress, oma WordPressi versioon (Töölaud > Uuendused) ja oma WooCommerce’i versioon (Pluginad). Programm küsib avalehte ja voogu ning faili /wp-content/plugins/woocommerce/readme.txt (ainult esimesed 2 kB, rida „Stable tag“). See otsib WordPressi ja WooCommerce’i versiooninumbreid generator-ridadest ja WooCommerce’i laaditabelite tagant (?ver=) ning küsib saidilt wordpress.org uusimad versioonid. Roheline, kui sinu versioonid on uusimad ja nähtav info nendega kattub. Oranž, kui ootel on ainult väike uuendus või kui versioon on nähtav, aga ajakohane. Punane, kui jääd suure versiooni võrra maha, kui nähtav versioon erineb sellest, mille sisestasid (töötab midagi muud, kui arvad), või kui sisend on vigane.
Ülesanne A6.2b: Kas xmlrpc on suletud? Sisesta oma poe aadress ja tee linnuke, kui kasutad rakendust või teenust, mis vajab xmlrpc.php-d. Programm küsib /xmlrpc.php tavalise GET-päringuga, midagi saatmata. Roheline, kui vastus on 401, 403, 404, 410, ümbersuunamine või tavaline HTML-leht. Punane, kui vastus on 405 tekstiga „XML-RPC server accepts POST requests only.“ ja linnukest ei ole; oranž, kui märkisid, et vajad seda. Programm kontrollib ka, kas kasutajanimede loend aadressil /wp-json/wp/v2/users on avalik (oranž, kui nimed on näha).
Roheline linnuke tähendab, et see kontroll on praegu korras, mitte seda, et sinu pood on turvaline.
Lisalugemist
Paneeli sammud kehtivad WebOké kohta; teiste pakkujate juures töötab see sarnaselt.
- Tasuta WordPressi kursus 7.2: Uuenduste jälgimine
- Tasuta WordPressi kursus 8.1: Varukoopiad: mis, kus ja kui tihti
- Tasuta WordPressi kursus 8.2: Taastamine ja testimine
- Tasuta WordPressi kursus 3.3: Kasutajad ja rollid
- DirectAdmin juhend 16.1: Millised varukoopiad on WebOkéga saadaval
- WebOké varukoopiad: varukoopia vaatamine, taastamine või allalaadimine
- WordPressi xmlrpc.php ligipääs ei tööta
- High Performance Order Storage (developer.woocommerce.com, inglise keeles): https://developer.woocommerce.com/docs/features/orders/high-performance-order-storage/
