Przejdź do treści

Izolacja

Rudel to system nakładek wybieranych dla poszczególnych żądań. Wybrane żądanie korzysta z tabel bazy danych i plików motywu piaskownicy, ale nadal działa w ramach instalacji hosta WordPress.

Izolowane dla każdej piaskownicy

Tabele WordPress

Każda piaskownica otrzymuje wygenerowany prefiks tabel: prefiks hosta oraz pierwszych siedem znaków szesnastkowych wartości MD5 identyfikatora piaskownicy.

Text
wp_b65338d_options
wp_b65338d_posts
wp_b65338d_users

Rudel przełącza prefiks tabel WordPress, zanim zakończy się uruchamianie WordPress, więc każde zapytanie w żądaniu obsługiwanym przez piaskownicę odczytuje i zapisuje jej kopie tabel.

Użytkownicy

Tabele users i usermeta są klonowane razem z pozostałymi. W chwili utworzenia piaskownica zawiera użytkowników i hasła hosta; później użytkownicy tworzeni, zmieniani lub usuwani w piaskownicy nie wpływają na hosta, a zmiany na hoście nie są przenoszone do piaskownicy.

Pliki aktywnego motywu

Wybrany motyw jest kopiowany do katalogu piaskownicy:

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

Jeśli motyw jest motywem potomnym, Rudel kopiuje również motyw nadrzędny, aby zachować prawidłowe powiązanie szablonów. Piaskownica zawsze udostępnia motyw zapisany podczas jej tworzenia; przełączanie motywów wewnątrz piaskownicy nie ma wpływu na ten wybór.

Współdzielone z hostem

  • WordPress — rdzeń
  • pliki wtyczek
  • przesłane pliki multimedialne

Wtyczka zainstalowana lub zaktualizowana na hoście jest instalowana lub aktualizowana we wszystkich piaskownicach. Informacje o aktywnych wtyczkach są przechowywane w tabeli opcji, więc ich stan aktywacji jest osobny dla każdej piaskownicy. Pliki przesłane z piaskownicy trafiają do katalogu przesłanych plików hosta. Dzięki temu piaskownice tworzą się szybko, a WP_CONTENT_DIR nie trzeba wymieniać globalnie.

Pozostaw aktywną wtyczkę Rudel w każdej piaskownicy. Blokowanie poczty i nakładka motywu działają z poziomu wtyczki, a jej dezaktywacja przy wybranej piaskownicy usuwa również wiersz inicjalizacyjny ze współdzielonego pliku wp-config.php, wyłączając wybór piaskownicy dla całej instalacji (zgłoszenie nr 13).

Wybieranie piaskownicy

Żądania HTTP wybierają piaskownicę za pomocą:

  • nagłówka X-Rudel-Environment (starszy alias: X-Rudel-Sandbox)
  • pliku cookie rudel_environment (starszy alias: rudel_sandbox)

Rudel nigdy nie ustawia ani nie usuwa pliku cookie. Usuń go, aby wrócić do hosta; pozycja Piaskownica na pasku administratora prowadzi do hosta URL, ale pozostawia plik cookie bez zmian (zgłoszenie nr 10).

Polecenia WP-CLI wybierają piaskownicę za pomocą:

  • zmiennej środowiskowej RUDEL_ENVIRONMENT
  • --url, którego host zaczyna się od identyfikatora piaskownicy, na przykład --url=http://alpha-3be7.example.test

Wybór nie jest uwierzytelniany. Każdy klient, który może połączyć się z witryną i wysyła prawidłowy identyfikator piaskownicy, uzyskuje dostęp do tej piaskownicy, a identyfikatory (nazwa i cztery znaki szesnastkowe) łatwo odgadnąć. Nie traktuj wyboru piaskownicy jako granicy kontroli dostępu; chroń publiczny host na poziomie serwera WWW lub sieci.

Domyślne ustawienia żądania

Dla wybranego żądania Rudel:

  • blokuje pocztę wychodzącą za pomocą filtra pre_wp_mail
  • ustawia WP_TEMP_DIR na katalog tmp piaskownicy
  • ustawia WP_CACHE_KEY_SALT na wartość właściwą dla piaskownicy, aby trwałe pamięci podręczne obiektów rozdzielały klucze piaskownic
  • udostępnia rejestrowanie WP_DEBUG w pliku debug.log piaskownicy oraz klucze uwierzytelniania i sole utworzone na podstawie jej identyfikatora

Skrypt inicjalizacyjny definiuje każdą z tych stałych tylko wtedy, gdy wp-config.php nie zdefiniował jej wcześniej. Standardowa instalacja wp-config.php definiuje WP_DEBUG oraz wszystkie klucze i sole, więc żądania piaskownicy w takiej instalacji używają ustawień debugowania oraz kluczy i soli hosta (zgłoszenie nr 4). Ponieważ użytkownicy również są klonowani, plik cookie logowania hosta może być ważny w piaskownicy.

Metadane środowiska uruchomieniowego

Metadane środowiska uruchomieniowego Rudel pozostają w tabelach hosta WordPress MySQL:

Text
wp_rudel_environments
wp_rudel_worktrees

Te tabele są jedynym źródłem prawdy dla Rudel. Katalogi środowisk zawierają zarządzane pliki i artefakty, a nie stan rejestru środowiska uruchomieniowego.