Modul 6 · 6.2
Opdateringer, backups og roller
Modul 6: Administration og sikkerhed · Læsetid: 11 minutter
Læringsmål: Efter denne lektion kan du opdatere og tage backup af en WooCommerce-shop uden at miste ordrer, og du kan fordele rettigheder, så alle kun kan det, de har brug for.
Centrale begreber: stor og lille opdatering, databaseopdatering, udvidelser og kompatibilitet, skabelonoverskrivninger (template overrides), forældede skabeloner, backup før opdateringen, ordrer mellem backup og gendannelse, HPOS-tabeller, rollerne Webshop leder (Shop manager) og Kunde (Customer), mindst mulige rettigheder, synlige versioner, xmlrpc.php
Hvorfor en shop er anderledes end et almindeligt websted
WordPress-kurset (lektion 7.2, 8.1 og 8.2) viser, hvordan du opdaterer WordPress, tager backups og gendanner. Alt det gælder også for en shop, med én stor forskel: databasen ændrer sig hele dagen. Hver ordre, hver kunde, hver lagerændring og hver betaling havner i den. På et informationswebsted mister du højst et indlæg med en backup fra i går. I en shop mister du ordrer, der allerede er betalt.
Derfor to tommelfingerregler for denne lektion:
- I en shop er gendannelse det sidste skridt, ikke det første.
- Opdatér efter en plan, ikke "lige hurtigt fredag eftermiddag".
Opdateringer af WooCommerce
WooCommerce udgiver jævnligt nye versioner med små rettelser ind imellem. Versionsnummeret har tre dele, for eksempel 11.2.2. En ændring i det sidste tal er en lille rettelse eller en sikkerhedsopdatering. En ændring i det første eller andet tal giver nye funktioner og nogle gange ændringer, som udvidelser eller dit tema skal tilpasses til.
Der sker tre ting ved en opdatering af WooCommerce, som du sjældnere ser ved et almindeligt plugin:
- En databaseopdatering. Nogle gange skal WooCommerce ændre tabellerne. Så ser du en meddelelse i administrationen om, at databasen bliver opdateret. Det kører i baggrunden via de planlagte handlinger (lektion 7.3). Afbryd det ikke, og tjek under WooCommerce > Status, om det er færdigt.
- Udvidelserne skal følge med. Betalingsplugins, fragtintegrationer og regnskabsintegrationer oplyser, op til hvilken WooCommerce-version de er testet. På plugin-siden ser du en advarsel, hvis en udvidelse ikke nævner en nyere version. Læs ændringerne i dit betalingsplugin, før du opdaterer: et betalingsplugin, der går i stykker, betyder en shop, der ikke sælger.
- Skabelonoverskrivninger. Mange temaer har egne kopier af WooCommerce-skabeloner (mappen
woocommerce/i temaet). Ændrer WooCommerce originalen, bliver kopien forældet. Under WooCommerce > Status (Systemstatus) står der nederst ved temaet, hvilke skabeloner det overskriver, og hvilke der er forældede. Forældede skabeloner kan mangle nye felter eller give fejl. Opdatér temaet, eller bed udvikleren om en opdatering.
Små opdateringer (det sidste tal) installerer du helst hurtigt, gerne automatisk, fordi de ofte retter sikkerhedsfejl. Store opdateringer tester du først på staging (lektion 7.3), på et roligt tidspunkt og med en backup lige inden.
Backups: hvad forsvinder ved gendannelse
Et eksempel. Theehuis Example tager hver nat kl. 03.00 en backup. Tirsdag kl. 10.00 opdaterer administratoren WooCommerce, og derefter viser produktsiden en fejl. Mellem 03.00 og 10.00 kom der seks ordrer ind, betalt via betalingsudbyderen. Gendanner du nu backuppen fra 03.00, så:
- er de seks ordrer forsvundet fra databasen, selv om pengene står hos udbyderen;
- ved shoppen ikke længere, at lageret er lavere;
- får shoppen måske senere meddelelser (webhooks) fra udbyderen om ordrer, den ikke kender.
Derfor:
- Tag en backup lige før en opdatering, ikke kun om natten. Så er hullet så lille som muligt.
- Notér ved gendannelse, hvilke ordrer der kom efter backuppen (fra mails om "Ny ordre" og fra din udbyders dashboard), og opret dem derefter igen manuelt, eller eksportér dem på forhånd.
- Gendan helst kun filerne (den gamle plugin- eller temamappe), hvis problemet ligger i koden, og lad databasen være. En opdatering kan ofte rulles tilbage ved at installere den forrige version af pluginnet. WordPress-kurset, lektion 8.2, viser, hvordan du gendanner målrettet. Har opdateringen allerede opdateret databasen, virker den gamle version måske ikke længere med den: derfor tester du først på staging.
- Tag backup oftere end ved et almindeligt websted: en shop med ordrer hele dagen har brug for mindst én databasebackup om dagen, helst flere, og en kopi uden for serveren (3-2-1-reglen, WordPress-kurset lektion 8.1).
Siden WooCommerce 8.2 ligger ordrer i nye butikker i egne tabeller (HPOS, lektion 1.2), for eksempel wp_wc_orders. Et backupplugin, der kun tager "indlæg" med eller vælger tabeller efter navn, skal også have de tabeller med. Tjek ved en gendannelsestest (WordPress-kurset, lektion 8.2), at ordrerne faktisk er med.
Hos WebOké tager WebOké Backups hver nat en backup, der gemmes i 30 dage i et andet datacenter (DA 16.1). Derudover kan du selv tage en backup før en opdatering i DirectAdmin eller Installatron. Hos andre hostingudbydere fungerer det på lignende måde. Spørg, hvor ofte og hvor længe.
Roller: hvem må hvad
WooCommerce tilføjer to roller til WordPress (WordPress-kurset, lektion 3.3):
- Kunde (Customer): en kunde med en konto. Kan kun se sine egne ordrer og oplysninger. Giv aldrig denne rolle administratorrettigheder.
- Webshop leder (Shop manager): kan administrere produkter, ordrer, kunder, rabatkoder og WooCommerce-indstillingerne, men kan ikke installere plugins eller ændre temaet.
Til medarbejdere, der pakker ordrer, besvarer kundespørgsmål eller lægger produkter ind, er Webshop leder nok. Administrator er kun til den, der står for teknikken. Hver medarbejder har sin egen konto med totrinsbekræftelse (WordPress-kurset, lektion 7.3). Ingen delt konto "butik". En webshop leder ser alle kundeoplysninger, så fjern konti, når nogen stopper.
API-nøgler (lektion 2.4) er også en form for rettigheder: giv en integration kun læseadgang, hvis den ikke skal skrive noget, og slet nøgler, der ikke længere bruges.
Hvad din shop viser til alle
Angribere leder efter shops med en gammel version af WooCommerce eller et betalingsplugin med et kendt sikkerhedshul. WooCommerce sætter som standard en linje <meta name="generator" content="WooCommerce 11.2.2"> i kildekoden, og versionen står også efter stylesheets (?ver=). At skjule giver en lille gevinst, at opdatere en stor. En shop, der er opdateret, behøver ikke bekymre sig meget om et synligt versionsnummer. En shop, der halter bagefter, afslører det.
Filen xmlrpc.php er en gammel forbindelse, som apps bruger til at logge ind på WordPress. Den bliver ofte misbrugt til at gætte adgangskoder. Bruger du ikke en app eller tjeneste, der har brug for den, så luk den (hos WebOké er den lukket som standard, KB 169). En åben xmlrpc.php svarer på en almindelig forespørgsel i browseren med "XML-RPC server accepts POST requests only." og status 405. Lukket giver 403 eller 404.
Opsummering
- En shopdatabase ændrer sig hele dagen: gendannelse koster ordrer, der allerede er betalt.
- Små opdateringer hurtigt, store opdateringer først på staging. Hold øje med databaseopdateringen, udvidelserne og forældede skabeloner under WooCommerce > Status.
- Tag backup lige før en opdatering og oftere end ved et almindeligt websted. Tjek, at ordretabellerne kommer med.
- Medarbejdere får Webshop leder, ikke Administrator, og hver sin konto med totrinsbekræftelse.
- At skjule versioner hjælper lidt, at opdatere hjælper meget. Luk xmlrpc.php, hvis du ikke bruger den.
Quiz
Opgave
Opgave A6.2: Viser din webshop versioner? Indtast adressen på din shop, din WordPress-version (Kontrolpanel > Opdateringer) og din WooCommerce-version (Plugins). Programmet henter forsiden og feedet samt filen /wp-content/plugins/woocommerce/readme.txt (kun de første 2 kB, linjen "Stable tag"). Det leder efter versionsnumre for WordPress og WooCommerce i generator-linjerne og efter ?ver= ved WooCommerces stylesheets, og det henter de nyeste versioner fra wordpress.org. Grøn, hvis dine versioner er de nyeste, og det synlige stemmer med dem. Orange, hvis kun en lille opdatering mangler, eller hvis versionen er synlig, men aktuel. Rød, hvis du er en stor version bagud, hvis den synlige version er en anden end den, du indtastede (der kører noget andet, end du tror), eller ved ugyldigt input.
Opgave A6.2b: Er xmlrpc lukket? Indtast adressen på din shop, og sæt flueben, hvis du bruger en app eller tjeneste, der har brug for xmlrpc.php. Programmet henter /xmlrpc.php med en almindelig GET uden at sende noget. Grøn ved 401, 403, 404, 410, en omdirigering eller en almindelig HTML-side. Rød ved 405 med teksten "XML-RPC server accepts POST requests only." uden flueben. Orange, hvis du har angivet, at du har brug for den. Det tjekker også, om listen over brugernavne via /wp-json/wp/v2/users er offentlig (orange, hvis der er synlige navne).
Et grønt flueben betyder, at denne kontrol er i orden lige nu, ikke at din shop er sikker.
Læs videre
Trin i et panel gælder for WebOké. Hos andre udbydere fungerer det på lignende måde.
- Gratis WordPress-kursus 7.2: Holde styr på opdateringer
- Gratis WordPress-kursus 8.1: Backup: hvad, hvor og hvor ofte
- Gratis WordPress-kursus 8.2: Gendan og test
- Gratis WordPress-kursus 3.3: Brugere og roller
- DirectAdmin vejledning 16.1: Hvilke backup er der hos WebOké
- WebOké Backups: Se, gendan eller download en backup
- WordPress: adgang til xmlrpc.php virker ikke
- High Performance Order Storage (developer.woocommerce.com, engelsk): https://developer.woocommerce.com/docs/features/orders/high-performance-order-storage/
