XAMPP: Automatic - virtual hosts switch

XAMPP: Automatic - virtual hosts switch
Željko Klindžić WEBDEV  ( 2093 )
SLAVONSKI BROD - Datoteka hosts u Windowsu treba biti modicirana da bi se mogli na XAMPP koristiti virtual hosts. Time se omogučuje istovremeno više web domena na jednu IP adresu na jednom računalu. Trik: dodavanjem na Windows dvije DOS datoteke ( da, onaj stari DOS ...)  možete napraviti switch virtualnih hostova koji radi  na jedan klik > online, na dugi klik > offline.

Ako na primjer imate konfigurirano više virtual hostova morate u hosts datoteku upisati sve domene. Osobina IP adrese 127.0.0.1 je da je ta adresa upotrebljiva samo za local host. Ne zaboravite: domene koje upišete u hosts s IP 127.0.0.1 preusmjeravaju vaš browser na XAMPP localhost i budu blokirane ako želite s tom domenom na Internet (online). Probajte - stavite jednu adresu koju želite blokirati, recimo  slavonskibrod.net u hosts u Windows > System32 > drivers > etc > hosts ovako:

127.0.0.1 localhost
127.0.0.1 slavonskibrod.net
127.0.0.1 www.slavonskibrod.net

Nakon toga upotrijebite bilo koji browser i vidjeti ćete da ne možete doći do te domene dok ste na internetu (online). Dobivate samo praznu bjelinu ako je isključen Apache u XAMPPu jer browser bude preusmjeren na local i ako ne radi Apache prikaza već prazan screen.
Ovo je jednostavan trik kako spriječiti da sa vašeg računala nijednim browserom ne možete vidjeti pogled na tu domenu.

Vratimo se opet na hosts i XAMPP. Moj prijedlog je da sadržaje vaših projekata (obično ih ima više, što eksperimenata što važnih projekata) držite u šemi sadržaja D: > home > user_name > public_html  Pri tome treba u hosts upisati sve domene i adrese u D: > xampp > apache > conf > extra > httpd_vhosts.conf.

Kada dodajete nove projekte, editirate i novu šemu sadržaja D: > home > new_user_name > public_html  editirate na Apache httpd_vhosts.conf i dodate novi virtual host. Tada morate u hosts datoteci dodati i jedan red s web adresom (domenom) projekta. Dakle morate u listu domena u hosts  zapisati web domenu a kasnije obristi to u liniji u hosts, pa poslije opet upisati domenu itd - naporno, zar ne?

Dakle ako radite na projektu lokalno na XAMPP-u najbolje je da imate istu shemu direktorija i na lokalnom hostu i gore na online serveru, pri tome dodajete u hosts red  127.0.0.1 ime_domene  Pri tome  više ne možete vidjeti browserom sadržaj gore na online verziji. Ako ste online i istovremeno vam radi XAMPP, vaš browser vidi i online "ostatak" koji nemate IZVAN vaše domene, na primjer YouTube filmić, ili fonts sa Google-a i slično. Zato je dobro da u radu imate mogućnost, privremeno povezivanje local sa online. Dakle možete  kombinirati OFFLINE iz XAMPP sadržaja (local) i ONLINE detalje koji nisu na XAMPP vidljive na primjer na YouTube ili fonts, t.j na Internetu.

Ponekad treba blokirati local, dakle zatvoriti XAMPP, da bi vidjeli kako stvarno radi vaš web projekt tamo gore na Intenetu. Onda nije dovoljno  ugasiti XAMPP, već morate obrisati i red (domenu) zapisan u hosts datoteci. Pa kasnije da vam u lokalu u vašem projekttu proradi XAMPP opet morate editirati hosts i dopisati ponovo istu domenu. Stvarno zamorno, zar ne ... ?

Evo kako se to može automatizirati: klik - online, klik - offline.

hosts datoteka nema ekstenzije i sve što je u etc Windows mapi nije za lagano editiranje. Morate biti administrator, morate promjeniti UAC (dozvoliti full pristup preko Interneta) i zatim postaviti hosts i sadržaje unutar etc na read-write. Nekad pri instalaciji XAMPa treba editirati (dopuniti) i za Windows usera sve permisije (dopuštenja). Ovim se sadržaj etc mape oslobađa, pa možete unutar tog direktorije (foldera, mape) činiti što god hoćete.

Evo kako se igre oko hosts datoteke mogu automatizirati:

- Treba u etc kreirati datoteku hosts_all.txt  i hosts_orig.txt.
- U hosts_orig.txt upisati samo jedan red: 127.0.0.1 localhost
- U hosts_all.txt upišite sve domene koje su ili će biti kasnije u hosts, na primjer:

127.0.0.1 localhost
127.0.0.1 portal1.com
127.0.0.1 www.portal1.com
127.0.0.1 plavi-blog.net
127.0.0.1 www.plavi-blog.net
....

Recimo da su portal1 i plavi-blog stvani, živi na online serveru projekt.  Formirajte listu domena u hosts_all.txt a zatim kreirajte i dvije DOS datoteke kako slijedi (stari DOS i mladi WIN 10, ma ide i to  zajedno ).

Kreirajte DOS batch datoteka (to je samo jedan redak u *.BAT datotekama):
OFFLINE.BAT
   COPY   hosts_all.txt   hosts

ONLINE.BAT
  COPY   hosts_orig.txt   hosts

Zatim kreirajte shortcut na sve datoteke - hostshosts_all.txthosts_orig.txtOFFLINE.BAT  i  ONLINE.BAT i kopirajte sve shortcute u mapu na desktopu "WEBDEV". Ovim ne morate brljati svaki put po etc mapi, samo kliknete i vidite sadržaj (stanje) hosts ako provjeravate i samo po potrebi klikom na *.txt datoteke možete ih običnim NotePad-om editirati.  Datoteke  *.BAT  (sthortcuts) su preklopnik, switch - online/offline.  Ovim možete preusmjeravati vaš browser na "prolaz" do online sadržaja ili na offline a zatim aktivirati Apache u lokalu.

Još neki praktični trikovi i savjeti

Predlažem vam da radi sigurnosti nabavite prekidač u UTP kabelu ili mali HUB s on/off prekidačem. Tako možete danima (ili noćima) raditi neometano u lokalu ako vam ne treba online veza a tek kad vam to treba spajate se na Internet. Što ste manje vremena online sigurniji ste od hakerskih napada, virusa i slićno a pri radu i razvoju obično koristite lokalne operacije, dakle XAMPP. Kada vam ne treba online veza prekinite vezu s Internetom, biti ćete mirniji, hakeri su u zadnjih dvije godine  a i prije neumorni, ne hranite ih.

Trik s "krivim" domenama: Ako imate reseller account s deseak ili više domena na vašem online serveru, dakle jedna IP adresa a više živih domena, možete podesiti svoj lokalni XAMPP,  hosts i Apache virtual hosts  i bez navedene switch metode. Ovo možete raditi i ovako:

Pri konfirguraciji editiratjte u hosts_all.txt i upište "krive" domene na pr. umjesto 127.0.0.1 portal1.hr stavite 127.0.0.1 portal1.tst zatim editirajte virtual_hosts u Apache > config > extra ... te "krive" domene *.tst  Nakon toga resetirati hosts i restartati XAMPP.
Dobili ste mogućnot paralelnog pregleda  stvarne online verzije domene projekta i lokalne verzije projekta istovremeno. Browserom na jednom ekranu gledate npr. http://portal1.hr a na drugom http://portal1.tst pa možete isporediti rad u online izdanju s onim u local izdanju.

Domena *.tst ne postoji. Pri ovom načinu razvijate i koristite strogo samo sadržaj u public_htm  (document root). Tako radi na primjer WordPress - ništa od sadržaja nije ispod public_html (document_root). Kod prijenosa sadržaja  online (1) < --- >  local (2)  prenosite samo dio iznad document_roota.

Ovim omogućujete da na jednom ekranu browsera gledate 2 živa ekrana. Online verziju sa hosting accounta (portal1.hr)  a na drugom ekranu local verziju sa XAMPPa (portal1.tst). Na trećem ekranu vam je cPanel na portal1.hr, a na četvrtom FTP i editor u lokalu (portal1.tst), obadva servera rade i prikazuju žive verzije. Tako možete editirati u lokaku (preporučam NotePad++) dio sadržaja na XAMPPu i testirati rad da ne bude grešaka. Uvjetite se da nema problema a zatim prenesite FTP-om promjene na online verziju portal1.hr.  Ovaj način rada traži dosta pažnje ali time se radi elegantno ako se ispravno koristi PHP, HTML, CSS, JS - sve mora biti u public_html (document_root).

PHP: treba staviti u sadržaj projekta jednostavni test - stavite u public_html datoteku phpinfo.php u kojoj je samo jedan red:  phpinfo(); 

Tako vidite sve parametre i postavke servera komplet. Kod nove instalacije treba na lokalni server u php.ini postaviti veću vrijednost vremena izvršenja i max veličinu POST operacije slobodno na 200 - 500 Mb. Ove vrijednosti važe samo za lokalni XAMPP server, vrijednosti na online serverima gdje imate hosting možete provjeriti na isti način, pomoću phpinfo.php (ali ga skinite poslije, da ne hranite hakere...).

MySQL (MariaDB): preporuka - koristite baze i tabele s "utf8mb4-general-ci" collation

Dodatak: https: umjesto http:  i SSL  (port 443), vidi u nastavku ...

Nadam se da je nekome ovo bilo korisno,
lijep pozdrav iz Slavonije

Željko Klindžić, dipl.inž.el.