Linux Quickstart
Deze Quickstart-installatie is bedoeld voor mensen welke overnieuw moeten beginnen omdat hun laptop is gecrashed, of op een andere manier hun gegevens zijn kwijtgeraakt. LINUX QUICKSTART...................................................................................................................................................... 1 1. GCC INSTALLEREN ....................................................................................................................................................... 2 2. VI INSTELLEN ................................................................................................................................................................ 3 3. HUISWERKSYSTEEM INSTALLEREN ................................................................................................................................ 4 4. APACHE INSTALLEREN................................................................................................................................................... 6 4. APACHE CONFIGUREREN................................................................................................................................................ 8 5. APACHE STARTEN .......................................................................................................................................................... 9 6. QUICKSTART GEREEDMELDEN ..................................................................................................................................... 11
1. GCC Installeren Zoals in de les behandeld is Linux een operating system dat gebaseerd is op vrij beschikbare broncode (Open Source). Om broncode te compileren tot uitvoerbare programma’s heb je de GNU Compiler Collection (gcc) nodig. In de meeste Linux distributies wordt gcc niet of alleen gedeeltelijk geïnstalleerd. In bijvoorbeeld Ubuntu wordt gcc alleen gedeeltelijk geïnstalleerd. We hebben nog aanvullende broncode nodig. Deze installeren we met het apt-get programma: apt-get install build-essential
Apt-get gaat nu de aanvullende broncode van gcc voor je neerladen en installeren. Wacht tot dit gereed is.
Aanmaken map voor broncode De juiste locatie voor broncode in Linux is /usr/local/src. Kijk eerst of deze directory al bestaat. Dit doen we met het commando ls: ls -l /usr/local/
Je zou ongeveer het volgende moeten kunnen zien: drwxr-xr-x+ drwxr-xr-x+ drwxr-xr-x+ drwxr-xr-x+
1 1 1 1
daniel daniel daniel daniel
daniel daniel daniel daniel
0 0 0 0
Dec Dec Dec Dec
7 7 7 7
21:30 21:30 21:30 21:30
bin etc lib src
Dit is de output van Cygwin. In de overige Linux distributies is de lijst langer en hebben de bestanden andere toegangsrechten. Indien de directory src niet bestaat, maak hem dan aan met het commando mkdir (MaKe DIRectory): mkdir /usr/local/src
2. Vi instellen Het programma vi is de text-editor in Linux. Tijdens de les hebben we ontdekt dat als je in de insert mode van het programma vi bent, de pijltjestoetsen niet werken. Omdat vi een line-editor is, kunnen we dit eigenlijk niet zien als een fout in het programma. Toch is dit irritant gedrag, dus we gaan het oplossen door de instelling set nocp aan het configuratiebestand van vi toe te voegen.
Het sudo mechanisme Het configureren van de meeste Linux applicaties doen we namens de root gebruiker. We moeten daarom tijdelijk inloggen als Administrator (root). start een terminal met de toetsencombinatie:
-T. Om iets uit te voeren namens de root gebruiker, moet je het commando sudo voor elke handeling zetten. Je wordt dan tijdelijk ingelogd als root gebruiker en weer uitgelogd als de handeling gereed is. Dit is vrij irritant en kan mooier: sudo su
We gebruiken het commando sudo alleen om in te loggen met het su (Super User) commando. Daardoor blijven we ingelogd.
Instellen vi Gebruikers van de meeste Linux versies moeten het commando twee keer geven. De eerste keer is voor jezelf als gewone gebruiker: echo "set nocp" >.vimrc
De meeste Linux-versies gebruiken inmiddels vim (vi improved), de verbeterde versie van vi. Daarom heeft het configuratiebestand de naam ‘vimrc’. De tweede keer is voor de root-gebruiker: echo "set nocp" >/root/.vimrc
Normaal plaatst echo tekst op het scherm. Het “>” symbool (redirection) stuurt de tekst naar een bestand (in dit geval .virc). De bestandsnaam .virc bevat aan het begin een punt. In Linux betekent dit dat het een verborgen bestand is.
3. Huiswerksysteem installeren Via het Linux huiswerksysteem kan ik jullie vorderingen beoordelen. Direct nadat je het huiswerk hebt gemaakt stuur je mij een e-mail met de output van het history commando. Om dit mogelijk te maken gaan we het email programma installeren.
Broncode neerladen en uitpakken We gaan eerst de broncode voor het email programma 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 het email programma neerladen. Dit doen we met get wget programma: wget -N http://www.commandlinerevolution.nl/Source/eMail-3.2.3-git_CR.tar.bz2
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 eMail-3.2.3-git_CR.tar.bz2
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 geven we aan dat het om een bestand gaat. Je ziet nu dat het tar programma de bestanden uitpakt naar de map eMail. Wacht tot dit klaar is.
Starten configure script Nu kunnen we beginnen met het compileren van de broncode. Ga eerst naar de nieuwe map eMail met het commando cd: cd eMail
Compileren gaat in drie stappen: configureren, compileren en installeren. We beginnen met de configuratie. Dit wordt automatisch gedaan via het configure script. ./configure --prefix=/usr --sysconfdir=/etc
Via de optie -prefix (voorvoegsel) geven we aan dat het programma in de /usr directory moet worden geplaatst. Met de optie -sysconfdir geven we aan dat de configuratiebestanden in de map /etc moet worden geplaatst. Je ziet nu dat er een hele serie van controles en tests op je systeem wordt uitgevoerd. Wacht rustig af tot dit gereed is: checking for strerror... yes checking for strrchr... yes checking for uname... yes configure: creating ./config.status config.status: creating Makefile config.status: creating include/config.h
Compileren broncode De tweede stap is het daadwerkelijk compileren van de broncode. Dit doen we met het make commando: make
Je ziet nu opnieuw allerlei codes voorbij komen. De output toont hoofdzakelijk het uitvoeren van het gcc commando (de compiler), gevolgd door een heleboel opties. Wacht af tot dit gereed is: gcc -g -O2 -Wall -W -DUSE_GNU_STRFTIME -I/usr/local/src/email-3.1.3 -I/usr/local/src/email-3.1.3/src -I/usr/local/src/email-3.1.3/include -I../include -I/usr/local/src/email-3.1.3/dlib/include I../dlib/include -DEMAIL_VERSION='"3.1.3"' -DCOMPILE_DATE='"10/31/2010-01:13:35PM_EDT"' DEMAIL_DIR='"/usr/etc/email"' -DHAVE_CONFIG_H -o email email.o addr_parse.o addy_book.o conf.o error.o execgpg.o file_io.o message.o mimeutils.o processmail.o progress_bar.o remotesmtp.o sig_file.o smtpcommands.o utils.o ../dlib/libdlib.a make[1]: Map '/usr/local/src/email-3.1.3/src' wordt verlaten
Installeren binaries We hebben nu een zogenaamde binary (uitvoerbaar programma) gemaakt. De derde en laatste stap is het installeren van de nieuwe bestanden. De binary, 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/bin /usr/share/man /etc/email
Dit kunnen we ook weer automatisch doen met het make commando: make install
Via de optie install geven we aan dat het zogenaamde install target moet worden uitgevoerd.
Configureren e-mail Voordat we het email programma kunnen gebruiken moeten we nog een aantal gegevens invullen, zoals ons afzender email adres en welke server we willen gebruiken. Dit doen we door het email configuratiebestand te wijzigen met de vi text-editor: vi /etc/email/email.conf
Je ziet nu de inhoud van het configuratiebestand. Toets i om in de INSERT modus te komen en breng de volgende vetgedrukte wijzigingen aan. ############################################################ # SMTP Server and Port number you use ############################################################ SMTP_SERVER = 'smtp.boland.nl' SMTP_PORT =
'443'
############################################################ # Your email address: If you'd like To have your name to # show in the from field instead of just your email address, # then keep the format below and edit it to your email # and name. ############################################################ MY_NAME = 'Voornaam Achternaam' MY_EMAIL = '[email protected]' #REPLY_TO = ''
Let op: het student-mail-adres moet je altijd invullen, anders wordt jouw e-mail als spam gezien. Als je mijn e-mail aan jou ergens anders wilt ontvangen, vul dan bovendien het REPLY_TO veld in. Als je dit invult, verwijder dan ook de hash-tag. Hiermee wordt de instelling geactiveerd. Toets <Esc> om uit de INSERT modus te gaan en sla het bestand op met de commando’s w (write) en q (quit), gevolgd door <Enter>: :wq
Het bestand is nu gewijzigd en we zijn terug op de Linux command-line.
Testen huiswerksysteem Verstuur nu je allereerste huiswerk-email. Dit doen we met een pijpleiding tussen de commando’s history en email. Zorg dat het onderwerp van de e-mail (optie s) tussen aanhalingstekens staat: history | email -s "Quickstart huiswerk e-mail" [email protected]
Als er geen foutmelding verschijnt, is de e-mail correct verstuurd.
4. Apache installeren Apache is de killer-app voor Linux. Dat wil zeggen: mensen gingen Linux installeren om Apache te kunnen gebruiken. 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.
Neerladen en uitpakken broncode 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_CRP.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_CRP.tar.gz
Met de optie x (extract) geven we aan dat we het bestand willen uitpakken. Middels optie v (verbose) geven we aan dat we het uitpak-proces 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.
Starten configure script 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. 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 + using "tr [a-z] [A-Z]" to uppercase + checking for system header files + adding selected modules + using builtin Expat + 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
Compileren broncode 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. Wacht af tot het compileer-proces klaar is: gcc -c -I../os/cygwin -I../include -DCYGWIN -DUSE_HSREGEX -DUSE_EXPAT -I../lib/expat-lite DNO_DL_NEEDED `../apaci` checkgid.c gcc -DCYGWIN -DUSE_HSREGEX -DUSE_EXPAT -I../lib/expat-lite -DNO_DL_NEEDED `../apaci` -o checkgid L../os/cygwin -L../ap checkgid.o -lm -lap -los -lcrypt -lgdbm make[2]: Map '/usr/local/src/apache_1.3.29/src/support' wordt verlaten <=== src/support make[1]: Map '/usr/local/src/apache_1.3.29' wordt verlaten make[1]: Map '/usr/local/src/apache_1.3.29' wordt binnengegaan make[1]: Map '/usr/local/src/apache_1.3.29' wordt verlaten <=== src
Installeren binaries 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.
-
4. Apache configureren Tot slot moet je nog de VirtualHost configureren, zodat je meerdere websites kunt serveren.
Instellen locale DNS Eerst gaan we een domeinnaam voor de nieuwe web-site toevoegen. Open het hosts bestand in het vi programma: vi /etc/hosts
Ga naar het einde van het bestand met de (hoofdletter) G toets. We zijn nu nog in vi (visual) mode. Voeg een regel toe met het commando o (open). We zijn nu in insert mode. Geef de volgende regel in: 127.0.0.1
apache.localhost
Let op: gebruik een tab, geen spaties om het ip-adres en de domeinnaam van elkaar te scheiden. Ga nu uit insert mode met de <Esc> toets en geef de commando’s w (write) en q (quit): :wq
Het bestand wordt nu opgeslagen en we zijn terug op de Cygwin commando prompt.
Instellen virtual host We gaan nu Apache instellen, zodat we meerdere web-sites op één computer kunnen draaien. Dit heet een virtual host. Open het Apache configuratie-bestand met de vi editor: vi /usr/local/apache/conf/access.conf
Ga naar het einde van het bestand met de (hoofdletter) G toets. Voeg een regel toe met de o toets. We zijn nu in insert mode. Geef de volgende regels in: NameVirtualHost 127.0.0.1 Include conf/*.localhost
Ga nu uit insert mode met de <Esc> toets en geef de commando’s w (write) en q (quit): :wq
Het bestand wordt nu opgeslagen en we zijn terug op de Cygwin commando prompt.
Maken website bestand Maak een apart bestandje voor de eerder ingestelde domeinnaam: vi /usr/local/apache/conf/apache.localhost
Toets i (insert) en geef de volgende regels in: ServerName apache.localhost
Ga nu uit insert mode met de <Esc> toets en geef de commando’s w (write) en q (quit): :wq
Het bestand wordt nu opgeslagen en we zijn terug op de Cygwin commando prompt.
Controleren configuratie Voordat we Apache herstarten kunnen we controleren of we de virtual host goed hebben ingesteld. Dit doen we met de (hoofdletter) S optie: /usr/local/apache/bin/httpd -S
Het resultaat zou er ongeveer alsvolgt moeten uitzien: VirtualHost configuration: 127.0.0.1:80 is a NameVirtualHost default server apache.localhost (/usr/local/apache/conf/apache.localhost:1) port 80 namevhost apache.localhost (/usr/local/apache/conf/apache.localhost:1)
5. Apache starten We kunnen Apache nu starten, zodat hij gaat luisteren naar binnenkomende connecties.
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
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 output van een Debian Linux systeem: UID root nobody nobody nobody nobody nobody
PID 11046 11639 11640 11641 11642 11643
PPID 1 11046 11046 11046 11046 11046
C 0 0 0 0 0 0
STIME Feb28 09:42 09:42 09:42 09:42 09:42
TTY ? ? ? ? ? ?
TIME 00:00:12 00:00:00 00:00:00 00:00:00 00:00:00 00:00:00
CMD /usr/local/apache/bin/httpd /usr/local/apache/bin/httpd /usr/local/apache/bin/httpd /usr/local/apache/bin/httpd /usr/local/apache/bin/httpd /usr/local/apache/bin/httpd
Als het goed is zien we zes processen. Het programma dat namens root (SYSTEM in Cygwin) draait is het moederproces. Dit proces is als eerste opgestart het heeft vervolgens zelf weer 5 versies van zichzelf gestart, namens de nobody gebruiker (Guest/SYSTEM in Cygwin). Dit mechanisme noemen we 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 Tijd voor het hoera-moment. Open een web-browser, zoals Chrome of FireFox en type in de adres-balk: http://apache.localhost
Je zou nu het volgende moeten kunnen zien:
6. Quickstart gereedmelden Geweldig! Je bent nu weer up-to-date. Van dit heugelijke feit wil ik natuurlijk op de hoogte gebracht worden. Stuur mij daarom een tweede e-mail. Dit doen je met een pijpleiding tussen de commando’s history en email. Zorg dat het onderwerp van de e-mail (optie s) tussen aanhalingstekens staat: history | email -s "Quickstart Apache gereed" [email protected]
Als er geen foutmelding verschijnt, is de e-mail correct verstuurd.