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.