Απομόνωση
Το Rudel είναι ένα σύστημα επικάλυψης που επιλέγεται ανά αίτημα. Ένα επιλεγμένο αίτημα χρησιμοποιεί τους πίνακες βάσης δεδομένων και τα αρχεία θέματος του sandbox, ενώ εξακολουθεί να εκτελείται μέσω της εγκατάστασης WordPress του κεντρικού υπολογιστή.
Απομονωμένα ανά sandbox
Πίνακες WordPress
Κάθε sandbox αποκτά ένα παραγόμενο πρόθεμα πινάκων: το πρόθεμα του κεντρικού υπολογιστή συν τους πρώτους επτά δεκαεξαδικούς χαρακτήρες του MD5 του ID sandbox.
wp_b65338d_options
wp_b65338d_posts
wp_b65338d_users
Το Rudel αλλάζει το πρόθεμα πινάκων WordPress πριν ολοκληρωθεί η εκκίνηση του WordPress, ώστε κάθε ερώτημα σε αίτημα sandbox να διαβάζει και να γράφει στα αντίγραφα του sandbox.
Χρήστες
Οι πίνακες users και usermeta κλωνοποιούνται μαζί με τους υπόλοιπους. Ένα sandbox ξεκινά με τους χρήστες και τους κωδικούς πρόσβασης του κεντρικού υπολογιστή τη στιγμή της δημιουργίας του· στη συνέχεια, οι χρήστες που δημιουργούνται, αλλάζουν ή διαγράφονται στο sandbox δεν επηρεάζουν τον κεντρικό υπολογιστή, ενώ οι αλλαγές στον κεντρικό υπολογιστή δεν περνούν στο sandbox.
Αρχεία ενεργού θέματος
Το επιλεγμένο θέμα αντιγράφεται στον κατάλογο sandbox:
wp-content/rudel-environments/{environment_id}/themes/{theme_slug}
Αν το θέμα είναι θυγατρικό, το Rudel αντιγράφει επίσης το γονικό θέμα, ώστε να παραμείνει έγκυρη η σχέση προτύπων. Ένα sandbox προβάλλει πάντα το θέμα που καταγράφηκε κατά τη δημιουργία του· η αλλαγή θέματος μέσα στο sandbox δεν έχει αποτέλεσμα.
Κοινόχρηστα με τον κεντρικό υπολογιστή
- ο πυρήνας του WordPress
- αρχεία προσθέτων
- ανεβασμένα αρχεία πολυμέσων
Ένα πρόσθετο που εγκαθίσταται ή ενημερώνεται στον κεντρικό υπολογιστή εγκαθίσταται ή ενημερώνεται σε κάθε sandbox. Τα ενεργά πρόσθετα καταγράφονται στον πίνακα επιλογών, επομένως η κατάστασή τους είναι ανά sandbox. Τα αρχεία που ανεβαίνουν μέσα σε sandbox αποθηκεύονται στον κατάλογο ανεβασμένων αρχείων του κεντρικού υπολογιστή. Έτσι η δημιουργία sandbox παραμένει γρήγορη και αποφεύγεται η καθολική αντικατάσταση του WP_CONTENT_DIR.
Διατηρείτε το ίδιο το Rudel ενεργό μέσα σε κάθε sandbox. Ο αποκλεισμός αλληλογραφίας και η επικάλυψη θέματος εκτελούνται από το πρόσθετο, ενώ η απενεργοποίησή του όταν έχει επιλεγεί sandbox αφαιρεί επίσης τη γραμμή αρχικοποίησης από το κοινόχρηστο wp-config.php, απενεργοποιώντας την επιλογή sandbox για ολόκληρη την εγκατάσταση (ζήτημα #13).
Επιλογή sandbox
Τα αιτήματα HTTP επιλέγουν sandbox μέσω:
- της κεφαλίδας
X-Rudel-Environment(παλιό ψευδώνυμοX-Rudel-Sandbox) - του cookie
rudel_environment(παλιό ψευδώνυμοrudel_sandbox)
Το Rudel δεν ορίζει ούτε διαγράφει ποτέ το cookie. Διαγράψτε το για να επιστρέψετε στον κεντρικό υπολογιστή· το στοιχείο Sandbox στη γραμμή διαχείρισης συνδέεται με το URL του κεντρικού υπολογιστή, αλλά αφήνει το cookie στη θέση του (ζήτημα #10).
Οι εντολές WP-CLI επιλέγουν sandbox μέσω:
- της μεταβλητής περιβάλλοντος
RUDEL_ENVIRONMENT - ενός
--urlτου οποίου ο κεντρικός υπολογιστής αρχίζει με το ID sandbox, όπως το--url=http://alpha-3be7.example.test
Ο επιλογέας δεν απαιτεί έλεγχο ταυτότητας. Κάθε πελάτης που μπορεί να συνδεθεί στον ιστότοπο και στέλνει έγκυρο ID sandbox αποκτά πρόσβαση σε αυτό, ενώ τα ID sandbox (όνομα συν τέσσερις δεκαεξαδικοί χαρακτήρες) είναι εύκολο να προβλεφθούν. Μην αντιμετωπίζετε την επιλογή sandbox ως όριο ελέγχου πρόσβασης· προστατεύστε έναν δημόσιο κεντρικό υπολογιστή στο επίπεδο του διακομιστή ιστού ή του δικτύου.
Προεπιλογές αιτημάτων
Για ένα επιλεγμένο αίτημα, το Rudel:
- αποκλείει τα εξερχόμενα email μέσω φίλτρου
pre_wp_mail - ορίζει το
WP_TEMP_DIRστον κατάλογοtmpτου sandbox - ορίζει το
WP_CACHE_KEY_SALTσε τιμή ειδική για το sandbox, ώστε οι μόνιμες κρυφές μνήμες αντικειμένων να διατηρούν χωριστά τα κλειδιά των sandbox - παρέχει καταγραφή
WP_DEBUGστοdebug.logτου sandbox και κλειδιά και salt ελέγχου ταυτότητας που προκύπτουν από το ID sandbox
Η διαδικασία αρχικοποίησης ορίζει καθεμία από αυτές τις σταθερές μόνο αν το wp-config.php δεν την έχει ήδη ορίσει. Μια τυπική εγκατάσταση wp-config.php ορίζει το WP_DEBUG και όλα τα κλειδιά και salt, επομένως σε μια τέτοια εγκατάσταση τα αιτήματα sandbox χρησιμοποιούν τη ρύθμιση αποσφαλμάτωσης και τα κλειδιά και salt του κεντρικού υπολογιστή (ζήτημα #4). Επειδή κλωνοποιούνται και οι χρήστες, ένα cookie σύνδεσης του κεντρικού υπολογιστή μπορεί να είναι έγκυρο σε sandbox.
Μεταδεδομένα εκτέλεσης
Τα μεταδεδομένα εκτέλεσης του Rudel παραμένουν στους πίνακες MySQL WordPress του κεντρικού υπολογιστή:
wp_rudel_environments
wp_rudel_worktrees
Αυτοί οι πίνακες είναι η μοναδική αξιόπιστη πηγή του Rudel. Οι κατάλογοι περιβαλλόντων περιέχουν διαχειριζόμενα αρχεία και τεχνουργήματα, όχι την κατάσταση του μητρώου εκτέλεσης.