Virtual hosts
Ata të cilët e kanë të instaluar WAMP-in, e dijnë se fajllat e një PHP aplikacioni ruhen në C:\wamp\www, të cilave u qasemi nga browseri me URL-në:
1 http://localhost
Nëse kemi më tepër se një projekt, atëherë mund të krijojmë direktoriume brenda atij www, të cilave u qasemi me:
1 http://locahost/projekti1
2
3 http://locahost/projekti2
4
5 http://locahost/projekti3
…
Natyrisht, në vend të “projekti1” mund të shënohet çfarëdo emërtimi i përshtatshëm për atë projekt, psh “onlineshop”.
Gjersa kjo zgjidhje është e lehtë për t’u kuptuar, ajo në vete përmban disa probleme. Problemi kryesor është çështja e linqeve absolute të shënuara brenda HTML/PHP fajllave të aplikacionit, të cilat mund të mos përputhen me strukturën në remote host.
Ta zëmë se faqja gjendet në www/projekti1 dhe duhet të linkohet me një CSS fajll që gjendet në /assets brenda direktoriumit projekti1.
1 <link href="/assets/style.css" rel="stylesheet" type="text/css">
Nëse në një faqe (psh index.php) e linkojmë CSS fajllin në këtë mënyrë dhe e testojmë në browser, do të shohim se faqja nuk do ta gjejë fare CSS fajllin. Kjo ndodh për shkak se shenja / nuk e tregon direktoriumin ku gjendet aplikacioni ynë, por i referohet direktorumit www, pra atje te www kërkohet /assets/style.css, por nuk gjendet atje. Shtegu i saktë është /projekti1/assets/style.css!
1 <link href="/projekti1/assets/style.css" rel="stylesheet" type="text/css">
Zgjidhja duket triviale: shtojmë /projekti1 para çdo linku absolut. Por kjo nuk është zgjidhje e mirë, sepse kur do të dëshirojmë ta sinkronizojmë sajtin tonë me remote host, do të kemi probleme me dead links, sepse atje ne i vendosim në
public_html
për qasje direkte të vizitorëve, pra jo
1 public_html/projekti1
Pra, nëse problemin e zgjidh në local host, më del problem në remote host. Në remote host do të funksiononte linku nëse do të shënohej si
1 /assets/style.css
ndërsa në atë lokal nëse shënohet si
1 /projekti1/assets/style.css
Na duhet që direktoriumi ku gjendet aplikacioni ynë të trajtohet si sajt në vete, e jo si direktorium i www.
Me këtë do të na lehtësohej puna gjatë zhvillimit dhe testimit të aplikacionit, sepse nuk do të hasnim në probleme siç u cek më sipër. Shumë më mirë është nëse aplikacionin e mbaj në ndonjë folder të veçantë dhe të mos ketë lidhje me www, sepse një fshirje aksidentale e www do t’i fshinte të gjithë folderët e projekteve të tjera që i kemi.
Për ta realizuar këtë “izolim” të folderit si sajt në vete dhe për ta thirrur nga një domain i veçantë fiktiv, duhet t’u kryejmë disa veprime, disa në kuadër të Windows e disa në kuadër të serverit Apache.
Shumë më bukur do të ishte sikur aplikacionin ta startonim me :
1 http://kursi.app
se sa me
1 http://localhost/kursi
Së pari ta caktojmë një “domain” për aplikacionin tonë.
Hapim me një edit teksti fajllin (si Administator):
1 C:\Windows\System32\drivers\etc\hosts
Në fund të fajllit shtojmë:
1 127.0.0.1 kursi.app
E ruajmë fajllin me “Save”. Nëse nuk kreni privilegje të Administratorit, nuk do të jeni në gjendje ta ruani fajllin me ndryshime.
Vërejtje: Duhet të keni parasysh se në vend të .app mund të përdorni çfarëdo “Top Level Domain” tjetër (.dev, .test, etj), por edhe .com, .net, etj. Preferohen këto fiktivet sepse nëse përdorim ndonjë TLD real, do ta bllokojmë qasjen te ai domain nëse vërtet ekziston. Psh. nëse në Web ekziston kursi.com, e ne e kemi zgjedhur pikërisht këtë në hosts, ne efektifisht e kemi bllokuar qasjen në sajtin e vërtetë kursi.com.
Me shtimin e rreshtit në hosts mundësuam që duke shënuar http://kursi.app në browser të hapet http://localhost
Kjo nuk mjafton, sepse neve na duhet përmbajtja e http://localhost/kursi
Tash duhet ta konfigurojmë Web serverin Apache, ku do të krijojmë një host virtual.
Fillimisht i qasemi fajllit httpd.conf në:
1 C:\wamp\bin\apache\apache2.4.9\conf
Në vend të numrit 2.4.9, mund të jetë ndonjë numër tjetër i versionit të Apache, varësisht cilin version e keni instaluar në sistemin tuaj.
Në fajallin httpd.conf e kërkojmë rreshtin me këtë përmbajtje (rreshti 512 në versionin e përdorur në këtë shembull):
1 # Virtual hosts
2 # Include conf/extra/httpd-vhosts.conf
Shenja # është shenjë e komentimit, që do të thotë se nëse një rreshti i paraprin kjo shenjë, ai rresht do të injorohet. Prandaj, ne e fshijmë shenjën #.
1 # Virtual hosts
2 Include conf/extra/httpd-vhosts.conf
Të njëjtin veprim mund ta realizojmë edhe nga WAMP, duke shkuar në menunë Apache - Apache modules dhe duke selektuar opsionin
1 vhost_alias_module
Në vazhdim, shkojmë në:
1 C:\wamp\bin\apache\apache2.4.9\conf\extra
dhe me një editor teksti, e hapim fajllin httpd-vhosts.conf.
Në fund të fajllit e shtojmë këtë kod:
1 <VirtualHost *:80>
2 ServerAdmin emailadresa@juaj.com
3 DocumentRoot "C:\wamp\www\kursi"
4 ServerName kursi.app
5 </VirtualHost>
Nëse e kemi konfiguruar WAMP-in ta përdorë ndonjë port tjetër, psh 8000, atëherë shënojmë:
1 <VirtualHost *:8000>
Te ServerAdmin e shënojmë email adresën e administratorit të serverit, në këtë rast emailin vetanak.
Në DocumentRoot e shënojmë direktoriumin ku e kemi vendosur aplikacionin.
Vërejtje: Nuk është e thënë që projektet tuaja t’i vendosni pikërisht brenda C:\wamp\www. Mund ta përdorni cilindo direktorium në sistem, mjafton ta vendosni shtegun (path) në DocumentRoot.
Në ServerName e shënojmë “domainin” që e kemi zgjedhur në C:WindowsSystem32\drivers\etc\hosts, në rastin konkret kursi.app.
Shkojmë në panelin e WAMP-it dhe zgjedhim “Restart All Services”.
Pas kësaj, kur në browser e hapim adresën *http://kursi.app, do të hapet përmbajtja e aplikacionit që gjendet në C:\wamp\www\kursi.
Për çdo folder/direktorium të ri që dëshirojmë t’i qasemi në këtë mënyrë, duhet ta përsërisim procedurën e njëjtë - duke e shtuar “domainin” në C:WindowsSystem32\drivers\etc\hosts, e pastaj duke e krijuar hostin virtual për atë “domain” në C:\wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhosts.conf.