Към съдържанието

Изолиране

Rudel е система с наслагване, избирано за всяка заявка. Избраната заявка използва таблиците на базата данни и файловете на темата на пясъчника, като същевременно работи през инсталацията на основния WordPress.

Изолирано за всеки пясъчник

Таблици на WordPress

Всеки пясъчник получава генериран префикс на таблиците: префиксът на основната инсталация плюс първите седем шестнадесетични знака от MD5 на ID на пясъчника.

Text
wp_b65338d_options
wp_b65338d_posts
wp_b65338d_users

Rudel сменя префикса на таблиците на WordPress, преди WordPress да завърши стартирането, така че всяка заявка в пясъчник чете и записва копията на пясъчника.

Потребители

Таблиците users и usermeta се клонират заедно с останалите. При създаването пясъчникът започва с потребителите и паролите от основната инсталация; след това добавените, променените или изтритите в пясъчника потребители не засягат основната инсталация, а промените в основната не достигат до пясъчника.

Файлове на активната тема

Избраната тема се копира в директорията на пясъчника:

Text
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:

Text
wp_rudel_environments
wp_rudel_worktrees

Тези таблици са единственият достоверен източник за Rudel. Директориите на средата съдържат управлявани файлове и артефакти, а не състоянието на регистъра по време на изпълнение.