Elkülönítés
A Rudel kérés alapján kiválasztott rétegként működik. A kiválasztott kérések a sandbox adatbázistábláit és témájának fájljait használják, miközben a gazdagép WordPress telepítésén futnak.
Sandboxedként elkülönített elemek
WordPress táblái
Minden sandbox egy generált táblaprefixumot kap: a gazdagép prefixumát, kiegészítve a sandboxazonosító MD5 értékének első hét hexadecimális karakterével.
wp_b65338d_options
wp_b65338d_posts
wp_b65338d_users
A Rudel még azelőtt átállítja az WordPress táblaprefixumát, hogy a WordPress befejezné az indulást, így a sandboxkérés összes lekérdezése a sandbox másolatából olvas és oda ír.
Felhasználók
Az users és az usermeta tábla a többi táblával együtt klónozódik. A sandbox létrehozásakor a gazdagép felhasználói és jelszavai kerülnek bele; ezt követően a sandboxban létrehozott, módosított vagy törölt felhasználók nem érintik a gazdagépet, és a gazdagép módosításai sem jutnak el a sandboxba.
Aktív tém fájljai
A kiválasztott téma a sandbox könyvtárába másolódik:
wp-content/rudel-environments/{environment_id}/themes/{theme_slug}
Ha a téma gyermek téma, a Rudel a szülő témát is átmásolja, hogy a sablonkapcsolat érvényes maradjon. A sandbox mindig a létrehozásakor rögzített témát szolgálja ki; a sandboxon belüli témaváltásnak nincs hatása.
Megosztva a gazdagéppel
- WordPress mag
- bővítményfájlok
- feltöltött médiafájlok
A gazdagépen telepített vagy frissített bővítmény minden sandboxban települ vagy frissül. Az aktív bővítményeket az options tábla tárolja, ezért az aktiválási állapot sandboxonként különbözik. A sandboxban végzett feltöltések a gazdagép uploads könyvtárába kerülnek. Így a sandboxok gyorsan létrehozhatók, és elkerülhető a WP_CONTENT_DIR globális lecserélése.
A Rudel maradjon aktív minden sandboxban. A levelek blokkolása és a téma rétegezése a bővítményből fut; ha kiválasztott sandbox mellett deaktiválja, a megosztott wp-config.php fájlból is eltávolítja az indítósort, így a sandbox kiválasztása az egész telepítésen kikapcsol (13. számú probléma).
Sandbox kiválasztása
A HTTP kérések az alábbi módokon választanak ki sandboxot:
- a
X-Rudel-Environmentfejléc (régi aliasa:X-Rudel-Sandbox) - a
rudel_environmentsüti (régi aliasa:rudel_sandbox)
A Rudel soha nem állítja be és nem törli a sütit. A gazdagépre való visszatéréshez törölje a sütit; az adminisztrációs sáv Sandbox eleme a gazdagép URL oldalára mutat, de a sütit meghagyja (10. számú probléma).
A WP-CLI parancsok az alábbi módokon választanak ki sandboxot:
- a
RUDEL_ENVIRONMENTkörnyezeti változóval - egy olyan
--urlhasználatával, amelynek gazdagépneve a sandboxazonosítóval kezdődik, például:--url=http://alpha-3be7.example.test
A kiválasztó nincs hitelesítve. Bármelyik, a webhelyet elérő kliens megkapja az adott sandboxot, ha érvényes sandboxazonosítót küld; a sandboxazonosítók (név és négy hexadecimális karakter) könnyen kitalálhatók. Ne tekintse a sandbox kiválasztását hozzáférés-vezérlési határnak; nyilvános gazdagépet webszerver- vagy hálózati szinten védjen.
Kérés alapértelmezett beállításai
Kiválasztott kérés esetén a Rudel:
pre_wp_mailszűrővel blokkolja a kimenő e-maileket- a
WP_TEMP_DIRértékét a sandboxtmpkönyvtárára állítja - a
WP_CACHE_KEY_SALTértékét sandboxonként egyedire állítja, hogy a tartós objektumgyorsítótárak elkülönítsék a sandbox kulcsait WP_DEBUGnaplózást kínál a sandboxdebug.logfájljába, valamint a sandboxazonosítóból származtatott hitelesítési kulcsokat és sókat
Az indító csak akkor definiálja ezeket az állandókat, ha a wp-config.php még nem definiálta őket. Egy szabványos wp-config.php definiálja a WP_DEBUG értékét, valamint az összes kulcsot és sót; ilyen telepítésen tehát a sandboxkérések a gazdagép hibakeresési beállításait, kulcsait és sóit használják (4. számú probléma). Mivel a felhasználók is klónozódnak, a gazdagép bejelentkezési sütije a sandboxban is érvényes lehet.
Futásidejű metaadatok
A Rudel futásidejű metaadatai a gazdagép WordPress MySQL tábláiban maradnak:
wp_rudel_environments
wp_rudel_worktrees
Ezek a táblák jelentik a Rudel hiteles adatforrását. A környezeti könyvtárak a kezelt fájlokat és elemeket tartalmazzák, nem a futásidejű nyilvántartás állapotát.