4.2 Apache installeren
In deze les gaan we Apache installeren, gaan we onze hosts file op windows aanpassen en gaan we leren wat een virtual host is.
Package manager
Een package manager is een tool die ervoor zorgt dat je software kunt installeren en weer kunt verwijderen. Je zou het een installer kunnen noemen. Als je onder Linux software installeert dan zijn er zogenaamde depedencies (afhankelijkheden). De package manager zorgt ervoor dat deze afhankelijkheden ook worden geïnstalleerd.
Elke Linux distributie heeft zijn eigen package manager. Ubunu gebruikt apt
De meest gebruikte commando's
apt list | laat alle geinstalleerde packages zien |
sudo apt update | update lijst met packages |
sudo apt upgrade | upgrade alle packages (dit moet je regelmatig draaien) |
sudo apt install nano | installeer het package nano (dit is een 'eenvoudige'editor) |
sudo apt remove nano | verwijderd de package nano |
Installatie van Apache
We gaan nu Apache installeren op onze Linux server.
sudo apt update
sudo apt install apache2
Weet je nog wat je ipnummer van de Ubunt server is? Controleer dat anders nog een keer met ifconfig
Ga naar de browser en typ het ipnummer in - als het goed is, zie je de standaard Apache2 pagina.
Opdracht
Zoek zelf op internet op hoe je de Apache webserver op Ubuntu stop en start. Controleer of het werkt en schrijf deze commando's op.
Host file - windows
Een ipnummer intikken is niet zo handig en moeilijk te onthouden. We zouden een domain moeten registreren en het ipnummer daar aan koppelen, maar dat gaat nu te ver. Bovendien heeft jouw Ubuntu server geen publiek ip address; het heeft een privat ip address dat alleen op jouw netwerk beschikbaar is.
Binnen ons netwerk zouden we op een lokale DNS (Domain Name Server) een naam kunnen registreren. Op onze windows machine kunnen we ook de host file gebruiken. Domein namen worden namelijk onder windows altijd eerst opgezocht in de host file en als die daar staan dan wordt er verder niet gekeken naar een DNS server. We kunnen dus via de hosts file onze eigen naam registreren. We moeten de hosts file wel onder admistrative privileges openen. Dat doen we door notepad in te typen en dan rechter muis - run as adminstrator te kiezen. We hebben nu notepad geopend als adminstrator (in Lunx termen als root).
Ga nu naar c:\windows\system32\drivers\etc\ laat alle files (*.*) zien en open hosts.
In deze video wordt nog eens uitgelegd hoe je je host file kan aanpassen en wat dat precies doet:
Voeg deze regel toe (ip nummer is voorbeeld):
192.168.153.134 ubuntu.local
Save de hosts file en ga dan naar je browser en ga naar ubuntu.local. Je ziet nu je Linux Apache web server standaard pagina.
Virtual host
Binnen een webserver worden vaak meerdere websites geserveerd. Als dat zo is hoe weet Apache dan welke web server er moet worden getoond? Dit gaat met behulp van virtuele hosts. Stel je hebt www.site1.com en www.site2.com. Via DNS zijn beide domeinnamen aan één ipnummer gekoppeld. Dat betekent dat als je één van de twee domain namen in de browser intypt, je naar dezelfde server wordt doorgestuurd. Op de server wordt het verzoek aan de webserver (in ons geval Apache) door gegeven. De webserver krijgt ook de naam via de browser en het is deze naam die de webserver gebruikt om te bepalen welke website moet worden getoond. Deze website heet een virtuele host. Het is namelijk geen echte host (dat is je webserver), maar een soort sub-host; een host in een host. We noemen dat dus de virtual host.
Een virtual host wordt aangemaakt met behulp van een text file. Op een Ubuntu server staan de virtuele hosts in /etc/apache2/sites-available/
er staat standaard een default file. Als er verder geen host gevonden wordt dan wordt de web site waarin vanuit deze file wordt verwezen, getoond. In de file staat
DocumentRoot /var/www/html
Dit is dus de locatie (=document root) van de standaard website.
Via de windows hosts file hadden we ubuntu.local als naam gedefinieerd. Aan deze naam kunnen we nu een virtuele host hangen.
sudo cp /etc/apache2/sites-availble/000-default.conf /etc/apache2/sites-availble/ubuntu.local.conf
(om een of andere reden lukt het soms niet om dit commando juist te kopiëren; probeer het in te typen en gebruik tab als je je path intypt)
Je hebt nu kopie van de standaard/default virtuele host.
Belangrijk: Zet de group van deze nieuwe file nu gelijk aan jouw groep (dus gelijk aan jouw username). Zet daarna de rechten voor de groep op r en w.
Je kunt nu zonder sudo te gebruiken de file veranderen.
Verander nu deze twee regels regel 11 en 12 dus in de in de file.
ServerName ubuntu.local
DocumentRoot /var/www/ubuntu.local
Dus de regel ServerAdmin wordt vervangen door de ServerName en de DocumentRoot wordt veranderd.
Dit betekent dat als de server een website verzoek krijgt voor ubuntu.local, hij gaat zoeken in /var/www/ubuntu.local voor de web pagina's.
De virtuele host ubuntu.local heeft dus een eigen virtual host.
Dus we maken nu de directory /var/www/ubuntu.local aan
sudo mkdir /var/www/ubuntu.local/
verander de group van deze directory weer naar (jouw) user en voeg w(rite) permissie toe aan de group.
Maak een file index.html en zet daar het volgende in (zet op de plaats van de puntjes jouw naam).
<html>
<head>
<title> Linux rocks! </title>
</head>
<body>
<p> I'm running this website on the Ubuntu Server server of ......!
</body>
</html>
Om een site die je hebt gemaakt te enablen (=aanzetten):
sudo a2ensite ubuntu.local
a2ensite staat voor apache to (2) enable site.
Disable (uitzetten) van een site met
sudo a2dissite ubuntu.local
a2disablesite staat voor apache to (2) disable site.
En reload config files of restart web server.
sudo systemctl reload apache2 | reload config files and keep running |
sudo apache2ctl configtest | check configuratie |
Als het goed is hebben we nu een eerste virtuele host gemaakt.
Opdracht
Maak een tweede virtuele host, noem deze test.local en laat de volgende pagina zien (vul op de plaats van de puntjes jouw naam in):
<html>
<head>
<title>Second virtual host van .....</title>
</head>
<body>
<p> Test - virtuele host for test
</body>
</html>
Dus, als je naar je browser gaat en je typt in test.local dan moet de bovenstaande pagina worden getoond. De andere web site ubuntu.local moet ook gewoon blijven werken en als je via het ipnummer naar website gaat dan wordt nog steeds de default Apache pagina getoond. Je hebt dus in totaal drie virtuele hosts draaien.
Checklist
- Apache geinstalleerd?
192.x.x.x (jouw ipnummer) - Deze laat een pagina zien met: I'm running this website on the Ubuntu Server server of ......! - Laat zien hoe je jouw Apache webserver stopt en start.
- host file op Windows aangepast?
ubuntu.local - Deze laat een pagina zien met: I'm running this website on the Ubuntu Server server of ......! - virtual host aangemaakt?
test.local - Deze laat een pagina zien "Test - virtuele host for test."
Remote Inleveren (beta) - nog NIET gebruiken!
Zorg ervoor dat de sites, 127.0.0.1, ubuntu.local en test.local werken. Je moet dus je VM hebben opgestart. Je moet daarnaast ook je XAMPP Apache hebben opgestart.
Op je VM of in MobaXterm ben je aangelogd op je Ubuntu server en je voert het volgende commando uit:
ls -lar /etc/apache2/sites* > /var/www/test.local/test.html ; ls -lar /var/www/* >> /var/www/test.local/test.html
Als je de rechten goed hebt gezet zoals beschreven in deze les dan moet dit commando werken (dus geen foutmelding geven). Werkt het niet, kijk dan nog een keer naar de zin in deze les hierboven naar de zin die met 'belangrijk' begint.
Download de file check.php die hier (links) naast de les staat:
Zet deze file in he document root van je Apache XAMPP server (meestal is dit de htdocs folder) en voer deze file uit. Dat doe je door in de browser te gaan naar http://127.0.0.1/check.php Het resultaat moet er zo uit zien:
In dezelfde folder/directory waar je check.php hebt neergezet, staat nu een file Huiswerk_Linux.txt.
Zet deze file in Teams, bij deze huiswerkopdracht.
--