Preskočiť na obsah

Izolácia

Rudel je systém prekrytia vyberaného podľa požiadavky. Vybraná požiadavka používa databázové tabuľky a súbory témy sandboxu, no naďalej beží v hostiteľskej inštalácii WordPress.

Izolované pre každý sandbox

Tabuľky WordPress

Každý sandbox dostane vygenerovaný prefix tabuliek: prefix hostiteľského prostredia a prvých sedem hexadecimálnych znakov MD5 ID sandboxu.

Text
wp_b65338d_options
wp_b65338d_posts
wp_b65338d_users

Rudel prepne prefix tabuliek WordPress ešte pred dokončením inicializácie WordPress, takže každý databázový dotaz v požiadavke sandboxu číta kópie sandboxu a zapisuje do nich.

Používatelia

Tabuľky users a usermeta sa klonujú spolu s ostatnými. Sandbox pri vytvorení obsahuje používateľov a heslá hostiteľského prostredia; neskoršie vytvorenie, zmena alebo odstránenie používateľov v sandboxe neovplyvní hostiteľské prostredie a zmeny v hostiteľskom prostredí sa do sandboxu neprenesú.

Súbory aktívnej témy

Vybraná téma sa skopíruje do adresára sandboxu:

Text
wp-content/rudel-environments/{environment_id}/themes/{theme_slug}

Ak je téma podriadená, Rudel skopíruje aj nadradenú tému, aby vzťah medzi šablónami zostal platný. Sandbox vždy poskytuje tému zaznamenanú pri vytvorení; zmena témy v sandboxe nemá žiadny účinok.

Zdieľané s hostiteľským prostredím

  • jadro WordPress
  • súbory pluginov
  • nahrané médiá

Plugin nainštalovaný alebo aktualizovaný v hostiteľskom prostredí sa nainštaluje alebo aktualizuje vo všetkých sandboxoch. Aktívne pluginy sú uložené v tabuľke možností, takže ich aktivácia sa spravuje osobitne pre každý sandbox. Nahrané súbory pridané v sandboxe sa ukladajú do adresára nahraných súborov hostiteľského prostredia. Vďaka tomu sa sandboxy vytvárajú rýchlo a netreba globálne nahrádzať WP_CONTENT_DIR.

Rudel musí zostať aktívny v každom sandboxe. Blokovanie pošty a prekrytie témy zabezpečuje plugin; jeho deaktivácia pri vybranom sandboxe zároveň odstráni inicializačný riadok zo zdieľaného wp-config.php, čím sa vypne výber sandboxov pre celú inštaláciu (vydanie č. 13).

Výber sandboxu

Požiadavky HTTP vyberajú sandbox cez:

  • hlavičku X-Rudel-Environment (starší alias X-Rudel-Sandbox)
  • súbor cookie rudel_environment (starší alias rudel_sandbox)

Rudel nikdy nenastavuje ani nemaže súbor cookie. Ak sa chcete vrátiť do hostiteľského prostredia, vymažte ho; položka Sandbox na paneli správcu odkazuje na hostiteľské URL, ale súbor cookie ponechá (vydanie č. 10).

Príkazy WP-CLI vyberajú sandbox cez:

  • premennú prostredia RUDEL_ENVIRONMENT
  • --url, ktorej hostiteľská časť začína ID sandboxu, napríklad --url=http://alpha-3be7.example.test

Výber nie je overovaný. Každý klient, ktorý sa môže pripojiť k webu a odošle platné ID sandboxu, získa prístup k danému sandboxu; ID sandboxov (názov a štyri hexadecimálne znaky) sa dajú ľahko uhádnuť. Výber sandboxu nepovažujte za hranicu riadenia prístupu; verejné hostiteľské prostredie chráňte na úrovni webového servera alebo siete.

Predvolené nastavenia požiadavky

Pre vybranú požiadavku Rudel:

  • blokuje odchádzajúcu poštu pomocou filtra pre_wp_mail
  • nastaví WP_TEMP_DIR na adresár tmp sandboxu
  • nastaví WP_CACHE_KEY_SALT na hodnotu špecifickú pre sandbox, aby trvalé vyrovnávacie pamäte objektov uchovávali kľúče sandboxov oddelene
  • sprístupní protokolovanie WP_DEBUG do debug.log sandboxu a autentifikačné kľúče a soli odvodené z ID sandboxu

Inicializačný kód definuje každú z týchto konštánt, iba ak ju wp-config.php ešte nedefinoval. Štandardná inštalácia wp-config.php definuje WP_DEBUG a všetky kľúče a soli, takže požiadavky sandboxu v takejto inštalácii používajú nastavenie ladenia hostiteľského prostredia, ako aj jeho kľúče a soli (vydanie č. 4). Keďže sa klonujú aj používatelia, prihlasovací súbor cookie hostiteľského prostredia môže byť platný aj v sandboxe.

Metadáta za behu

Metadáta prostredí Rudel za behu zostávajú v tabuľkách hostiteľského prostredia WordPress MySQL:

Text
wp_rudel_environments
wp_rudel_worktrees

Tieto tabuľky sú jediným zdrojom pravdy pre Rudel. Adresáre prostredí obsahujú spravované súbory a artefakty, nie stav registra za behu.