Gegevens kunnen en zullen verloren gaan. In deze tutorial zullen we een back-up maken van de gegevens op onze Django / Wagtail-site en deze terugzetten.
Een back-up zou geen verdere rechtvaardiging behoeven: het is van cruciaal belang om niet alleen de inhoud van de site, maar ook gebruikersinformatie te bewaren. In deze tutorial zullen we een back-up maken van de inhoud van onze site inclusief alle mediabestanden met het pakket dbbackup en deze herstellen in een lege omgeving.
In deze tutorial maken we een back-up op onze productieomgeving. Je kunt dezelfde stappen volgen om een back-up van je ontwikkelomgeving te maken; het is een goed idee om het proces uit te proberen voordat je het op een live serveromgeving uitvoert. Activeer op je ontwikkelcomputer de virtuele omgeving en installeer dbbackup:
pip3 install django-dbbackup
Voeg het toe aan het requirements.txt
-bestand en voeg de app toe aan INSTALLED_APPS
:
'dbbackup',
DBBACKUP_STORAGE = 'django.core.files.storage.FileSystemStorage'
DBBACKUP_STORAGE_OPTIONS = {'location': os.path.join(BASE_DIR, '../backups')}
De eerste parameter verwijst naar de klasse die Django gebruikt om opslag van bestanden te implementeren. De tweede parameter stelt de locatie in voor back-ups. Je kunt elk pad gebruiken dat je wilt; de bovenstaande instelling plaatst back-ups in een map op hetzelfde niveau als het project. Maak deze map /backups
. Het is niet nodig om de database te migreren. Push de wijzigingen naar je repository, ga naar de server, activeer je virtuele omgeving daar en haal de veranderingen op uit de repository. Maak ook de directory /backups
op de server. Installeer het pakket, met dezelfde commando als hierboven, of met
pip3 install -r requirements.txt
Het maken van een back-up van de database van de site en van alle mediabestanden is nu eenvoudig:
python3 manage.py dbbackup
python3 manage.py mediabackup
Je zou nu twee nieuwe bestanden moeten zien met de back-ups in de directory /backups
.
Deze bestanden kunnen we terugzetten naar de bestaande database (degene waarvan we een back-up hebben gemaakt) of naar een andere, hetzij op onze ontwikkelcomputer of op onze productieserver. Als je herstelt in een nieuwe omgeving, moet dbbackup daar uiteraard ook geïnstalleerd zijn en moet de locatie voor de back-ups correct zijn ingesteld. Het kopiëren van de back-upbestanden van de externe server naar de huidige directory kan worden gedaan met de scp
-opdracht
scp usr_pet@165.22.199.4:/home/usr_pet/backups/\* .
waarbij usr_pet
de geautoriseerde gebruiker is voor het project met de homedirectory /home/usr_pet
en het IP-adres het adres van de server is. De backslash dient hier als een escape-karakter en is alleen nodig bij zsh
.
Om de back-up in een nieuwe omgeving terug te zetten:
psql
-prompt controleren met: SELECT version()
; Installeer anders de juiste versie (bijvoorbeeld op Mac met Homebrew) en start deze. Je moet dan eerst een databasegebruiker aanmaken (zie eerste tutorial).psql
-prompt: CREATE DATABASE db_pet_backup OWNER usr_pet;
mkdir pet_backup && cd pet_backup
python3 -m venv env && source env/bin/activate
git clone https://github.com/prijme/pet.git
pip3 install -r requirements.txt
local.py
instellingenbestand met alle benodigde wachtwoorden (of kopieer het van de server); zorg ervoor dat de databasenaam db_pet_backup
ispython3 manage.py migrate
Je hebt nu een lege site. Zet de directory /backups
met de backupbestanden op hetzelfde niveau als de projectdirectory. Zet de gegevens en media terug met:
python3 manage.py dbrestore
python3 manage.py mediarestore
Daarmee is het terugzetten voltooid. Er zijn nog veel meer dingen die we aan onze site kunnen toevoegen, laat een reactie achter als je suggesties hebt!
Reageer op dit artikel (log eerst in of bevestig hieronder met naam en email)