Već četvrti čovek me je u roku od 5 dana putem Facebooka pitao kako sam to uradio to magično optimizovanje baze na odličnom Linux blogu LINog.info a Linux drugar Ivan Blagojević me je ishvalio na par mesta toliko da mi je prosto neprijatno (kako nam dobro ide) jer nisam ko-zna-šta bitno i komplikovano uradio.

Kako je optimizovana baza na WordPress sajtu LINog.infoBlog je imao problem da je bio zatrovan, kako sam kasnije video na njemu je bilo instalirano i deinstalirano podosta pluginova i tema, pretpostavljam dok je bio u razvojnoj fazi – te je svakakvo smeće ostalo u bazi koje je trebalo na DBA način i uz završen fakultet očistititi…

….a ustvari sam uradio posao koji može bukvalno svako da odradi i ne traži nikakvo specijalno znanje, obrazovanje, ludilo i završava se za 20 minuta uz kafu. Evo opisaću ukratko kako, da ne bih svakome ko me pita ponaosob objašnjavao, možda će nekome koristiti a videćete da nije neka mudrost svemira.

Upozorenje za prekaljene WordPress MySQL DBA gurue koji bi za ovo uzeli 200€: Kolutaćete očima, najbolje preskočite tekst jer ćete se smejati. Ne znam da li je ovo što je rađeno po pravilu službe kako treba i DBA pravilima, ali jebiga, šta ću, s obzirom da završava posao i ne ište mnogo vremena, dobro je. Za znanje ne garantujem.

Dakle, trebalo je pročistiti sve i nekako krenuti od novog početka kad je LINog.info u pitanju….očistiti smeće, nekako ubrzati stvari.

Pravljenje testnog okruženja za igranje

Da se ne bi igrali na produkcionom okruženju sa ovim optimizacijama i čudima i tako doveli produkcioni sajt u opasnost da ude u tri lepe, kroz Cpanel sam napravio poddomen v2.linog.info koji je bio klon originanog sajta a koji je bio namenjen tom igranju.

Eksport produkcione baze, CTRL+H u nekom text editoru, reimenovao sam linog.info u v2.linog.info, napravio novu bazu i uradio import te link-reimenovane baze u nju pa se ulogovao i potvrdio permalinkove kroz sam WordPress.

Plugin – Optimize Database after Deleting Revisions

Sajt je imao oko 300 tekstova a baza je bila velika oko 50MB…..zašto?
Kad god pišete tekst u WordPress-u, po defaultu (sem ako vi ne izmenite podešavanja na nivou wp-config fajla) kreiraju se revizije unosa kojih može biti trilion po tekstu.

Plus kao smeće ostaju postovi koje ste obrisali (nalaze se u Trashu i dalje su u bazi), spam i obrisani komentari, i svašta još ponešto.

U bazi je sem ovoga bilo i podosta tabela koje se nisu koristile ali ih je neki plugin ili tema ostavila da umru u samoći. Tako je i bilo, kroz phpMyAdmin sam ih dropovao.

Instalirao sam ovaj plugin, pustio skeniranje, obrisao čini mi se 45MB viška. Baza smršala 🙂

Posle toga ovaj plugin sam obrisao.

Uninstall svih pluginova i tema

Sve pluginove i teme koje su bile instalirane – sam obrisao. Od tema ostavio sam samo onu defaultnu WordPress-ovu. Zašto? Sledeći korak daje odgovor na to pitanje…

Plugin – Options Optimizer

Nakon brisanja svih tema i pluginova instalirao sam ovaj plugin i obrisao sve unose iz wp_options tabele koje mi je ovaj plugin ponudio.
Zašto ovo nisam radio kroz phpMyAdmin, brže je, samo jedan SQL upit i ćao? Probajte to vi i samo će vam kasti (samo napravite prvo bekap baze).

Kad sam obrisao sve unose iz options tabele, deinstalirao sam ovaj dodatak.

Bekap svega

Produkciono i test okruženje, baza, fajlovi – rezervna kopija, čuvanje lokalno i unutar Cpanela u nekom folderu na root lokaciji (sa permisijama 700 nad folderom). Bekap testnog okruženja sam uradio samo da ne bih ostavljao smeće na serveru a možda ljudima iz projekta LINog nekad zatreba za nešto.

Migracija testnog okruženja na produkciono

Baza na testnom okruženju je eksportovana, prostim CTRL+H je v2.linog.info reimenovan u linog.info, pa vraćen u testno okruženje, koje će sad biti produkciono. Fajlovi sa testnog okruženja su kompresovani, prebačeni na produkciono okruženje – produkcioni fajlovi su obrisani a testni raspakovani kako bi ih zamenili. Down je trajao oko pola minute. Posle migracije sam se ulogovao ponovo i potvrdio podešavanja u permalinkovima zbog one CTRL+H promene linkova u bazi.

Time je posao bio završen. Sve ukupno – oko 20 minuta posla.

Posle ovoga je ostalo ljudima iza LINog tima da postave temu koju žele, pluginove koje će koristiti (ovo sam mogao i ja da uradim doduše) i nastave sa radom. U principu, ove pluginove nisam morao da brišem, ali bih onda u options tabeli morao da gledam liniju po liniju, tražim da li data linija pripada pluginu koji se koristi i tako to (tako radim preventivno s vremena na vreme na kompjuteras.com jer je smeće iz options odavno obrisano) ali sam to batalio jer mi je Ivan iz LINoga rekao ba baš želi da krene od nule – ali da tekstovi ostanu netaknuti.

LINog timu je još ostalo samo da na nekim matorim tekstovima ispegla neke shortcodove ostale od ko zna kad i ko zna koje teme ili plugina (ovaj problem je postojao i pre ove akcije).

Šta bi još trebalo uraditi da bi ovo bilo kako valja?

Da bi optimizacija bila prava trebalo bi (taj deo nisam radio, ostavio sam LINOG timu da se poigra time) srediti podešavanja u fajlu wp-config.php, srediti broj revizija, dati apsolutne putanje do teme koja se koristi kako bi se smanjio load i svašta još nešto.

Dalje, obrisao bih sve fotografije koje se ne koriste – a ima ih obično milijardu po sajtovima (praksa je pokazala da ljude boli ovu za ovaj korak). Nije ovo neko opterećenje za sajt, ali volim da stanje bude apsolutno čisto. To čišćenje možete raditi direkno iz WordPress-a (imate tamo da izaberete iz padajućeg menija u biblioteci – NEPRIDRUŽENO) a možete i pomoću nekog plugina, recimo ovog: Cleanup Images

Keširanje – ima podosta odličnih pluginova koje se bave ovim, ne bih da davim, ali ono što ja volim jeste da postavim keširanje na nivou htaccess fajla (to proguglaje malo) što zaista nije dovoljno (ne radi se keširanje upita nad bazom, js kompresija i slično) ali meni završava posao, recimo, blog kompjuteras.com ne koristi nikakav plugin za keširanje a ima srednju posećenost (oko 1500 pregleda stranica dnevno).

Brisanje nepotrebnih fajlova i foldera – ima nekih pluginova koje prave lokalni keš koji je koristan – dok je plugin aktiviran, kad ga obrišete ne trebaju vam ni ti fajlovi i folderi. Obično se ti folderi zovu po pluginu i neki dodatak, tipa bps-cache ili tako nešto. Ovi fajlovi ne utičnu nešto na brzinu sajta, ali – kao što rekoh ranije, ne volim da vidim smeće.

BruteForce zaštita – s vremena na vreme vam se nakače svakakvi Ukrajinci/Turci/Albanci i puste nausmišno pogađanje korisničkog imena i lozinke na lokaciji /wp-admin što optereti server do linije pucanja sajta. Prvo treba sakriti tu default putanju kako biste ih u startu smorili i naravno ne koristiti glupave lozinke i korisnička imena tipa admin a bogami i postaviti zaključavanje takvih korisnika i zahteva. To sve radi besplatan plugin koji koristim već duže vremena All In One WP Security & Firewall. Ima i drugih pluginova, svi hvale ovaj iThemes ali šta znam ja, meni ovaj završava posao oko mnogo stvari od cikličnog bekapa baze i slanja iste na mail pa do zaštite kritičnih fajlova tako da je ne menjam do daljnjeg.