Kloning Totara-webbplatser från en säkerhetskopia av databasen
  • 01 Sep 2023
  • 4 Protokoll att läsa

Kloning Totara-webbplatser från en säkerhetskopia av databasen


Article Summary

När du konfigurerar en ny webbplats kanske du vill börja med någon standardkonfiguration och inställning. Ett sätt att uppnå detta är att klona databas- och webbplatsdata från en befintlig webbplats. När denna metod används, kommer ofta allt att verka fungera bra, men det finns några subtila problem som orsakas av kloning som kan orsaka betydande problem på en produktionsanläggning.

Därför rekommenderar vi starkt att göra en ny installation för alla anläggningar som kommer att användas i produktionen. Se nedan för mer information om vårt rekommenderade tillvägagångssätt och saker att tänka på om du klonar från en säkerhetskopia.

Vikten av att återställa webbplatsidentifieraren

Ett betydande problem som kan uppstå när en webbplats klonas från en databassäkerhetskopiering är att du kan sluta med samma webbplatsidentifierare på flera webbplatser. Webbplatsidentifieraren lagras i konfigurationsinställningen för $CFG→platsidentifierare och måste vara ett unikt värde för alla platser. Många kodområden är beroende av denna variabels unika egenskaper. Om du återställer en ny webbplats från en säkerhetskopia av någon annan anledning än att flytta webbplatsen till en ny URL, måste du inaktivera konfigurationsvariabeln för webbplatsidentifierare. Systemet kommer automatiskt att generera en ny unik identifierare när det krävs nästa gång.

Nedan finns några potentiella problem som vi har identifierat som kan uppstå på webbplatser som använder samma webbplatsidentifierare. Detta är inte en uttömmande lista, bara några exempel som belyser problemen.

Cachning

Det inbyggda cachesystemet använder webbplatsidentifieraren för att generera en unik nyckel (se get_cache_identifier() i /cache/classes/definition.php). Om två webbplatser med samma identifierare använder samma cache-lagring finns det risk för att cachade data från en webbplats skickas felaktigt till den andra webbplatsen. Detta kan inkludera känslig information, eller systemkritisk information såsom konfigurationsdata. Felaktig användning av cachade data från en annan webbplats har potential att kritiskt skada webbplatsen(erna) - till exempel om cachad konfiguration eller databastabellstrukturdata från en webbplats används av kod på en annan webbplats.

Säkerhetskopiering och återställning

Säkerhetskopiering och återställning använder webbplatsidentifieraren för att avgöra om en säkerhetskopia återställs på samma webbplats som den genererades på eller inte. Systemet beter sig olika beroende på om källan och destinationen matchar eller inte. Till exempel, istället för att skapa en ny användare kan systemet tilldela återställda data till en befintlig användare om den tror att användaren matchar (se kommentarer ovan precheck_user() i /util/dbops/restore_dbops.class.php ). Även om det finns ytterligare kontroller på plats (användar-ID och användarnamn måste båda matcha), finns det fortfarande risk för felaktig tilldelning av data om en säkerhetskopia från en webbplats återställs på en annan webbplats när de delar samma webbplatsidentifierare, särskilt om användare klonas som en del av installationen av den nya webbplatsen.

LTI

LTI använder webbplatsidentifieraren för att generera hemliga tokens som används för att autentisera åtkomst till LTI-paket (se generate_cartridge_token() i /enrol/lti/classes/helper.php). Teoretiskt kan en användare med tillgång till en webbplats autentisera sig till en kurs på en annan webbplats som delar samma webbplatsidentifierare, om det finns en kurs som delar samma kurs-ID som kursen de har tillgång till på sin webbplats. Detta skulle innebära en betydande säkerhetsfråga.

Rekommenderat tillvägagångssätt för att skapa platsinstanser

Vårt rekommenderade tillvägagångssätt för att skapa en ny webbplats skulle vara följande:

  • Skapa en ny webbplats från grunden med en tom databas och datarot
  • Installera webbplatsen med den normala installationsproceduren (CLI eller via webben)
  • Överväg att skapa ett smakplugin (se kommentarer i /totara/flavour/classes/definition.php för hur man skapar en smak) för att ställa in initial konfiguration och standardinställningar
  • Skapa ett lokalt plugin och använd db/install.php eller CLI-skript för att skapa något standardinnehåll

Överväganden vid återställning från säkerhetskopiering av databas

Även om vi starkt rekommenderar att du inte gör detta av de skäl som beskrivs ovan, och inte kan ge stöd för eventuella problem som uppstår på grund av webbplatser som är inställda på detta sätt, rekommenderar vi att du noga överväger följande om du väljer att skapa en webbplats på detta sätt:

  • Du måste inaktivera konfigurationsinställningen för webbplatsidentifierare på den nya webbplatsen, såvida inte:
    • Du flyttar webbplatsen till en ny URL (i vilket fall den ska förbli densamma).
    • Du kopierar en produktionsdatabas till en mellanlagrings- eller testserver för teständamål (du bör vara bra så länge din testserver är korrekt isolerad från produktionsinstansen).
  • Din databas kan innehålla referenser till webbplatsens URL, som du sannolikt kommer att vilja ersätta. Det finns ett skript som gör detta (/admin/cli/replace.php), men vi stöder inte dess användning och kan inte ge några garantier för att det kommer att fungera korrekt.
  • Du bör trunkera eventuella webbplatsloggar omedelbart efter att du har återställt webbplatsen.
  • Vi rekommenderar att mängden innehåll på webbplatsen säkerhetskopieras till ett absolut minimum. Ju mindre innehåll det finns, desto mindre chans kommer det att bli ett problem.

Vad du ska göra om du har befintliga webbplatser som delar en webbplatsidentifierare

Vi rekommenderar att du, om möjligt, inaktiverar webbplatsidentifieraren och genererar en ny genom att ringa moodlelib.php-funktionen get_site_identifier(). Detta måste dock bedömas från fall till fall med hänsyn till följande möjliga effekter:

  • Se till att du har en fullständig säkerhetskopia av din databas och webbplatsdata innan du inaktiverar webbplatsidentifieraren.
  • Kasser kommer att ogiltigförklaras. Rensa cacheminnet omedelbart efter att webbplatsidentifieraren har inaktiverats.
  • Tänk på att alla säkerhetskopior som genereras på webbplatsen som du återställer till samma webbplats nu kommer att behandla webbplatsen som om den vore en annan webbplats istället för samma.
  • Granska koden för eventuella plugins från tredje part noggrant för att identifiera eventuella beroenden på webbplatsidentifieraren och avgöra hur de kommer att bete sig.

© Copyright 2024 Totara Learning Solutions. All rights reserved.


Var den här artikeln till hjälp?

Changing your password will log you out immediately. Use the new password to log back in.
First name must have atleast 2 characters. Numbers and special characters are not allowed.
Last name must have atleast 1 characters. Numbers and special characters are not allowed.
Enter a valid email
Enter a valid password
Your profile has been successfully updated.