www.Deserveit.se >

Användbarhet, usability

Tillbaka till artiklar

Innehållsförteckning

Det behöver inte vara svårt

Det vi gör är enkelt

När man ska lära sig något nytt - som man egentligen inte brinner för så faller ofta motivationen och prioriteten vilket gör att man jobbar med något roligare. Men nu har vi för tredje gången (eller var det tolfte?) bestämt oss för att nu är det dags att köra vhost på varje enskilt projekt vi arbetar med... Efter ca en timme av googlande, testande och felsökande fungerade det som tänkt, och nu ska vi berätta hur man gör.

Men man kan göra avancerade saker

Det går dock att krångla till det. Virtual Host är ett mycket mångsidigt och kraftfullt verktyg som man kan göra mycket mer (långt mer än vad vi känner till), men i denna artikel vi ska bara skrapa lite lätt med nageln på ytan.

Systemkrav och förutsättningar

Vi förutsätter att du har Apache som webbserver och att den är installerade på en Windowsmaskin (helst XP). Om du har följt vår artikel om hur man installerar webbserver så har vi gjort det extra lätt för oss!

Vad är Virtual host?

Virtual host är en teknik som enligt Apaches egna beskrivning är till för att hantera flera servrar (separerade genom namn) på samma dator.

Vi ska använda det för att ge alla våra webbkataloger (alla olika projekt vi arbetar och har arbetat med) en egen lokal domän och webbrot på vår serverdator.

När behöver man Virtual host då?

Något som har retat oss då och då under alla år av webbutveckling är att det är svårt att ha samma lokal url för en länk på den publika webbsidan som man har lokalt på utvecklingsdatorn (den dator som är på kontoret vilket är en helt annan än den du besöker nu).

En länk på någon av deserveits sidor som ser ut såhär skulle leda till två helt olika platser på utvecklingsdatorn och webbhotellet om vi inte använder virtual hosts, se här:

<a href="\artikel\ämne\artikelns namn">Gå till artikeln</a>




Om vi tar deserveit.se som exempel:

På nätet har webbplatsen som bekant adressen http://www.deserveit.se och lokalt finns den på följande url: localhost/www/dit/.

På webbhotellet ligger sidan i sin egna rotkatalog och lokalt är rotkatalogen www - så där ligger webbplatsen en nivå ned i kataloghierarkin.

Så ovanstående länk skulle leda oss till dessa två adresser:

På webbhotellet: http://www.deserveit.se/artikel/ämne/artikelns namn

Lokalt: http://localhost/artikel/ämne/artikelns namn

Som vi ser på den sista länken här så tappar vi "/dit" i hierarkin. Vi befinner oss inte längre i denna webbplatsens katalog utan vi faller ut i roten och sidan som länken hänvisar till finns inte.

Detta går att gå runt på olika sätt mha kod, men ingen lösning är lika fin som att använda en virtual host för www/dit/ - läs vidare så ser du.

Hur fungerar Virtal host?

Vi håller oss till det som krävs för dokumentrot

Virtual host i sin helhet är för stort ämne för denna artikel, så vi håller oss inom ramarna för det som behövs för att sätta en lokal dokumentrot för varje projekt.

Inställningar i Apache

I Apaches inställningar berättar vi vilka virtual hosts vi vill ha och vilken dokumentrot respektive projekt ska ha.

Nu ska vi visa exakt hur två Virtual hosts ser ut som vi använder lokalt.

NameVirtualHost *


	DocumentRoot C:\www\dit
	ServerName dit.local



	DocumentRoot C:\www\membermap
	ServerName membermap.local



Nedan ska vi berätta vad det är vi ser.

Kommandon och nyckelord (direktiv)

NameVirtualHost

Detta direktiv måste användas om man använder namnbaserade virtual hosts. De är namnbaserade eftersom du ser ServerName som direktiv inuti VirtualHost-taggarna.

NameVirtualHost tar emot den IP-adress som våra VirtualHosts ska nås ifrån. För att göra det enkelt för oss skriver vi bara en stjärna där (vilket går att göra i Apache 1.3.13 och nyare) så slipper vi några potentiella problem.

NameVirtualHost skriver man bara en gång (precis innan sin(a) Virtual host) och har normalt samma värde som man skriver efter VirtualHost i dess starttagg. I vårt fall ser man en stjärna i båda.

VirtualHost


 ...


En VirtalHost-tagg behövs för varje enskild virtual host man vill skapa. Förslagsvis talar vi om en per webbplats i arbetskatalogen.

Taggen skrivs som vi ser ovan med nyckelordet VirtalHost innanför "HTML-pilar" och med en stjärna eller ip-adress efter nyckelordet i starttaggen. Läs mer under NameVirtualHost om vad som ska skrivas där.

I exemplet skapar vi två virtual hosts.

DocumentRoot

DocumentRoot C:\www\dit
DocumentRoot känner vi igen sedan vi installerade Apache, då det är en inställning som görs vi gjorde i httpd.conf. Denna definierar var vår webbrot ("/www") finns någonstans. Denna blir aktuell nu på nytt eftersom det är just webbroten vi nu vill ställa in för respektive webbplats vi arbetar med.

DocumentRoot ställs alltså in till den katalogen som vår virtual host ska leda till. OBS om sökvägen till denna katalog innehåller mellanslag så skall sökvägen omges av citattecken.

Alltså:

DocumentRoot C:\www\membermap
DocumentRoot "C:\mina webbplatser\membermap"

ServerName

ServerName dit.local
ServerName används för att specificera den "domän" eller URL som vi från och med nu ska nå vår virtual host från. Denna döper vi egentligen precis hur vi vill, för namnet finns bara på vår egna dator och den kan heta "aftonbladet.se" lika gärna som "stenskott.opel.com". Däremot finns det smarta och mindre smarta sätt att döpa den på.

För det första är det förnuftigt att ge webbplatsen samma namn (förutom toppdomänen) som du har på din publika webbplats. I vårt fall kallar vi deserveit för dit lokalt bara för att vi är lata, men den kunde lika gärna heta deserveit.

Något som är extremt viktigt är att inte ha exakt samma namn (inkl toppdomän) som man har på sin publika webbplats för då kommer du inte kunna besöka din publika webbplats längre. Det kommer bli en namnkonflikt.

Vi föredrar att som toppdomän ha "local" istället för "com/se/org/whatever" för att ha ordning och reda bland adresserna.

När man har gjort detta är man nästan klar. Det som återstår är att förklara för ens dator att "dit.local" faktiskt ska leda till den lokala webbservern och inte till något annat konstigt. Datorn kan tyvärr inte gissa vart vi ska surfa. Men detta är lätt att ställa in och vi kommer dit sist i guiden.

Då kör vi igång

Nu kommer vi forma artikeln som om att vi antar att du vill skapa samma två virtual hosts som vi själva använder, alltså dit.local och membermap.local. Du får själv anpassa dina virtual hosts efter dina egna behov, båda i antal och i namngivning.

Apacheinställningar

Ta fram httpd.conf som i vårt fall finns här:
C:\Program\Apache\Apache2.2\conf\httpd.conf

Blädda förbi allt innehåll i filen och skapa en ny rad på slutet.

Skriv där:

NameVirtualHost *


	DocumentRoot C:\www\dit
	ServerName dit.local



	DocumentRoot C:\www\membermap
	ServerName membermap.local



Observera att NameVirtualHost och VirtualHost har identiskt värde, oavsett om du anger en ipadress (localhost är att föredra i så fall, 127.0.0.1) eller om du tillåter vad som helst.

Detta är allt du behöver göra i httpd.conf. Du kan spara och stänga om du vill (fast vi förerar att minimera till dess att vi bekräftat att allt stämmer).

Glöm inte att starta om din webbserver efter alla ändringar i httpd.conf - så passa på att starta om den nu direkt medan vi ändå håller på.

Hosts i Windows

Det finns en fil i Windows (förhoppningsvis i alla versioner) vid namn hosts som du kan använda för att skapa "namn" i din dator som hänvisas till specifika ip-adresser. I denna fil kan du berätta att t.ex. dit.local ska hänvisas till 127.0.0.1 (localhost) om det nu är där du har din webbserver.

Detta ska alltså inte nödvändigtvis ställas in på serverdatorn - utan på den dator som du besöker sidan ifrån. Du som läser detta kanske har din webbserver på samma dator som du arbetar ifrån - då är det localhost som gäller, men vi själva har vår webbserver på en annan dator, så vi hänvisar inga namn till localhost, utan till ip-adressen för serverdatorn.

I Windows XP hittar man hostfilen här:

C:\Windows\system32\drivers\etc\hosts
Filen heter bara hosts och har ingen filändelse.

Om du inte hittar filen, sök i din Windowskatalog efter filer med host i namnet.

Öppna denna fil i valfri texteditor för att kunna läsa och ändra innehållet.

I vår svenska version av Windows så inleds filen med dessa tre rader:
# Copyright (c) 1993-1999 Microsoft Corp.
#
# Det här är HOSTS-exempelfilen som används av Microsoft TCP/IP för Windows.


På engelska ser det ut såhär:
# Copyright (c) 1993-1999 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.


Om det stämmer så vet vi att du har hittat rätt fil.
Alla rader som inleds med en fyrkant (#) är kommentarer och har ingen som helst effekt på någonting.

Högst troligt är din fil tom förutom kommentarer - men om det finns något där så är det bara att låta det vara och skriva dit våra nya "hosts" i slutet av filen.

Vi skapar två nya rader i slutet av hosts som ser ut enligt följande:

192.168.2.22	dit.local
192.168.2.22	membermap.local


IP-adressen till vänster är alltså till vår serverdator. Om du har din webbserver på samma dator som du besöker den ifrån så ska det istället se ut såhär hos dig:

127.0.0.1	dit.local
127.0.0.1	membermap.local


När du har skrivit in en namnhänvisning för var och en av dina virtual hosts så sparar du och stänger filen.

That should be all!

Nu när detta är gjort ska dina virtual hosts fungera! Testa direkt att surfa till http://dit.local/ eller den virtual host du nu valde att skapa.

Värt att nämna är att dessa inställningar vissa konsekvenser på ditt gamla användande...

Du kan t.ex. inte längre surfa till din gamla webbrot.
Innan denna inställning kunde vi t.ex. surfa till http://fyggler/ (fyggler är namnet på serverdatorn) men denna leder nu inte längre till C:/www/ som den gjorde förr, utan nu leder den in i www/dit/ istället.

Detta är ofta inte något problem längre eftersom man med glädje lämnar ursprungsmetoden, men om man ändå måste ha den tillgänglig så finns det ett barnsligt enkelt knep.

Skapa en VirtualHost som har servername localhost.


   DocumentRoot C:\www
   ServerName localhost



Du skapar alltså ett namn som "råkar heta" localhost som leder oss till webbroten. Vi använder både localhost på det sättet samt att vi skapat en kopia som reagerar på namnet "root.local" likväl som localhost.

Kom ihåg att lägga in denna/dessa i din hosts-fil också - precis som du gjorde med dina tidigare virtual hosts.

Det var allt för den här gången. Hoppas det fungerar bra för dig! Mycket nöje!
Gå till toppen

Skrivet och publicerat av: Tobias Wetterskog
Datum: 070408
Senast ändrad: 090415