Μετάβαση στο περιεχόμενο

Απομόνωση

Το Rudel είναι ένα σύστημα επικάλυψης που επιλέγεται ανά αίτημα. Ένα επιλεγμένο αίτημα χρησιμοποιεί τους πίνακες βάσης δεδομένων και τα αρχεία θέματος του sandbox, ενώ εξακολουθεί να εκτελείται μέσω της εγκατάστασης WordPress του κεντρικού υπολογιστή.

Απομονωμένα ανά sandbox

Πίνακες WordPress

Κάθε sandbox αποκτά ένα παραγόμενο πρόθεμα πινάκων: το πρόθεμα του κεντρικού υπολογιστή συν τους πρώτους επτά δεκαεξαδικούς χαρακτήρες του MD5 του ID sandbox.

Text
wp_b65338d_options
wp_b65338d_posts
wp_b65338d_users

Το Rudel αλλάζει το πρόθεμα πινάκων WordPress πριν ολοκληρωθεί η εκκίνηση του WordPress, ώστε κάθε ερώτημα σε αίτημα sandbox να διαβάζει και να γράφει στα αντίγραφα του sandbox.

Χρήστες

Οι πίνακες users και usermeta κλωνοποιούνται μαζί με τους υπόλοιπους. Ένα sandbox ξεκινά με τους χρήστες και τους κωδικούς πρόσβασης του κεντρικού υπολογιστή τη στιγμή της δημιουργίας του· στη συνέχεια, οι χρήστες που δημιουργούνται, αλλάζουν ή διαγράφονται στο sandbox δεν επηρεάζουν τον κεντρικό υπολογιστή, ενώ οι αλλαγές στον κεντρικό υπολογιστή δεν περνούν στο sandbox.

Αρχεία ενεργού θέματος

Το επιλεγμένο θέμα αντιγράφεται στον κατάλογο sandbox:

Text
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 του κεντρικού υπολογιστή:

Text
wp_rudel_environments
wp_rudel_worktrees

Αυτοί οι πίνακες είναι η μοναδική αξιόπιστη πηγή του Rudel. Οι κατάλογοι περιβαλλόντων περιέχουν διαχειριζόμενα αρχεία και τεχνουργήματα, όχι την κατάσταση του μητρώου εκτέλεσης.