Inställningar - rotmapp för apache (lokalt)

Tråden skapades och har fått 5 svar. Det senaste inlägget skrevs .
1

Utvecklar mina projekt lokalt innan jag lägger ut dem på nätet. Har en liten fundering ang. min apache-server som jag kör på OSX.

Ofta inkluderar jag menyer och dyl. m h a php. Mitt problem uppstår när jag försöker länka till rotmappen. T ex: /mapp/foo.html. Min lokala server skriver ut länken som relativ till den mappen man är i. Jag kommer alltså inte till roten med mitt problem

På mitt webbhotell funkar detta perfekt. Vilken fil i apache skall jag ändra och vart ligger den?

Kan jag även ändra så att jag inte behöver avsluta min lokala url med "/" ex. http://localhost/~joel/mapp/

Tack på förhand

  • Oregistrerad
  • 2004-10-22 15:49

Starta Terminal och gör på följande sätt för att ändra Apaches root:

1. Skriv sudo pico /etc/httpd/httpd.conf
2. Ange ditt lösenord
3. CTRL + W i pico för att söka, skriv in DocumentRoot avsluta med ENTER
4. Sätt ett "#" före DocumentRoot "/Library/WebServer/Documents"
5. Lägg till en ny rad under som lyder DocumentRoot "/Users/joel/Sites"
6. CTRL + O och sedan ENTER för att spara, sedan CTRL + X för att avsluta pico.
7. Väl tillbaka i terminalen skriver du sudo apachectl graceful för att starta om Apache.

Nu pekar Apaches root-mapp till din egen hem-mapp. Eftersom du har kommenterat ut originalinställningen är det enkelt att ändra tillbaka om du vill det.

Tack för snabbt svar

Nu är det ju så att jag har flera olika sidor i min "Sites". När jag i en inkluderad meny klickar på länken <a href="/">Till min sidas root-mapp</a> för att komma till webbroten så kommer jag till http://localhost/ istället. Eftersom jag på mitt webbhotell inte kan komma längre bak än public_html så funkar det där men inte lokalt.

Det jag skulle vilja säga åt apache är att "varje hemsidesmapp som ligger i mappen sites är sin egen rotmapp"

Innan jag testade jhansen's terminal-fix ville jag bara kolla om detta blir resultatet. Lite svårt att förklara vad jag menar men jag hoppas att ni förstår.

Kan man styra sånt här med en .htaccess-fil specifikt för varje projekt (rotmapp)?

Eftersom det bara är för testsyften lokalt på din dator så skulle jag nog köra med namnbaserade VirtualHosts i stället. På så sätt kan du skapa flera "virtuella webbservrar", var och en med sin egen rotkatalog. Det är även möjligt att ha olika konfigurationer för de virtuella servrarna (t.ex. olika loggfiler), så det är helt suveränt för webbutveckling. Börja med att redigera /etc/hosts och lägg till något i stil med detta:

127.0.0.1    app1
127.0.0.1    app2

Det som händer då är att adressen "http://app1/" kommer att leda till loopbackadressen. Lägg sedan till det här i Apache-konfigurationen:

NameVirtualHost 130.239.57.31:80
Listen 130.239.57.31:80 

<VirtualHost 127.0.0.1:80>
  ServerName app1
  DocumentRoot "/Users/joel/Sites/app1"
</VirtualHost>

<VirtualHost 127.0.0.1:80>
  ServerName app2
  DocumentRoot "/Users/joel/Sites/app2"
</VirtualHost>

Det här exemplet har jag iofs skrivit fritt ur huvudet så jag kan eventuellt ha missat något, men fungerar konfigurationen som den ska så kommer "http://app2/" att vara likvärdigt med "http://localhost/~joel/app2/", och motsvarande med "http://app1/".

Ursprungligen av Samuel K:

Eftersom det bara är för testsyften lokalt på din dator så skulle jag nog köra med namnbaserade VirtualHosts i stället. På så sätt kan du skapa flera "virtuella webbservrar", var och en med sin egen rotkatalog. Det är även möjligt att ha olika konfigurationer för de virtuella servrarna (t.ex. olika loggfiler), så det är helt suveränt för webbutveckling. Börja med att redigera /etc/hosts och lägg till något i stil med detta:

127.0.0.1    app1
127.0.0.1    app2

Hur hittar jag /etc/hosts ?
Är det terminalen som gäller? Är inte så hemma i denna

Ursprungligen av Samuel K:

Det som händer då är att adressen "http://app1/" kommer att leda till loopbackadressen. Lägg sedan till det här i Apache-konfigurationen:

NameVirtualHost 130.239.57.31:80
Listen 130.239.57.31:80 

<VirtualHost 127.0.0.1:80>
  ServerName app1
  DocumentRoot "/Users/joel/Sites/app1"
</VirtualHost>

<VirtualHost 127.0.0.1:80>
  ServerName app2
  DocumentRoot "/Users/joel/Sites/app2"
</VirtualHost>

Det här exemplet har jag iofs skrivit fritt ur huvudet så jag kan eventuellt ha missat något, men fungerar konfigurationen som den ska så kommer "http://app2/" att vara likvärdigt med "http://localhost/~joel/app2/", och motsvarande med "http://app1/".

Detta verkar ju vara supersmidigt... Då lägger jag bara till lika många rotmappar som jag har projekt eller?
Vart ändrar jag Apache-konfigurationen?

Tack på förhand

Ursprungligen av joel_sundkvist:

Hur hittar jag /etc/hosts ?
Är det terminalen som gäller? Är inte så hemma i denna

Japp, det är klart smidigast att lösa det hela via terminalen. Du _kan_ iofs öppna /etc via "gå till mapp" i finder, men ska du fixa och dona med apache blir det många och långa omvägar om du ska lösa allt via gui:t. Jag skulle föreslå att du ägnar en timme åt att lära dig grunderna i kommandoradsgränssnittet, du har igen det i längden.

Citat:

Detta verkar ju vara supersmidigt... Då lägger jag bara till lika många rotmappar som jag har projekt eller?
Vart ändrar jag Apache-konfigurationen?

Tack på förhand

Det låter som en bra idé - du kan ju ha precis hur många rotmappar du vill med vhosts, så en vhost per projekt brukar vara vettigt. Så brukar jag iaf själv göra, och det är väldigt smidigt. Apache-konfigurationen huserar i /etc/httpd/httpd.conf, och gör gärna en backup på filen innan du börjar redigera. Efter redigeringen brukar det vara en bra idé att köra "apachectl configtest", så kan du upptäcka eventuella fel *innan* du startar om apache.

1
Bevaka tråden