Virtual hosts på samme apacheserver
Artikel
Hvad enten du har en dedikeret server eller kører en lamp/wamp installation, er det ofte ønskeligt at kunne arbejde med flere forskellige løsninger under samme installation.
Måske har du et par kunder der får udviklet wordpress løsninger, en kunde der får udarbejdet en løsning med Bootstrap og der kan komme flere til.
I det følgende vil jeg beskrive, hvordan du kan sætte det op.
Jeg kører selv min Apacheserver på debian. Jeg har desuden en MySql database server kørende og PhP installeret. Udgangspunktet er således, at du har det samme. Du kan naturligvis gøre det samme under Windows, på din Mac eller noget helt 3., hvis bare disse 2 servere er installeret. Vejledningen burde kunne anvendes på tværs af platform.
Nyt bibliotek og index.htm
Start med at oprette en ny mappe til dit site. På debian er det typisk under /var/www. På andre systemer kan det være en anden mappe. I princuippet er det ligegyldigt, hvor du placerer den, men det er nok en fordel, hvis du forsøger at samle dine sites samme sted.
Opret nu mappen /var/www/kunde1/html
Ideen er, at vores filer skal ligge i denne mappe.
Opret filen index.htm i mappen og giv den følgende indhold: <html> <body> <h1>Dette er Kunde1's site</h1> </body> </html>
Apache skal vide, at den skal hoste et nyt site og hvor det er placeret
Nu skal vi fortælle apacheserveren, at "der er kommet et nyt site i byen".
Kopier filen /etc/apache2/sites-available/000-default.conf til /etc/apache2/sites-available/kunde1.conf
Rediger filen, som bortset fra de udkommenterede linjer har følgende indhold:
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
<VirtualHost *:80> ServerAdmin webmaster@kunde1 ServerName kunde1 ServerAlias www.kunde1 DocumentRoot /var/www/kunde1/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
sudo a2ensite kunde1
Hosts
Du kan endnu ikke referere til sitet fra din browser. I princippet skal du tilgå din servers ip. Men denne adresse referere til flere websites, så du vil kun se standardsitet. For at kunne referere til de virtuelle sites, skal du tilfje sitet i filen hosts.
Min hosts fil ser således ud:
127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters 192.168.0.75 kunde1
Jeg har tilføjet linjen i bunden der peger på min servers ipadresse og giver navnet "kunde1". Har du flere sites på din server, vil de alle referere til samme ip, men de skal have forskellige navne. Hvis din server kører på samme PC, som du arbejder fra, angiver du bare 127.0.0.1.
Test
Nu skulle du gerne kunne åbne en browser og angive adressen :http://kunde1, hvorefter du skal kunne se, teksten, "Dette er Kunde1's site" skrevet med stor skrift.
Filrettigheder
Hvis du gerne vil installere wordpress på dit nye site, kan du kopiere alle filerne ind i mappen /var/www/kunde1/html, eller hvor du nu har placeret den.
Før det vil fungere, skal du rette rettighederne på biblioteket, alle underbiblioteker og filerne i disse.
På Debian gøres det med følgende 3 kommandoer:
chown www-data:www-data -R * # Apacheserveren bliver ejer find . -type d -exec chmod 755 {} \; # Ændre bibliotekernes rettigheder til rwxr-xr-x find . -type f -exec chmod 644 {} \; # Ændre filrettighederne til rw-r--r--
Når du har installeret WordPress kan du begrænse rettighederne:
chown <username>:<username> -R * # Sørg for at din bruger bliver generel ejer chown www-data:www-data wp-content # Lad apache blive ejer af wp-content