U ovom članku pišem o aktuelnom rešenju koje koristim za automatizovano bekapovanje svih sajtova (cPanel naloga da budem precizniji) pod svojim cPanel reseller hosting nalozima (šta je to reseller hosting). Ovo uputstvo podrazumeva da znate raditi osnovne stvari u cPanel-u.
Ovde opisano rešenje možete koristiti i za automatizaciju bekapa shared hosting naloga (šta je to shared hosting). Samo umesto WHM korisničkog imena i lozinke koristite svoje cPanel korisničko ime i lozinku, a umesto adrese i porta WHM servera, koristite adresu i port cPanel servera.
Poseban članak objašnjava automatizaciju bekapa DirectAdmin reseller hosting naloga.
Sadržaj:
- Uvod
- WHM Backup Solutions i alternative
2.1. WHMEasyBackup (WHMEZBACKUP)
2.2. 2.2. WHM Backup Solutions – besplatan - Konfigurisanje automatizovanih bekapa
3.1. Skladište za bekape – Hetzner Box
3.2. PHP putanja glavnog reseller cPanel naloga
3.3. Adresa i port vašeg WHM servera
3.4. Vaši WHM login podaci
3.5. Kopiranje WHM Backup solutions na hosting server
3.6. Konfigurisanje WHM Backup Solutions
3.7. Kreiranje cron zadataka – automatizacija bekapa - Rešavanje problema
- Problemi sa SFTP konekcijom
- Zaključak
1. Uvod
Više decenija posla s računarima naučilo me je da kod bekapa važi pravilo: “jedan, k’o nijedan.” Drugim rečima, sve što je važno, treba čuvati na barem dva različita, odvojena mesta.
Kada podaci obično nestanu? Minut pre narednog planiranog bekapa.
Zbog toga, pored kopija koje hosting provajder pravi, gledam da imam barem još jednu rezervnu kopiju (zapravo dve) na potpuno odvojenom skladištu.
Ovo sam dugo radio pomoću alata JetBackup, ali on više ne pravi kopije koje mogu sam lako testirati i proveriti da su ispravne (vidite JetBackup automatizacija reseller hosting bekapa za više detalja). Stoga sam tražio alternativna rešenja.
Nakon dosta istraživanja i testiranja, najbolje mi se pokazao program WHM Backup Solutions (link ka njihovom sajtu).
2. WHM Backup Solutions i alternative
Kada sam shvatio da JetBackup u novoj verziji više ne pravi bekape koje mogu proveriti, editovati i iskoristiti nezavisno od hosting provajdera, počeo sam tražiti alternative.
2.1. WHMEasyBackup (WHMEZBACKUP)
Prvo rešenje koje mi je palo na pamet je WHMEasyBackup (link ka njihovom sajtu). Došlo je preporučeno na WebHostingTalk forumu (link ka istom), od strane više hosting provajdera. Imao sam dve lifetime licence kupljene 2019. godine i čuvane za slučaj da JetBackup počne štucati.
Računao sam: znam da postoje besplatna (eng. “free open source”) rešenja, ali ovo je plaćeno, pa ipak neko stoji iza toga, imam korisničku podršku, a zahvaljujući lifetime kupovini ne moram misliti o redovnim mesečnim uplatama.
Na moje neprijatno iznenađenje, ispostavilo se da su moje lifetime licence pretvorene u “stare licence,” koje ne važe za poslednju verziju softvera. To nije bilo jasno naznačeno u vreme kupovine. Ovo mi ne zvuči kao korektna poslovna politika.
Sad, oni tvrde da i stara verzija softvera radi i da će je apdejtovati u slučaju drastičnih izmena cPanel-a. Međutim, meni nije radila.
Umesto da se bakćem sa tehničkom podrškom hosting provajdera i WHMeasyBackup-a, odlučio sam se probati prvo besplatnu open source alternativu – i ona je radila odlično! 🙂
2.2. WHM Backup Solutions – besplatan
WHM Backup Solutions mi se pokazao kao dobro rešenje i u ovom članku ću pisati o tome kako se pomoću njega konfiguriše automatizovanje bekapa.
Ovo je besplatno, open-source rešenje koje održava gospodin Peter Kelly – hvala lepo. 🙂
3. Konfigurisanje automatizovanih bekapa
Bez dalje priče, evo korak-po-korak uputstva kako podesiti i automatizovano bekapovanje svojih cPanel reseller hosting naloga. Za to će nam trebati sledeći podaci (objašnjavam i kako se do njih dolazi):
- Adresa, korisničko ime i lozinka za pristup FTP serveru
- Putanja do PHP-a vašeg reseller cPanel naloga
- Adresa i port vašeg WHM servera
- Vaši WHM login podaci
- Putanja do WHM Backup Solutions direktorijuma
3.1. Skladište za bekape – Hetzner Box
Napisao sam poseban članak koji u detalje objašnjava kako se Hetzner Storage Box “kupuje” i podešava – “Hetzner Storage Box – objašnjeno.”
Preporučujem da sledite uputstva iz tog članka ako se odlučite za Hetzner skladište. Obratite posebno pažnju na 6. poglavlje – “Kreiranje dodatnih FTP korisničkih naloga,” jer ćemo to koristiti u nastavku.
Zapišite adresu FTP servera, korisničko ime, lozinku (vidite sliku 7 i pričitajte poglavlje 6 u gore linkovanom članku) i imajte na umu da Hetzner Storage Box za SCP koristi port 23, a za FTP port 21.
To može izgledati ovako:
- Adresa FTP servera: u273500.your-storagebox.de
- Username: u273500-sub1
- Password: DSjk04#$9sdf3J0s2l
Naravno, možete koristiti bilo koje drugo (S)FTP skladište – princip je isti.
3.2. PHP putanja glavnog reseller cPanel naloga
Ulogujte se na svoj glavni cPanel reseller hosting nalog i podesite PHP verziju na 7.4 (ako nije raspoloživa, tražite boljeg hosting provajdera).
Kreirajte fajl “phpinfo.php” (ili ga skinite sa BikeGremlin – phpinfo.php.zip) koji sadrži sledeći kod:
<?php
phpinfo(INFO_GENERAL);
echo '<br /><br /><strong>Path To PHP: </strong>'.PHP_BINDIR.'/php';
?>
Ako želite videti i sve aktivne PHP ekstenzije, dodajte ovu liniju koda pre zatvaranja PHP-a (tj. pre “?>” linije):
phpinfo( );
Sada se ulogujte na glavni cPanel nalog svog reseller hosting naloga i uploadujte “phpinfo.php” u “public_html” direktorijum (ako ste skinuli fajl sa BikeGremlin, morate ga i otpakovati nakon upload-a).
Da, naravno, možete ovo uraditi i preko FTP klijenta.
Zatim u browser-u otvorite web adresu svog glavnog reseller hosting naloga i dodajte “/phpinfo.php” na kraju, na primer:
https://www.moj-reseller-domen.com/phpinfo.php
3.3. Adresa i port vašeg WHM servera
Ulogujte se na svoj WHM nalog preko portala provajdera.
Kada ste kliknuli na logovanje i ušli na WHM, prepišite web adresu servera i broj porta kako su prikazani u browseru.
U ovom slučaju adresa servera je “cp3.fastestserver.co.uk” a port je “2087”.
3.4. Vaši WHM login podaci
Ovo su korisničko ime i lozinka koje koristite za logovanje na WHM (i na cPanel glavnog reseller hosting naloga).
Trebalo bi da su vam poznati – i da su snimljeni u kriptovanom KeePass fajlu.
3.5. Kopiranje WHM Backup solutions na hosting server
Prva stvar koju radimo je download aktuelne verzije WHM Backup Solutions alata (link ka njihovom sajtu).
Možete ovo skinuti i sa BikeGremlin download – tu sam već kreirao potreban direktorijum i “config.php” fajl koji rade sa ovim uputstvom, uz izmene u fajlu poput:
$config['whm_username'] = 'see chapter 3.4';
umesto:
$config['whm_username'] = '';
Ako koristite BikeGremlin fajl, njega samo uploadujete na root direktorijum svog glavnog reseller hosting cPanel naloga. Ako koristite originalni fajl, morate na root-u prvo kreirati direktorijum “whmbackupsolutions” pa tu uploadovati fajl. Ponavljam: na root, ne u “public_html”.
Zapravo, direktorijum možete nazvati kako god želite, ali u ovom uputstvu ćemo koristiti “whmbackupsolutions” pa ako dajete drugo ime, moraćete raditi više izmena ako koristite copy/paste komandi iz ovog uputstva. Takođe – obratite pažnju na velika i mala slova u putanjama, nije sve jedno (“WhmBackupSolutions” nije isto što i “whmbackupsolutions”).
Nakon uploada, otpakujte fajl.
Zapišite putanju u koju ste kopirali sve fajlove. U našem primeru to je:
/home/bikegremlin/whmbackupsolutions/
Kod vas bi moglo izgledati kao:
/home/vas-username/whmbackupsolutions/
3.6. Konfigurisanje WHM Backup Solutions
Kako je prikazano na slici 5 ispod: uđite u “whmbackupsolutions” direktorijum (1) i desnim tasterom miša kliknite na “config.php” (2) i izaberite opciju “Edit” (3).
Ako ne koristite BikeGremlin download verziju, moraćete da kopirate fajl “config.php.new” u “config.php” (2a), pošto “config.php” ne postoji u originalnoj verziji.
U fajlu unesite podatke koji se odnose na vaš server (kako sam objasnio u poglavljima 3.1 do 3.5). Da rezimiramo potrebne podatke:
- Adresa, korisničko ime i lozinka za pristup FTP serveru
Putanja do PHP-a vašeg reseller cPanel naloga- Adresa i port vašeg WHM servera
- Vaši WHM login podaci
Putanja do WHM Backup Solutions direktorijuma
Fajl “config.php” ima opisne komentare ispred svakog polja, a moja verzija je dodatno pojednostavljena jer ima upute ka poglavljima iz ovog vodiča, kao i većinu vrednosti postavljenih na najčešće korištene za FTP transfer na Hetzner Storage Box.
3.7. Kreiranje cron zadataka – automatizacija bekapa
Kratka digresija o cron poslovima – dok ne napišem opširniji članak na tu temu. Ako želite odmah videti primere cron poslova, kliknite ovde da biste preskočili objašnjenje.
Moj pametni telefon ima mogućnost da mu podesim alarm tako da svakog radnog dana (od ponedeljka do petka) u 15:30, zvoni alarm (koji me budi da ne zakasnim kući sa posla 🙂 ).
Kada ovako nešto napravite na Linuks operativnom sistemu, to se zove “cron zadatak” (eng. “cron job”).
- Šta radi cron posao? U suštini, šta god ga isprogramirate da radi.
- Kada se pokreće? U koje god vreme zakažete – svakih 10 minuta, svakog sata, svakog ponedeljka, 15. u mesecu u 13:21…
U ovom slučaju ćemo koristiti cron poslove da automatizujemo WHM Backup Solutions bekape. Ovaj softver traži dva cron zadatka:
- Cron 1 koji čita “config.php” (poglavlje 3.6) i govori šta sve treba da se bekapuje i gde (na osnovu podešavanja u “config.php” fajlu). Ovo bude gotovo za nekoliko sekundi.
- Cron 2 koji pravi bekap i uploaduje ga na zadatu lokaciju. Ako bekapujete veći nalog (preko 2 GB), ovo može potrajati i oko pola sata.
Objasniću kako ovo radi kroz primer:
- Recimo da smo podesili “config.php” da bekapuje sve cPanel naloge na FTP server.
- I recimo da imamo 12 cPanel naloga na svom reseller hosting nalogu.
- Kada se pokrene cron 1, on će reći WHM Backup Solutions programu: “OK, bekapuj ovih 12 cPanel naloga na taj i taj FTP server.”
- Nakon toga, kada se pokrene cron 2, on će bekapovati prvi cPanel nalog sa spiska, uploadovati ga na FTP i čekirati da je njega uradio. Ako želimo bekapovati i ostalih 11 naloga, cron 2 se mora izvršiti barem još 11 puta. Kada su svi nalozi bekapovani (čekirani), dodatno pokretanje cron 2 posla samo će konstatovati “nemam šta da radim, ćao.”
Zbog čega je ovo važno? Ako imate 50 naloga da bekapujete, i želite bekape svakog dana, morate zakazati cron 2 da se izvrši barem 50 puta u toku dana, tj. pre nego što se cron 1 ponovo pokrene, narednog dana. Dakle cron 2 ćete morati zakazati na svakih 30 minuta, svakog dana.
Pošto ovo sve radi na shared serveru, koji ima puno korisnika, često pokretanje cron poslova koji opterećuju server (kao što to rade backup poslovi) može usporiti rad servera. Zbog toga mnogi hosting provajderi uvode ograničenja broja cron poslova koje možete pokrenuti u danu, ili čak satu (kod HostMantis provajdera je dozvoljen samo jedan cron po satu).
Takođe, ako se cron posao pokrene, a server je prezauzet, on će biti stavljen na listu čekanja, da bi se izvršio čim server “uzmogne.” Tako da će prečesto zakazani cron poslovi praviti listu neizvršenih poslova, i poslednji zadati se neće izvršiti sve dok server ne izvrši sve prethodno zadate.
U ovom primeru, konfigurisaćemo cron 1 da se pokreće svakog ponedeljka, u ponoć i 6 minuta. Cron 2 ćemo zakazati da se pokreće svakog ponedeljka, na pun sat, od 01:06, do 23:06. Ovo je dovoljno za bekapovanje do 23 cPanel naloga. Ako bismo imali više naloga za bekap, morali bismo zakazati cron 2 da se pokreće i ponedeljkom i utorkom, na svaki sat, od 01:06 do 23:06.
Podaci potrebni za kreiranje cron poslova radi automatizovanja bekapa:
Adresa, korisničko ime i lozinka za pristup FTP serveru- Putanja do PHP-a vašeg reseller cPanel naloga
Adresa i port vašeg WHM serveraVaši WHM login podaci- Putanja do WHM Backup Solutions direktorijuma
Na osnovu ovih podataka, kreiraćete svoja dva cron posla.
Cron posao 1:
/php-putanja-vaseg-servera/ -q /putanja-whmbackupsolutions-direktorijuma/whmbackup.php generate
U ovom primeru:
/opt/cpanel/ea-php74/root/usr/bin/php -q /home/bikegremlin/whmbackupsolutions/whmbackup.php generate
Cron posao 2:
/php-putanja-vaseg-servera/ -q /putanja-whmbackupsolutions-direktorijuma/whmbackup.php
U ovom primeru:
/opt/cpanel/ea-php74/root/usr/bin/php -q /home/bikegremlin/whmbackupsolutions/whmbackup.php
Uradite copy/paste ovih cron poslova u tekst editor i izmenite ih da odgovaraju vašim putanjama.
To će vam trebati u nastavku.
Zakazivanje cron poslova se radi preko cPanel “Cron Jobs” alata.
Kada uđete u “Cron Jobs” meni, konfigurisaćete željene poslove.
Nakon unošenja cron posla i klika na “Add New Cron Job,” taj posao će se pojaviti na spisku kreiranih poslova:
Ako imate više od 23 cPanel naloga za bekap, možete staviti 1-3 u polju “Weekday,” pa će se cron 2 pokretati od ponedeljka do srede, na svakih sat vremena.
Je l’ bilo teško? Ima dosta koraka, zato sam sve i zapisao u uputstvu, ali mislim da nije ništa teško.
Kada se bekapi naprave, pokušajte restauraciju naloga iz bekapa, kako biste potvrdili da sve radi – po mogućnosti u staging okruženju, ne na produkcionom sajtu.
4. Rešavanje problema
Program WHM Backup Solutions pravi lepe log fajlove u “logs” pod-direktorijumu instalacije programa. Za razliku od njega, plaćeni WHM Easy Backup je puno manje pregledan i teže je iskopati logove (barem se ja nisam mogao snaći).
Izveštaji, ili problemi sa bekap poslovima će se nalaziti u bekap log fajlovima (2), dok će problemi sa podešavanjima u “config.php” biti prikazani u “system.log” fajlu.
5. Problemi sa SFTP konekcijom
Bez problema koristim SFTP za konekciju na Hetzner Storage Box preko FileZilla FTP klijenta. Međutim, nisam uspeo namestiti WHM Backup Solutions (ni WHM Easy Backup) da se konektuje preko SFTP-a. Primer izveštaja o grešci:
WHM Backup Solutions (https://whmbackup.solutions) - V1.5
2021-08-15-18:12 - (johnsmith) ERROR: The password that you provided is not correct,
or the SSH key is not permitted access:
ssh: connect to host u273500.your-storagebox.de
port 23: Network is unreachable at /usr/local/cpanel/Cpanel/API/Backup.pm line 182.
Ako imate rešenje, ili link ka boljem tutorijalu, iskoristite polje za komentare u dnu ove stranice da to podelite. 🙂
6. Zaključak
Svaki sistem će pre ili kasnije otkazati, ili biti hakovan (zbog čega će svaki sajt biti hakovan). Bekapi su jedan od načina da se šteta minimizira.
Automatizovani bekapi su dobra stvar zato što vam štede vreme i cimanje.
Važna napomena:
Nisam podesio skriptu za brisanje starih bekapa. WHM Backup Solutions i to omogućava. Međutim, ja redovno skidam bekape na HDD skladište (druga kopija) i premeštam ih iz direktorijuma koji vidi hosting server, u direktorijum koji vidim samo ja (FileZilla drag & drop objašnjen).
Na ovaj način se teram da redovno proveravam rade li automatizovane bekap procedure (pored svih logova i ostalog).
Ako to ne radite, podesite automatsko brisanje fajlova, inače će vam se skladište pretrpati.