[Serwery] Jak działa demo systemu CMS online
17.05.2011 16:01
Witam.
Ostatnio pewien znajomy pokazał mi "bajer" który automatycznie sam przywraca kopię bazy co X minut, pomyślałem, że przedstawię w jaki sposób tak przydatna czynność jest wykonywana.
W Uniksach jest tak zwany crontab czyli program chodzący w tle który wykonuje polecenia o określonych porach i odstępach czasowych.
Jak się można domyślić do crontaba należy dodać krótkie polecenie które będzie przywracać bazę danych z kopii zapasowej.
Ze względu na różne warunki panujące na serwerach jest zatem kilka metod na wykonanie tego prostego zadania.
1. Dostęp do shella na serwerze hostingowym
To jest ta najłatwiejsza sytuacja w której wystarczy posłużyć się shellowym crontabem całkowicie bezproblemowo i bezpłatnie.
1. Tworzymy kod przywracający backup
#!/bin/bash cp ~/.kopia-bazy-pokazowej /var/www/data/db/database.sqlite3 chown www-data /var/www/data/db/database.sqlite3 # opcjonalnie
2. Dodajmy wpis do crontaba
crontab -e
*/10 * * * * /home/uzyszkodnik/przywroc-backup.sh
Backup będzie tym sposobem przywracany co 10 minut.
2. Brak dostępu do shella, panel webowy z płatnym cronem
Harmonogram zadań, dokładnie taki termin często pojawia się w panelach zarządzania kontem hostingowym.
W hostingach za SMS jedno zadanie w harmonogramie może kosztować przeciętnie ok. 10 zł
Przez brak dostępu do shella skrypt wykonujący kopie zapasowe należy napisać w PHP/Ruby/Python/Perl/LUA/ASP.NET lub w innym języku skryptowym.
<?php copy('backupy/baza-danych.sqlite3', 'data/db/demo.sqlite3'); ?>
Reguły crontaba w panelach WWW są zazwyczaj kilkalne więc nie powinno być problemów z ustawieniem.
Podsumowując prosty, banalny sposób na postawienie systemu CMS z panelem administratora dostępnym dla wszystkich w ramach demonstracji działania naszego skryptu.
Całość oparta na crontabie który jest idealnie prosty w użytku i nie powinien żadnemu administratorowi ani programiście webowemu przysporzyć problemów.