Ενότητα 6 · 6.2
Ενημερώσεις, αντίγραφα ασφαλείας και ρόλοι
Ενότητα 6: Διαχείριση και ασφάλεια · Χρόνος ανάγνωσης: 11 λεπτά
Στόχος μαθήματος: Μετά από αυτό το μάθημα μπορείτε να ενημερώνετε ένα κατάστημα WooCommerce και να κρατάτε αντίγραφα ασφαλείας χωρίς να χάνετε παραγγελίες, και να μοιράζετε τα δικαιώματα έτσι ώστε ο καθένας να μπορεί να κάνει μόνο ό,τι χρειάζεται.
Βασικές έννοιες: μεγάλη και μικρή ενημέρωση, ενημέρωση βάσης δεδομένων, επεκτάσεις και συμβατότητα, αντικαταστάσεις προτύπων (template overrides), παρωχημένα πρότυπα, αντίγραφο ασφαλείας πριν από την ενημέρωση, παραγγελίες μεταξύ αντιγράφου ασφαλείας και επαναφοράς, πίνακες HPOS, ρόλοι Διαχειριστής καταστήματος (Shop manager) και Πελάτης (Customer), ελάχιστα δικαιώματα, εμφάνιση εκδόσεων, xmlrpc.php
Γιατί ένα κατάστημα διαφέρει από έναν συνηθισμένο ιστότοπο
Στο μάθημα WordPress (μαθήματα 7.2, 8.1 και 8.2) περιγράφεται πώς ενημερώνετε το WordPress, πώς δημιουργείτε αντίγραφα ασφαλείας και πώς κάνετε επαναφορά. Σε ένα κατάστημα ισχύουν όλα αυτά, με μία μεγάλη διαφορά: η βάση δεδομένων αλλάζει όλη τη μέρα. Κάθε παραγγελία, κάθε πελάτης, κάθε αλλαγή αποθέματος και κάθε πληρωμή καταγράφεται εκεί. Σε έναν ενημερωτικό ιστότοπο, με ένα αντίγραφο ασφαλείας της προηγούμενης ημέρας χάνετε το πολύ ένα άρθρο. Σε ένα κατάστημα χάνετε παραγγελίες που έχουν ήδη πληρωθεί.
Γι' αυτό, δύο βασικοί κανόνες για αυτό το μάθημα:
- Σε ένα κατάστημα η επαναφορά είναι το τελευταίο βήμα, όχι το πρώτο.
- Ενημερώνετε με σχέδιο, όχι «στα γρήγορα, Παρασκευή απόγευμα».
Ενημερώσεις του WooCommerce
Το WooCommerce κυκλοφορεί τακτικά νέες εκδόσεις, με μικρές διορθώσεις στο ενδιάμεσο. Ο αριθμός έκδοσης έχει τρία μέρη, για παράδειγμα 11.2.2. Μια αλλαγή στον τελευταίο αριθμό είναι μια μικρή διόρθωση ή ενημέρωση ασφαλείας· μια αλλαγή στον πρώτο ή στον δεύτερο αριθμό φέρνει νέες λειτουργίες και μερικές φορές αλλαγές στις οποίες πρέπει να προσαρμοστούν οι επεκτάσεις ή το θέμα σας.
Σε μια ενημέρωση του WooCommerce συμβαίνουν τρία πράγματα που σπανιότερα βλέπετε σε ένα συνηθισμένο πρόσθετο:
- Ενημέρωση βάσης δεδομένων. Μερικές φορές το WooCommerce πρέπει να προσαρμόσει τους πίνακες. Βλέπετε τότε ένα μήνυμα στη διαχείριση ότι η βάση δεδομένων ενημερώνεται· αυτό εκτελείται στο παρασκήνιο μέσω των προγραμματισμένων ενεργειών (μάθημα 7.3). Μην το διακόψετε και ελέγξτε στο WooCommerce > Κατάσταση αν έχει ολοκληρωθεί.
- Οι επεκτάσεις πρέπει να ακολουθήσουν. Τα πρόσθετα πληρωμών, οι συνδέσεις αποστολών και οι συνδέσεις λογιστικής αναφέρουν μέχρι ποια έκδοση του WooCommerce έχουν δοκιμαστεί. Στην οθόνη των προσθέτων βλέπετε μια προειδοποίηση όταν μια επέκταση δεν αναφέρει μια νεότερη έκδοση. Διαβάστε τις αλλαγές του προσθέτου πληρωμών σας πριν από την ενημέρωση: ένα πρόσθετο πληρωμών που χαλάει σημαίνει ένα κατάστημα που δεν πουλάει.
- Αντικαταστάσεις προτύπων. Πολλά θέματα έχουν δικά τους αντίγραφα προτύπων του WooCommerce (ο φάκελος
woocommerce/στο θέμα). Όταν το WooCommerce αλλάζει το πρωτότυπο, το αντίγραφο γίνεται παρωχημένο. Στο WooCommerce > Κατάσταση (Κατάσταση συστήματος) εμφανίζεται στο κάτω μέρος, στο θέμα, ποια πρότυπα αντικαθιστά και ποια είναι παρωχημένα. Τα παρωχημένα πρότυπα μπορεί να μην έχουν νέα πεδία ή να προκαλούν σφάλματα. Ενημερώστε το θέμα ή ζητήστε από τον δημιουργό του μια ενημέρωση.
Τις μικρές ενημερώσεις (τελευταίος αριθμός) τις εφαρμόζετε κατά προτίμηση γρήγορα, ιδανικά αυτόματα, επειδή συχνά διορθώνουν κενά ασφαλείας. Τις μεγάλες ενημερώσεις τις δοκιμάζετε πρώτα σε staging (μάθημα 7.3), σε ήσυχη ώρα, με αντίγραφο ασφαλείας αμέσως πριν.
Αντίγραφα ασφαλείας: τι χάνεται κατά την επαναφορά
Ένα παράδειγμα. Το Theehuis Example δημιουργεί κάθε βράδυ στις 03.00 ένα αντίγραφο ασφαλείας. Την Τρίτη στις 10.00 ο διαχειριστής ενημερώνει το WooCommerce και στη συνέχεια η σελίδα προϊόντος εμφανίζει σφάλμα. Μεταξύ 03.00 και 10.00 μπήκαν έξι παραγγελίες, πληρωμένες μέσω του παρόχου πληρωμών. Αν τώρα επαναφέρετε το αντίγραφο ασφαλείας των 03.00:
- αυτές οι έξι παραγγελίες έχουν εξαφανιστεί από τη βάση δεδομένων, ενώ τα χρήματα βρίσκονται κανονικά στον πάροχο·
- το κατάστημα δεν γνωρίζει πλέον ότι το απόθεμα είναι μικρότερο·
- το κατάστημα ίσως λάβει αργότερα ειδοποιήσεις (webhooks) από τον πάροχο για παραγγελίες που δεν γνωρίζει.
Γι' αυτό:
- Δημιουργήστε αντίγραφο ασφαλείας αμέσως πριν από μια ενημέρωση, όχι μόνο τη νύχτα. Έτσι το κενό είναι όσο το δυνατόν μικρότερο.
- Κατά την επαναφορά, σημειώστε ποιες παραγγελίες ήρθαν μετά το αντίγραφο ασφαλείας (από τα email «Νέα παραγγελία» και τον πίνακα ελέγχου του παρόχου σας) και επαναφέρετέ τες στη συνέχεια χειροκίνητα, ή εξαγάγετέ τες εκ των προτέρων.
- Επαναφέρετε κατά προτίμηση μόνο τα αρχεία (τον παλιό φάκελο του προσθέτου ή του θέματος) όταν το πρόβλημα βρίσκεται στον κώδικα, και αφήστε τη βάση δεδομένων ως έχει. Μια ενημέρωση μπορεί συχνά να αναιρεθεί με την εγκατάσταση της προηγούμενης έκδοσης του προσθέτου· το μάθημα WordPress, μάθημα 8.2, δείχνει πώς κάνετε στοχευμένη επαναφορά. Αν η ενημέρωση έχει ήδη ενημερώσει τη βάση δεδομένων, η παλιά έκδοση ίσως να μην λειτουργεί πια με αυτήν: γι' αυτό δοκιμάζετε πρώτα σε staging.
- Κρατάτε αντίγραφα ασφαλείας συχνότερα από ό,τι σε έναν συνηθισμένο ιστότοπο: ένα κατάστημα με παραγγελίες όλη τη μέρα χρειάζεται τουλάχιστον καθημερινά, ιδανικά συχνότερα, αντίγραφο της βάσης δεδομένων, και ένα αντίγραφο εκτός του διακομιστή (κανόνας 3-2-1, μάθημα WordPress, μάθημα 8.1).
Από το WooCommerce 8.2 και μετά, στα νέα καταστήματα οι παραγγελίες αποθηκεύονται σε δικούς τους πίνακες (HPOS, μάθημα 1.2), όπως ο wp_wc_orders. Ένα πρόσθετο αντιγράφων ασφαλείας που περιλαμβάνει μόνο «άρθρα» ή επιλέγει πίνακες με βάση το όνομα πρέπει να περιλαμβάνει και αυτούς τους πίνακες. Σε μια δοκιμαστική επαναφορά (μάθημα WordPress, μάθημα 8.2) ελέγξτε αν οι παραγγελίες υπάρχουν πράγματι.
Στη WebOké, το WebOké Backups δημιουργεί κάθε βράδυ ένα αντίγραφο ασφαλείας που διατηρείται για 30 ημέρες σε άλλο κέντρο δεδομένων (DA 16.1)· επιπλέον μπορείτε να δημιουργήσετε μόνοι σας αντίγραφο ασφαλείας πριν από μια ενημέρωση στο DirectAdmin ή στο Installatron. Σε άλλους παρόχους hosting λειτουργεί παρόμοια· ρωτήστε πόσο συχνά και για πόσο διάστημα.
Ρόλοι: ποιος μπορεί να κάνει τι
Το WooCommerce προσθέτει δύο ρόλους στο WordPress (μάθημα WordPress, μάθημα 3.3):
- Πελάτης (Customer): ένας πελάτης με λογαριασμό. Μπορεί να βλέπει μόνο τις δικές του παραγγελίες και τα δικά του στοιχεία. Μην δίνετε ποτέ σε αυτόν τον ρόλο δικαιώματα διαχείρισης.
- Διαχειριστής καταστήματος (Shop manager): μπορεί να διαχειρίζεται προϊόντα, παραγγελίες, πελάτες, κουπόνια και τις ρυθμίσεις του WooCommerce, αλλά δεν μπορεί να εγκαθιστά πρόσθετα ή να αλλάζει το θέμα.
Για συνεργάτες που συσκευάζουν παραγγελίες, απαντούν σε ερωτήσεις πελατών ή καταχωρούν προϊόντα, αρκεί ο ρόλος Διαχειριστής καταστήματος. Ο ρόλος Χειριστής είναι μόνο για όποιον ασχολείται με το τεχνικό μέρος. Κάθε συνεργάτης έχει δικό του λογαριασμό, με επαλήθευση δύο βημάτων (μάθημα WordPress, μάθημα 7.3)· όχι κοινόχρηστος λογαριασμός «κατάστημα». Ένας διαχειριστής καταστήματος βλέπει όλα τα στοιχεία των πελατών, γι' αυτό διαγράψτε λογαριασμούς όταν κάποιος αποχωρεί.
Τα κλειδιά API (μάθημα 2.4) είναι επίσης μια μορφή δικαιωμάτων: δώστε σε μια σύνδεση μόνο δικαίωμα ανάγνωσης όταν δεν χρειάζεται να γράφει τίποτα, και διαγράψτε κλειδιά που δεν χρησιμοποιούνται πλέον.
Τι δείχνει το κατάστημά σας σε όλους
Οι επιτιθέμενοι αναζητούν καταστήματα με παλιά έκδοση του WooCommerce ή με πρόσθετο πληρωμών που έχει γνωστό κενό ασφαλείας. Το WooCommerce προσθέτει από προεπιλογή μια γραμμή <meta name="generator" content="WooCommerce 11.2.2"> στον πηγαίο κώδικα, και η έκδοση εμφανίζεται επίσης μετά τα φύλλα στυλ (?ver=). Η απόκρυψη είναι μικρό κέρδος· η ενημέρωση μεγάλο. Ένα κατάστημα που είναι σωστά ενημερωμένο δεν χρειάζεται να ανησυχεί πολύ για έναν ορατό αριθμό έκδοσης. Ένα κατάστημα που μένει πίσω, το προδίδει.
Το αρχείο xmlrpc.php είναι μια παλιά διεπαφή μέσω της οποίας εφαρμογές συνδέονται στο WordPress. Χρησιμοποιείται συχνά καταχρηστικά για τη μαντεψιά κωδικών πρόσβασης. Αν δεν χρησιμοποιείτε εφαρμογή ή υπηρεσία που το χρειάζεται, το κλείνετε (στη WebOké είναι κλειστό από προεπιλογή, KB 169). Ένα ανοιχτό xmlrpc.php απαντά σε ένα συνηθισμένο αίτημα από το πρόγραμμα περιήγησης με "XML-RPC server accepts POST requests only." και κατάσταση 405. Κλειστό δίνει 403 ή 404.
Σύνοψη
- Η βάση δεδομένων ενός καταστήματος αλλάζει όλη τη μέρα: η επαναφορά κοστίζει παραγγελίες που έχουν ήδη πληρωθεί.
- Μικρές ενημερώσεις γρήγορα, μεγάλες ενημερώσεις πρώτα σε staging· προσέξτε την ενημέρωση της βάσης δεδομένων, τις επεκτάσεις και τα παρωχημένα πρότυπα στο WooCommerce > Κατάσταση.
- Αντίγραφο ασφαλείας αμέσως πριν από μια ενημέρωση και συχνότερα από ό,τι σε έναν συνηθισμένο ιστότοπο· ελέγξτε ότι περιλαμβάνονται οι πίνακες των παραγγελιών.
- Οι συνεργάτες παίρνουν τον ρόλο Διαχειριστής καταστήματος, όχι Χειριστής· ο καθένας με δικό του λογαριασμό και επαλήθευση δύο βημάτων.
- Η απόκρυψη των εκδόσεων βοηθά λίγο, η ενημέρωση πολύ· κλείστε το xmlrpc.php αν δεν το χρησιμοποιείτε.
Κουίζ
Άσκηση
Άσκηση A6.2: Εμφανίζει το κατάστημά σας εκδόσεις; Συμπληρώστε τη διεύθυνση του καταστήματός σας, την έκδοση του WordPress σας (Πίνακας ελέγχου > Ενημερώσεις) και την έκδοση του WooCommerce σας (Πρόσθετα). Το πρόγραμμα ζητά την αρχική σελίδα και τη ροή (feed), καθώς και το αρχείο /wp-content/plugins/woocommerce/readme.txt (μόνο τα πρώτα 2 kB, τη γραμμή "Stable tag"). Αναζητά αριθμούς έκδοσης του WordPress και του WooCommerce στις γραμμές generator και μετά το ?ver= στα φύλλα στυλ του WooCommerce, και ζητά από το wordpress.org τις νεότερες εκδόσεις. Πράσινο αν οι εκδόσεις σας είναι οι νεότερες και ό,τι είναι ορατό συμφωνεί με αυτές. Πορτοκαλί αν εκκρεμεί μόνο μια μικρή ενημέρωση ή αν η έκδοση είναι ορατή αλλά ενημερωμένη. Κόκκινο αν είστε πίσω κατά μία μεγάλη έκδοση, αν η ορατή έκδοση διαφέρει από αυτήν που συμπληρώσατε (εκτελείται κάτι διαφορετικό από ό,τι νομίζετε) ή σε περίπτωση μη έγκυρων στοιχείων.
Άσκηση A6.2b: Είναι κλειστό το xmlrpc; Συμπληρώστε τη διεύθυνση του καταστήματός σας και επιλέξτε το πλαίσιο αν χρησιμοποιείτε εφαρμογή ή υπηρεσία που χρειάζεται το xmlrpc.php. Το πρόγραμμα ζητά το /xmlrpc.php με ένα απλό GET, χωρίς να στέλνει τίποτα. Πράσινο σε 401, 403, 404, 410, ανακατεύθυνση ή μια συνηθισμένη σελίδα HTML. Κόκκινο σε 405 με το κείμενο "XML-RPC server accepts POST requests only." χωρίς επιλεγμένο πλαίσιο· πορτοκαλί αν δηλώσατε ότι το χρειάζεστε. Ελέγχει επίσης αν η λίστα με τα ονόματα χρηστών μέσω του /wp-json/wp/v2/users είναι δημόσια (πορτοκαλί αν εμφανίζονται ονόματα).
Ένα πράσινο σημάδι σημαίνει ότι αυτός ο έλεγχος είναι τώρα σωστός, όχι ότι το κατάστημά σας είναι ασφαλές.
Περαιτέρω ανάγνωση
Τα βήματα σε έναν πίνακα ελέγχου ισχύουν για τη WebOké· σε άλλους παρόχους λειτουργεί παρόμοια.
- Δωρεάν μάθημα WordPress 7.2: Παρακολούθηση των αναβαθμίσεων
- Δωρεάν μάθημα WordPress 8.1: Αντίγραφα ασφαλείας: τι, πού και πόσο συχνά
- Δωρεάν μάθημα WordPress 8.2: Επαναφορά και δοκιμή
- Δωρεάν μάθημα WordPress 3.3: Χρήστες και ρόλοι
- Εγχειρίδιο DirectAdmin 16.1: Ποια αντίγραφα ασφαλείας υπάρχουν στο WebOké
- WebOké Backups: προβολή, επαναφορά ή λήψη ενός backup
- WordPress: δεν λειτουργεί η πρόσβαση στο xmlrpc.php
- High Performance Order Storage (developer.woocommerce.com, στα Αγγλικά): https://developer.woocommerce.com/docs/features/orders/high-performance-order-storage/
