Izoliavimas
Rudel yra užklausos pasirenkamų perdangų sistema. Pasirinkta užklausa naudoja smėlio dėžės duomenų bazės lenteles ir temos failus, tačiau veikia pagrindinės aplinkos WordPress dieginyje.
Atskiri kiekvienoje smėlio dėžėje
WordPress lentelės
Kiekviena smėlio dėžė gauna sugeneruotą lentelių prefiksą: pagrindinės aplinkos prefiksą ir pirmus septynis šešioliktainius smėlio dėžės ID MD5 simbolius.
wp_b65338d_options
wp_b65338d_posts
wp_b65338d_users
Rudel pakeičia WordPress lentelių prefiksą prieš baigiant WordPress įkėlimą, todėl kiekviena užklausa smėlio dėžėje skaito ir įrašo jos lentelių kopijas.
Naudotojai
users ir usermeta lentelės klonuojamos kartu su kitomis. Sukūrimo metu smėlio dėžėje yra pagrindinės aplinkos naudotojai ir jų slaptažodžiai; vėliau smėlio dėžėje sukurti, pakeisti ar ištrinti naudotojai pagrindinės aplinkos neveikia, o pagrindinės aplinkos pakeitimai smėlio dėžės nepasiekia.
Aktyvios temos failai
Pasirinkta tema nukopijuojama į smėlio dėžės katalogą:
wp-content/rudel-environments/{environment_id}/themes/{theme_slug}
Jei tema yra dukterinė, Rudel nukopijuoja ir pagrindinę temą, kad šablono ryšys liktų galiojantis. Smėlio dėžė visada pateikia kuriant įrašytą temą; temos pakeitimas pačioje smėlio dėžėje nieko nekeičia.
Bendra su pagrindine aplinka
- WordPress branduolys
- papildinių failai
- įkelti medijos failai
Pagrindinėje aplinkoje įdiegtas ar atnaujintas papildinys įdiegiamas arba atnaujinamas visose smėlio dėžėse. Aktyvūs papildiniai saugomi parinkčių lentelėje, todėl kiekvienos smėlio dėžės aktyvinimo būsena atskira. Smėlio dėžėje įkelti failai patenka į pagrindinės aplinkos įkėlimų katalogą. Taip smėlio dėžės sukuriamos greitai ir išvengiama visuotinio WP_CONTENT_DIR pakeitimo.
Palikite Rudel aktyvų kiekvienoje smėlio dėžėje. Pašto blokavimas ir temos perdanga veikia per šį papildinį, o jį išjungus, kai pasirinkta smėlio dėžė, iš bendro wp-config.php pašalinama ir įkrovos eilutė, todėl smėlio dėžių pasirinkimas išjungiamas visame dieginyje (issue #13).
Smėlio dėžės pasirinkimas
HTTP užklausos pasirenka smėlio dėžę per:
X-Rudel-Environmentantraštę (senasis aliasX-Rudel-Sandbox)rudel_environmentslapuką (senasis aliasrudel_sandbox)
Rudel niekada nenustato ir neištrina slapuko. Norėdami grįžti į pagrindinę aplinką, ištrinkite slapuką; administravimo juostos elementas Sandbox pateikia nuorodą į pagrindinės aplinkos URL, bet slapuką palieka (issue #10).
WP-CLI komandos pasirenka smėlio dėžę per:
RUDEL_ENVIRONMENTaplinkos kintamąjį--url, kurio pagrindinis kompiuteris prasideda smėlio dėžės ID, pavyzdžiui,--url=http://alpha-3be7.example.test
Pasirinkimo mechanizmas nėra autentifikuotas. Bet kuris klientas, galintis pasiekti svetainę ir nusiųsti galiojantį smėlio dėžės ID, patenka į tą smėlio dėžę, o smėlio dėžių ID (pavadinimas ir keturi šešioliktainiai simboliai) lengva atspėti. Smėlio dėžės pasirinkymo nelaikykite prieigos kontrolės riba; viešą pagrindinę aplinką apsaugokite žiniatinklio serverio arba tinklo lygmeniu.
Numatytoji užklausos elgsena
Pasirinktoje užklausoje Rudel:
- blokuoja siunčiamus el. laiškus per
pre_wp_mailfiltrą - nustato
WP_TEMP_DIRį smėlio dėžėstmpkatalogą - nustato
WP_CACHE_KEY_SALTį smėlio dėžei skirtą reikšmę, kad nuolatinės objektų talpyklos raktai nesusimaišytų - siūlo
WP_DEBUGregistravimą smėlio dėžėsdebug.logbei autentifikavimo raktus ir druskas, išvestus iš smėlio dėžės ID
Įkrovos procesas apibrėžia kiekvieną iš šių konstantų tik tada, jei wp-config.php jos dar neapibrėžė. Standartinis wp-config.php apibrėžia WP_DEBUG ir visus raktus bei druskas, todėl tokiame dieginyje smėlio dėžės užklausos naudoja pagrindinės aplinkos derinimo nustatymą, raktus ir druskas (issue #4). Kadangi naudotojai taip pat klonuojami, pagrindinės aplinkos prisijungimo slapukas gali galioti smėlio dėžėje.
Vykdymo metaduomenys
Rudel vykdymo metaduomenys lieka pagrindinės aplinkos WordPress MySQL lentelėse:
wp_rudel_environments
wp_rudel_worktrees
Šios lentelės yra Rudel pagrindinis patikimos informacijos šaltinis. Aplinkų kataloguose yra valdomi failai ir artefaktai, o ne vykdymo registro būsena.