Изолиране
Rudel е система с наслагване, избирано за всяка заявка. Избраната заявка използва таблиците на базата данни и файловете на темата на пясъчника, като същевременно работи през инсталацията на основния WordPress.
Изолирано за всеки пясъчник
Таблици на WordPress
Всеки пясъчник получава генериран префикс на таблиците: префиксът на основната инсталация плюс първите седем шестнадесетични знака от MD5 на ID на пясъчника.
wp_b65338d_options
wp_b65338d_posts
wp_b65338d_users
Rudel сменя префикса на таблиците на WordPress, преди WordPress да завърши стартирането, така че всяка заявка в пясъчник чете и записва копията на пясъчника.
Потребители
Таблиците users и usermeta се клонират заедно с останалите. При създаването пясъчникът започва с потребителите и паролите от основната инсталация; след това добавените, променените или изтритите в пясъчника потребители не засягат основната инсталация, а промените в основната не достигат до пясъчника.
Файлове на активната тема
Избраната тема се копира в директорията на пясъчника:
wp-content/rudel-environments/{environment_id}/themes/{theme_slug}
Ако темата е дъщерна, Rudel копира и родителската тема, за да остане валидна връзката с шаблона. Пясъчникът винаги обслужва темата, записана при създаването; смяната на темата в пясъчника няма ефект.
Споделено с основната инсталация
- основното ядро WordPress
- файлове на разширенията
- качени мултимедийни файлове
Разширение, инсталирано или актуализирано в основната инсталация, се инсталира или актуализира за всеки пясъчник. Кои разширения са активни се записва в таблицата с настройки, така че състоянието на активиране е отделно за всеки пясъчник. Качените от пясъчник файлове се съхраняват в директорията за качвания на основната инсталация. Така създаването на пясъчник става бързо и се избягва глобалната подмяна на WP_CONTENT_DIR.
Оставяйте Rudel активен във всеки пясъчник. Блокирането на имейли и наслагването на теми се изпълняват от разширението, а деактивирането му при избран пясъчник премахва и реда за стартиране от споделения wp-config.php, което изключва избора на пясъчник за цялата инсталация (issue #13).
Избиране на пясъчник
Заявките към HTTP избират пясъчник чрез:
- заглавката
X-Rudel-Environment(стар псевдонимX-Rudel-Sandbox) - бисквитката
rudel_environment(стар псевдонимrudel_sandbox)
Rudel никога не задава и не изтрива бисквитката. Изтрийте я, за да се върнете към основната инсталация; елементът Sandbox в административната лента води към основния URL, но оставя бисквитката (issue #10).
Командите WP-CLI избират пясъчник чрез:
- променливата на средата
RUDEL_ENVIRONMENT --url, чийто хост започва с ID на пясъчника, например--url=http://alpha-3be7.example.test
Изборът не е удостоверен. Всеки клиент, който има достъп до сайта и изпраща валиден ID на пясъчник, получава достъп до него, а ID-тата на пясъчниците (име плюс четири шестнадесетични знака) са лесни за отгатване. Не използвайте избора на пясъчник като граница за контрол на достъпа; защитете публичния хост на ниво уеб сървър или мрежа.
Настройки по подразбиране за заявките
За избрана заявка Rudel:
- блокира изходящата електронна поща чрез филтър
pre_wp_mail - задава
WP_TEMP_DIRкъм директориятаtmpна пясъчника - задава
WP_CACHE_KEY_SALTсъс специфична за пясъчника стойност, така че постоянните кешове на обекти да държат ключовете на пясъчниците отделно - предлага регистриране на
WP_DEBUGв пясъчникаdebug.logи ключове за удостоверяване и соли, изведени от ID на пясъчника
Кодът за стартиране дефинира всяка от тези константи само ако wp-config.php още не я е дефинирал. Стандартен wp-config.php дефинира WP_DEBUG и всички ключове и соли, така че при такава инсталация заявките към пясъчник използват настройката за отстраняване на грешки и ключовете и солите на основната инсталация (issue #4). Понеже потребителите също се клонират, бисквитка за вход в основната инсталация може да е валидна в пясъчник.
Метаданни по време на изпълнение
Метаданните за изпълнение на Rudel остават в таблиците MySQL на основния WordPress:
wp_rudel_environments
wp_rudel_worktrees
Тези таблици са единственият достоверен източник за Rudel. Директориите на средата съдържат управлявани файлове и артефакти, а не състоянието на регистъра по време на изпълнение.