Huiswerk Linux: Apache installatie



Vergelijkbare documenten
LINUX QUICKSTART... 1

+XLVZHUN:LQGRZV$SDFKHLQVWDOODWLH

Huiswerk Linux: Installatie PHP

Het Linux Huiswerksysteem

Huiswerk Linux: Apache groepsrechten

Linux Quickstart Cygwin via HTTP

Huiswerk Linux: Installatie phpmyadmin

Huiswerk Linux: installatie mod_auth_pam

Studietaak 4 Hoe installeer ik software? Apache Webserver

LINUX QUICKSTART... 1

Linux Quickstart Cygwin

Linux Quickstart Cygwin via HTTP

Huiswerk Linux: Installatie WordPress

Studietaak 5 Hoe installeer ik software? ProFTPD FTP-Server

Huiswerk Linux: Sendmail installatie

Huiswerk Linux: Installatie MySQL

Programma's installeren in Linux (toegespitst op Kanotix; Debian/sid)

Test Joomla op je PC 1

Huiswerk Linux: Apache SSL

De polling is er nu dan ook in een service variant en kan dus in plaats van de normale polling gebruikt worden.

Huiswerk Linux: Installatie WordPress

Chapter 4. eenvoudige webserver opzetten

Les 4 Installeren Apache2 Php MySQL

Friesland College Leeuwarden

Installatie instructies

Handleiding voor het installeren van Tomcat7

Netwerkprinter Dell 1320C installeren op Ubuntu LTS - Lucid Lynx

Planbord installatie instructies

Inhoudsopgave Disclaimer... 3 Voorwoord... 4 Inleiding... 5 Het downloaden van XAMPP... 7 Het installeren van XAMPP... 8 Joomla installeren op

Aandachtspunten voor installatie suse in vmware server

Handleiding PHP en MySQL onder Windows Server 2003 met IIS 6.0

ISW Presents Debian Homeserver Workshop

installatiehandleiding

Aanmelden Na installatie wordt de service automatisch gestart en kunt u meteen aanmelden van op afstand:

Veel gestelde vragen nieuwe webloginpagina

HowTo => OpenBSD => Local Caching DNS + DNSSEC (BIND)

Factuur2King 2.1 installeren (ook bij upgrades)

Raspberry Pi Plex server installeren

Werkplekbeheer en kantoorautomatisering Examennummer: Datum: 24 maart 2012 Tijd: 13:00 uur - 14:30 uur

Installatie SQL Server 2014

Hoe met Windows 8 te verbinden met NDI Remote Office (NDIRO) How to connect With Windows 8 to NDI Remote Office (NDIRO

Installatie Handleiding voor Modelit Applicatieprogrammatuur

Inhoudsopgave. Hoofdstuk 1: Ant...4

Vaststellen van de authenticiteit van de OSV software

Installeer Apache2: Landstede februari 2009 versie 3 1 Bertil Hoentjen

Basis UNIX commando's - overzicht

Analyse probleem remote execution

Werking van de Office Connector, en het oplossen van fouten.

Updatehandleiding Standard Parts Solid Edge 2020

Een LAMP Systeem installeren

Acht stappen voor JSF

Het opzetten van een VPN verbinding (Virtual Private Network)

Installing XDMS - Client.

Shipment Centre EU Quick Print Client handleiding [NL]

Installatie en gebruikershandleiding Cyso Hosted Exchange MacOS X Uw gegevens:

Installatiehandleiding Standard Parts Solid Edge 2019

Belangrijk: Voordat u een VPN tunnel creëert dient u ervoor te zorgen dat de datum en tijd instellingen van de router juist staan ingesteld.

Installatie van sqlserver

Installatiehandleiding. Facto minifmis

A Quick Start Guide: AVR programmeren

PictoWorks Netwerk infrastructuur

Installatie SQL Server 2012

Solcon Online Backup. Aan de slag handleiding voor Linux

Nieuwe Installatie/Factuur2King bijwerken

Denit Backup instellen op een Linux server

uziconnect Installatiehandleiding

Berekening van de hash-code van een bestand of CD

Howto make Exim work with Freesco 0.2.7

Nieuwe Installatie/Factuur2King bijwerken

Customer Interface Technology. ExpressShipper Installatiehandleiding

RaspBerry Pi installatie

Linux Server Installatie

Upgrade Web Client met ESS naar 3.5.0

Installatie en configuratie documentatie

Propa e d e u s e taak 2

Een website maken met Joomla!

Handleiding bij het gebruik van het bibsource portaal

Drupal lokale installatie op Linux Mint 17.1 Cinnamon.

Handleiding Leveranciersportaal

1 van :43

Gebruikers handleiding. Lizard Configuration Manager ToolTip. Installatie. Instellen. Initieel instellen

Taak Apachiis. Inhoud

Nieuwe Installatie/Factuur2King 2.1 MU bijwerken

Documentatie. Remote Access Voorziening Etam (RAVE)

Hoe te verbinden met NDI Remote Office (NDIRO): Apple OS X How to connect to NDI Remote Office (NDIRO): Apple OS X

Singularity. Uit de wereld van de rekenclusters. Handleiding van Helpmij.nl. Auteur: Erik98

Remote Access Voorziening Etam (RAVE)

WHITE PAPER. by Default Reasoning

Installatie Domein Windows 2000

Installatie SQL Server 2008R2

Installatie Procedure Femap STAND ALONE & FLOATING LICENTIE

Inhoudsopgave: Whisper380-computerhulp

LES 3: XAMPP OF MAMP. Lesoverzicht:

Domain Name System. DNS-service voor je eigen subdomein van os3.nl leveren.

Bestand: /home/karel/scripts/nas Pagina 1 van 8

Pagina 1. Installatiehandleiding vanaf versie 2017

5/8 Patch management

Transcriptie:

Huiswerk Linux: Apache installatie Apache is de killer-app voor Linux. Dat wil zeggen: mensen gingen Linux installeren om Apache te kunnen gebruiken. Daarnaast is Apache verantwoordelijk voor de opkomst van het internet in de jaren 1990. De Apache webserver is een typisch Linux projekt: geschreven onder copyleft en portable (draagbaar) naar andere besturingssystemen. Je kunt Apache dus ook installeren in Windows. De opdracht voor deze week is: installeer de Apache webserver. Broncode kiezen Het kiezen van de juiste versie van de broncode is enorm belangrijk voor de stabiliteit van je server. Professionele Internet Service Providers (ISP) gebruiken nooit de laatste versie van een software. Dit zijn vaak alpha of beta versies welke meestal direct na publicatie fouten vertonen, of erger: security issues. De ISP moet dan één of andere patch installeren of zelfs de hele installatie opnieuw doen. Dat schiet niet op. De professionele ISP gebruikt bij voorkeur broncode die je maar één keer hoeft te installeren en waarnaar je nooit meer hoeft om te kijken. Dit noemen we de stable version. De laatste stabiele versie van Apache is 1.3. Deze versie stamt uit 2000. Dat lijkt erg lang geleden, maar dat betekent ook dat deze versie reeds 13 jaar stabiel is, en zonder noemenswaardige problemen draait. Bovendien zijn er sindsdien weinig tot geen wijzigingen aan de broncode geweest. 1 Het sudo mechanisme Het compileren en installeren van software doen we namens de root gebruiker. Hierdoor worden automatisch de juiste toegangsrechten op de bestanden toegepast. Cygwin gebruikers Sudo voor Cygwin gebruikers: rechts-klik op het icoon van de Cygwin terminal, en kies voor Als administrator uitvoeren Andere Linux gebruikers Sudo voor gebruikers van de overige Linux-distributies: start een terminal met de toetsencombinatie <Ctrl><Alt>- T. We gebruiken het commando sudo om in te loggen met het su (become Super User) commando. Daardoor blijven we ingelogd: sudo su Broncode neerladen en uitpakken We gaan eerst de broncode voor Apache neerladen. Ga in de directory voor broncode staan. Dit doen we met het commando cd (change directory): cd /usr/local/src Nu kunnen we de broncode voor Apache neerladen. Dit doen we met get wget programma: wget -N http://www.commandlinerevolution.nl/source/apache_1.3.29_cr.tar.gz Het programma wget maakt een kopie van het neergeladen bestand met een volgnummer als het bestand al een keer is neergeladen. Dit is niet handig. Via de optie N (newer) geven we aan dat wget het eventueel bestaande bestand vervangt als het nieuwer is. De broncode is ingepakt in het tar (tarball) formaat. Pak het bestand uit middels het tar commando: tar -xvf apache_1.3.29_cr.tar.gz Optie x (extract) betekent dat we het bestand willen uitpakken. Middels optie v (verbose) geven we aan dat we het uitpakproces willen zien. Met optie f (file) geven we aan dat het om een bestand gaat. Je ziet nu dat het tar programma de bestanden uitpakt naar de map apache_1.3.29. Wacht tot dit klaar is. 1 Zie ook de volgende discussie: http://serverfault.com/questions/24132/wondering-about-the-continuing-existence-of-apache-1-3

Het configure script uitvoeren Ga allereerst in de nieuw uitgepakte map van de Apache broncode staan. Dit doen we met het commando cd (Change Directory): cd apache_1.3.29 Omdat Apache, net als alle Linux-software, is geschreven als platform-onafhankelijke software, moeten er extra tests op je systeem worden uitgevoerd. Het configure script is een zogenaamd shell script waarmee deze tests worden uitgevoerd. Dit script wordt in alle software-distributies meegeleverd. We starten het configure script alsvolgt: bash./configure --with-port=80 Normaal zou het commando./configure voldoende zijn, maar in sommige Linux versies zoals Debian, wordt standaard niet bash als commando-interpreter gebruikt maar dash, een variant op het bash programma. De Apache scripting benodigt bash. Met de optie -with-port geven we aan dat Apache op poort 80 moet gaan luisteren. Bekijken configuratie-output De output moet er alsvolgt uitzien. Wacht af totdat het configure script gereed is: Configuring for Apache, Version 1.3.29 + using installation path layout: Apache (config.layout) Creating Makefile Creating Configuration.apaci in src Creating Makefile in src + configured for Cygwin platform + setting C compiler to gcc + setting C pre-processor to gcc -E + checking for system header files + adding selected modules + checking sizeof various data types + doing sanity check on compiler and options Creating Makefile in src/support Creating Makefile in src/regex Creating Makefile in src/os/cygwin Creating Makefile in src/ap Creating Makefile in src/main Creating Makefile in src/lib/expat-lite Creating Makefile in src/modules/standard Broncode compileren Nadat Apache de systeemvereisten heeft gecontroleerd, kan de broncode gecompileerd worden. Dit doen we met het make programma: make We kijgen nu de output van het compileer-proces te zien. Deze bestaat voornamelijk uit het herhaaldelijk uitvoeren van het GNU compiler programma gcc: gcc -I. -I../os/unix -I../include -DLINUX=22 -DUSE_HSREGEX -DUSE_EXPAT -I../lib/expat-lite - DNO_DL_NEEDED `../apaci` -DPOSIX_MISTAKE -c -o regexec.o regexec.c gcc -I. -I../os/unix -I../include -DLINUX=22 -DUSE_HSREGEX -DUSE_EXPAT -I../lib/expat-lite - DNO_DL_NEEDED `../apaci` -DPOSIX_MISTAKE -c -o regerror.o regerror.c gcc -I. -I../os/unix -I../include -DLINUX=22 -DUSE_HSREGEX -DUSE_EXPAT -I../lib/expat-lite - DNO_DL_NEEDED `../apaci` -DPOSIX_MISTAKE -c -o regfree.o regfree.c Foutmelding Wacht af totdat make klaar is. Je ziet nu dat er iets is misgegaan: make[2]: Map '/usr/local/src/apache_1.3.29/src/support' wordt binnengegaan gcc -c -I../os/cygwin -I../include -DCYGWIN -DUSE_HSREGEX -DUSE_EXPAT -I../lib/expat-lite - DNO_DL_NEEDED `../apaci` htpasswd.c htpasswd.c:144:12: fout: conflicting types for `getline static int getline(char *s, int n, FILE *f) ^ In file included from /usr/include/sys/types.h:20:0, from../include/ap_config.h:86, from htpasswd.c:83:

/usr/include/sys/stdio.h:37:9: note: previous declaration of `getline was here ssize_t _EXFUN(getline, (char **, size_t *, FILE *)); ^ Makefile:59: recept voor doel 'htpasswd.o' is mislukt make[2]: *** [htpasswd.o] Fout 1 make[2]: Map '/usr/local/src/apache_1.3.29/src/support' wordt verlaten Makefile:194: recept voor doel 'build-support' is mislukt make[1]: *** [build-support] Fout 1 make[1]: Map '/usr/local/src/apache_1.3.29' wordt verlaten Makefile:173: recept voor doel 'build' is mislukt make: *** [build] Fout 2 De compiler (gcc) geeft altijd aan in welk bestand de fout staat. In dit geval gaat het om het broncodebestand htpasswd.c, regel 144, positie 12 (conflicting types for getline ). Verder geeft de compiler aan dat hij de functie getline al eerder in het Linux systeembestand /usr/include/stdio.h heeft gevonden (previous declaration of getline was here). De programmeurs van Apache hebben een functie een naam gegeven die al gereserveerd is voor de (nieuwere) broncode van het Linux systeem. Dit soort fouten hoort eigenlijk niet voor te komen, maar de functie getline is in 2010 aan de meeste Linux-distributies toegevoegd, waardoor er conflicten ook in andere software zijn ontstaan. Deze fout gaan we zelf oplossen. Fout oplossen Voordat we de fout oplossen, gaan we kijken of de fout niet ook in andere bestanden voorkomt. We gaan de Apache bronbestanden doorzoeken op het woord getline. Dit doen we met het programma grep (Globally search Regular Expression and Print): grep -r "\bgetline\b" * Via de optie r (recursive) geven we aan dat ook alle subdirectories moeten worden doorzocht. Tussen aanhalingstekens staat een zogenaamde regular expression: we plaatsen de zoekstring getline tussen de speciale zoeksymbolen \b (word boundaries), zodat getline gezocht wordt als een heel woord. Het woord getlines wordt dan niet gevonden. Tot slot geven we met de asterisk (*) aan dat we alle bestanden willen doorzoeken. Het resultaat ziet er alsvolgt uit: src/changes: *) Remove extra trailing whitespace from the getline results as part src/makefile.win: while ( ( getline < srcfl ) > 0 ) { src/os/win32/makemodulemak.cpp: ifs.getline(buf,sizeof buf); src/support/htdigest.c:static int getline(char *s, int n, FILE *f) src/support/htdigest.c: while (!(getline(line, MAX_STRING_LEN, source))) { src/support/htdigest.c: while (!(getline(line, MAX_STRING_LEN, f))) { src/support/htpasswd.c:static int getline(char *s, int n, FILE *f) src/support/htpasswd.c: while (! (getline(line, sizeof(line), fpw))) { src/support/logresolve.c:static int getline(char *s, int n); src/support/logresolve.c:static int getline (char *s, int n) src/support/logresolve.c: while (getline(line, MAXLINE)) { src/support/logresolve.pl: $response = $CHILDSOCK{$child}->getline; src/support/logresolve.pl: while(($ip = $talk->getline)) { We zien dat de functie getline in drie bronbestanden (bestanden met de extensie.c of.h) voorkomt. We zouden nu alledrie bestanden moeten openen en overal de naam van de functie wijzigen. Maar dit kan natuurlijk ook op de command-line. We doen dit met het programma sed (Stream EDitor): sed -i 's/\bgetline\b/get_line/' src/support/htdigest.c sed -i 's/\bgetline\b/get_line/' src/support/htpasswd.c sed -i 's/\bgetline\b/get_line/' src/support/logresolve.c Sed opent bestanden en voert zoek-en-vervang operaties uit. In dit geval vervangen we het woord getline door get_line. We gebruiken hier dezelfde regular expression als daarnet. Middels s (substitute) geven we aan dat we zoeken naar de expressie achter de eerste slash en dit willen vervangen door de expressie achter de tweede (zie ook: Werken met vi). Met de optie i (in-place) geven we aan dat we de wijzigingen meteen willen opslaan. We kunnen nu de Apache compilatie afmaken door het make programma opnieuw uit te voeren: make De compilatie wordt nu zonder verdere fouten afgerond.

Binaries installeren We hebben nu een aantal zogenaamde binaries (uitvoerbare programma s) gemaakt. De binaries, inclusief help- en configuratiebestand moeten nu in de juiste locaties geïnstalleerd worden: Type bestanden binaries (programma-bestanden) man pages (help-bestanden) conf files (instellingen) locatie /usr/local/apache/bin /usr/local/apache/man /usr/local/apache/conf Dit kunnen we automatisch doen via de optie install van het make programma: make install De bestanden worden nu gekopieerd naar de juiste locaties en voorzien van de juiste toegangsrechten. Een succesvolle installatie ziet er alsvolgt uit: make[1]: Map '/usr/local/src/apache_1.3.29' wordt verlaten +--------------------------------------------------------+ You now have successfully built and installed the Apache 1.3 HTTP server. To verify that Apache actually works correctly you now should first check the (initially created or preserved) configuration files /usr/local/apache/conf/httpd.conf and then you should be able to immediately fire up Apache the first time by running: /usr/local/apache/bin/apachectl start Thanks for using Apache. The Apache Group http://www.apache.org/ +--------------------------------------------------------+ Service installeren Apache is een programma dat in de achtergrond draait. Dit wordt in de Linux-wereld een daemon genoemd. Om ervoor te zorgen dat de Apache daemon automatisch gestart kan worden tijdens het opstarten van de Linux-machine, installeren we hem als service. Dit doen we met het apachectl (Apache Server Control Interface) programma: /usr/local/apache/bin/apachectl install Je krijgt de volgende output: /usr/local/apache/bin/apachectl install: apache service installed Poort 80 controleren Apache maakt gebruik van poort 80 (HTTP) om websites te serveren. Poort 80 moet dus vrij zijn, anders gaat de installatie mis. Om te controleren of poort 80 vrij is gebruiken we het netstat programma: Cygwin gebruikers netstat -nab less De optie n (numeric) laat alleen IP-adressen zien, geen domeinnamen. De optie a (all) geeft ook de luisterende processen weer. Met optie b (binaries) geven we aan dat we ook de programma s, welke aan de poorten zijn gekoppeld, willen zien. Andere Linux gebruikers netstat -nap less De optie n (numeric) laat alleen IP-adressen zien, geen domeinnamen. De optie a (all) geeft ook de luisterende processen weer. Met optie p (programs) geven we aan dat we ook de programma s, welke aan de poorten zijn gekoppeld, willen zien.

Zoals je ziet gebruiken we een pijpleiding tussen de programma s netstat en less. Het less programma is een text-viewer. Hierdoor krijgen we alleen het eerste scherm van de output te zien. Met de toets <PgDn> kunnen we dan door de lijst heen scrollen. In dit voorbeeld kun je zien dat op poort 80 geluisterd wordt (onder Locaal adres). Ook kun je zien dat het programma (binary) Skype.exe op poort 80 luistert: Actieve verbindingen Proto Lokaal adres Extern adres Status TCP 0.0.0.0:80 0.0.0.0:0 LISTENING [Skype.exe] TCP 0.0.0.0:135 0.0.0.0:0 LISTENING RpcSs TCP 0.0.0.0:445 0.0.0.0:0 LISTENING Kan gegevens van eigenaar niet verkrijgen TCP 0.0.0.0:1025 0.0.0.0:0 LISTENING TCP 0.0.0.0:1026 0.0.0.0:0 LISTENING eventlog TCP 0.0.0.0:1027 0.0.0.0:0 LISTENING Schedule TCP 0.0.0.0:1028 0.0.0.0:0 LISTENING TCP 0.0.0.0:1029 0.0.0.0:0 LISTENING We kunnen dan Apache nog niet starten. We moeten eerst het luisterende programma beëindigen. Apache starten We kunnen Apache nu starten, zodat hij gaat luisteren naar binnenkomende connecties. Dit doen we met het service programma: service apache start Je zou ongeveer de volgende output moeten zien: [Thu Jun 18 11:42:09 2015] [alert] httpd: Could not determine the server's fully qualified domain name, using 10.0.20.22 for ServerName /etc/init.d/apache start: httpd started Het kan zijn dat je de bovenstaande alert krijgt. Dit betekent dat je geen volledig geldige domeinnaam hebt. Dat is niet erg, de melding kun je negeren. Actieve programma s bekijken Om te controleren of Apache echt gestart is, kun je het commando ps (Process Snapshot) gebruiken: ps -ef Met optie e (everyone) geven we aan dat we de actieve programma s van alle gebruikers willen zien. Met optie f (full) geven we aan dat we ook de gebruikersnamen willen zien. Je moet nu in ieder geval de volgende regels kunnen zien. We zien hier de (ingekorte) output van een Cygwin Linux systeem: UID PID PPID C STIME TTY TIME CMD root 11046 1 0 Feb28? 00:00:12 /usr/local/apache/bin/httpd SYSTEM 11639 11046 0 09:42? 00:00:00 /usr/local/apache/bin/httpd SYSTEM 11640 11046 0 09:42? 00:00:00 /usr/local/apache/bin/httpd SYSTEM 11641 11046 0 09:42? 00:00:00 /usr/local/apache/bin/httpd SYSTEM 11642 11046 0 09:42? 00:00:00 /usr/local/apache/bin/httpd SYSTEM 11643 11046 0 09:42? 00:00:00 /usr/local/apache/bin/httpd Als het goed is zien we zes processen. Het programma dat namens root draait is het moederproces. Dit proces is als eerste opgestart het heeft vervolgens zelf weer 5 versies van zichzelf gestart, namens de SYSTEM gebruiker (nobody in andere Linux systemen). Dit mechanisme noemen we de child spawning (kinderen baren).

Kind-processen kunnen we herkennen aan het PPID (Parent Process ID). Dit is gelijk aan het PID (Process ID) van het moeder-proces. Het hoera moment Open een web-browser, zoals Chrome of FireFox en type in de adres-balk: http://localhost Je zou nu het volgende scherm moeten kunnen zien: Huiswerk opsturen Zoals ik in de les heb uitgelegd, kunnen je de opdracht aftekenen door een e-mail met daarin de output van het history commando te versturen. Dit doen we met een pijpleiding tussen de commando s history en email. Zorg dat het onderwerp van de e-mail tussen aanhalingstekens staat: history email -s "Apache Installatie" daniel@smtp.boland.nl Als je geen foutmelding ziet is de e-mail succesvol verstuurd. Administrator uitloggen We hebben de broncode voor Apache gecompileerd en de binaries op de juiste locatie geïnstalleerd met de juiste toegangsrechten, maar we zijn nog steeds ingelogd als Administrator (root). Geef tot slot <Ctrl>-D om de Administrator uit te loggen.