SlideShare a Scribd company logo
App Academy www.appacademy.dk
@appacademydk
LAMP
Apache/httpd
1
App Academy www.appacademy.dk
@appacademydk
Hvem er jeg
Morten Wegelbye Holm
Arbejdet med software udvikling siden 2001
Har lavet løsninger med Apache siden 2003
2
App Academy www.appacademy.dk
@appacademydk
Agenda
• Installation/opsætning
– Virtual sites, htaccess og brugerstyring
• Udvide apache
– Loade moduler
• mod_rewrite
– Moved vs virtual url
• SSL
• mod_pagespeed
3
App Academy www.appacademy.dk
@appacademydk
Installation
• Windows
– Download, doubleclick, klik ”next” indtil du støder
på knappen ”Complete” 
• Linux (Debian)
– apt-get install apache2
4
App Academy www.appacademy.dk
@appacademydk
Installation
Vigtige foldere/filer
• /var/www – %install dir%htdocs
– Dataområdet for default site
• /etc/apache2 – %install dir%conf
– Konfiguration af apache
• /var/log/apache2 - %install dir%logs
– Dataområde for logfiler
5
App Academy www.appacademy.dk
@appacademydk
Grundlæggende kontrol
Apache styres med kommandoen apachectl
Argument Handling
start Starter apache
stop Stopper apache
restart Genstarter apache
configtest Tester om configurationen er OK
gracefull Stopper og starter apache på en venlig måde
# apachectl start
Httpd (pid 3737) already running
#
6
App Academy www.appacademy.dk
@appacademydk
Virtual host
At kunne hoste flere domæner med forskellig
indenhold på en IP adresse.
Index.html etc...
Index.html etc...
httpd server
Dns navne www roots
7
App Academy www.appacademy.dk
@appacademydk
Virtual Host
Opsætning
# Include the virtual host configurations:
Include sites-enabled/
Fra apache2.conf
# ls sites-enabled/
000-default default
8
App Academy www.appacademy.dk
@appacademydk
Virtual Host
Configuration
<VirtualHost *:80>
DocumentRoot /var/vhosts/www.site1.demo
ServerName site1.demo
ServerAlias www.site1.demo
</VirtualHost>
/etc/apache2/sites-enabled/www.site1.com
Hvad skal der lyttes på?
Her alle IP’er port
(Skal også fremgå af
NameVirtalHost)
9
App Academy www.appacademy.dk
@appacademydk
Virtual Host
Flere parametre
Parameter
DocumentRoot Dataområde for dette virtual site
ServerAdmin Email adresse til administrator af serveren
ErrorLog Log til fejlbeskeder
TransferLog Accesslog
10
App Academy www.appacademy.dk
@appacademydk
.htaccess
Hybertext access
Konfigurationsfil i filstrukturen.
/
|.htaccess
|index.html
/images/.htaccess
/images/me.jpg
11
App Academy www.appacademy.dk
@appacademydk
.htaccess
Fejlhåndtering / 404
At fortælle brugerne at der mangler noget
12
App Academy www.appacademy.dk
@appacademydk
.htaccess
Fejlhåndtering / 404
Tilføj følgende til .htaccess
ErrorDocument 404 /error/404.html
<html>
<head>
<title>Error 404</title>
</head>
<body>
<center>
<img src="/error/404.jpg" alt="Not found"/><br/>
Filen er ikke fundet!
</center>
</body>
</html>
~/error/404.html
Bemærk:
URLerne skal her være
absolute
13
App Academy www.appacademy.dk
@appacademydk
.htaccess
HTTP fejlkoder
Kode Årsag
400 Ugyldig forspørgelse
401 Brugernavn/kodeord påkrævet
403 Forbudt
404 Ikke fundet
500 Fejl på serveren ErrorDocument 400 /error/400.html
ErrorDocument 401 /error/401.html
ErrorDocument 403 /error/403.html
ErrorDocument 404 /error/404.html
ErrorDocument 500 /error/500.html
14
App Academy www.appacademy.dk
@appacademydk
.htaccess
Biblioteksadgange
• Options +Indexes
– Gør det muligt at liste indenhold af en folder
• IndexOptions +FancyIndexing
– En bedre (tm) udgave af index
• DirectoryIndex filename.html
– Angiver standard filnavn
• IndexIgnore *.zip
– Piller i hvad der kan skrives index over
15
App Academy www.appacademy.dk
@appacademydk
.htaccess
Kræv adgangskode
.htaccess
AuthUserFile /var/virtual_hosts/www.site1.demo/.htpasswd
AuthGroupFile /dev/null
AuthName "Privat område"
AuthType Basic
<Limit GET>
require valid-user
</Limit>
Tilføj bruger
# htpasswd –c / var/virtual_hosts/www.site1.demo/.htpasswd mwh
new password: *********
Re-type new password: ********
Adding password for user mwh
16
App Academy www.appacademy.dk
@appacademydk
.htaccess
Vigtigt!
<Files ~ "^.ht">
Order allow,deny
Deny from all
Satisfy all
</Files>
Fixes med .htaccess :D
17
App Academy www.appacademy.dk
@appacademydk
Apache moduler
• Liste aktive moduler
# apachectl -t -D DUMP_MODULES
Loaded Modules:
core_module (static)
log_config_module (static)
logio_module (static)
…
Apache moduler er udvidelser af Apache
webserverens funktionsområde.
18
App Academy www.appacademy.dk
@appacademydk
Apache moduler
• Debian distribueres med en række ikke aktive
moduler
– ls /etc/apache2/mods-availible
• Nogle kan installeres via aptitude
– apt-cache search mod apache
• Andre som deb pakker
• Officiel liste
– https://modules.apache.org/
19
App Academy www.appacademy.dk
@appacademydk
Apache moduler
mod_ssl
Secure Socket Layer
GET /js/jquery.js HTTP/1.1
Host: www.site1.demo
#¤Q#T”qg5q54y245yqgqehtqah
Q#¤TGqaegq45yq4ehqe5y
20
App Academy www.appacademy.dk
@appacademydk
Apache moduler
mod_ssl / installation
# a2enmod ssl
<output truncated>
# a2ensite default-ssl
# service apache2 restart
21
App Academy www.appacademy.dk
@appacademydk
Apache moduler
mod_ssl
• Ikke helt så nemt
• Standard certificatet er ikke validt
• Kontakt en Certification Authority for at få et
validt
• Jeg har brugt startssl.com
– Meget billig (0 kr per år for et class 1 cert)
– Langsomelig process. Tager et par dage.
– Og nej, mit cert bliver ikke tilgængeligt til download
22
App Academy www.appacademy.dk
@appacademydk
Apache moduler
mod_ssl / konfiguration
<VirtualHost *:443>
DocumentRoot /home/httpd/private
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM
SSLCertificateFile /usr/local/apache/conf/ssl.crt
SSLCertificateKeyFile /usr/local/apache/conf/ssl.key
SSLCertificateChainFile /usr/local/apache/conf/sub.class1.server.ca.pem
</VirtualHost>
23
App Academy www.appacademy.dk
@appacademydk
Apache moduler
mod_ssl / kort om heartbleed
Se mere på http://xkcd.com/1354/ 
Og http://www.debian.org/security/2014/dsa-2896
# root@debian:~# openssl version
OpenSSL 1.0.1e 11 Feb 2013
root@debian:~# dpkg -s openssl | grep Version
Version: 1.0.1e-2+deb7u4 Debians backport
24
App Academy www.appacademy.dk
@appacademydk
Apache moduler
mod_ssl
• ssl i denne udgave siger intet om klienten
• Hele http pakken er krypteret. Derfor har vi
kun et certificat per server.
– Undtagelse med wildcard cert (*.example.org)
– SNI, som er relativt nyt. (http://en.wikipedia.org/wiki/Server_Name_Indication)
Se mere på https://wiki.apache.org/httpd/NameBasedSSLVHosts og
https://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI
25
App Academy www.appacademy.dk
@appacademydk
Apache moduler
mod_rewrite
Et modul der kan omskrive http requests
på serverside.
mod_rewrite
shop/viewproduct.php?item=PS4
26
App Academy www.appacademy.dk
@appacademydk
Apache moduler
mod_rewrite
Regl baseret konfiguration
RewriteRule Mønster erstatning [Flag]
RewriteEngine on
RewriteRule .* default.html
27
”Tænder” mod_rewrite
. = et hvilket som helst tegn
* = 0..n gentagelser
Default.html hvad skal det omskrives til
/page1.html -> default.html
/image.jpg -> default.html
/aklsjq -> default.html
Mere om det regulære udtryk:
http://perldoc.perl.org/perlre.html
App Academy www.appacademy.dk
@appacademydk
mod_rewrite
flag
Kode Effekt
N Starter forfra på mod_rewrite (pas på, du kan lave en uendelig løkke)
L Stopper mod_rewrite fra at omskrive mere
NC NoCasing – der er ikke forskel på STORE og små bogstaver
R Bruger HTTP redirect I stedet for at omskrive URL’en
S Spring de næste linjer over [S=2]
28
App Academy www.appacademy.dk
@appacademydk
mod_rewrite
Betingelser
29
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://www.site1.demo/.*$
[NC]
RewriteRule .*.(jpe?g|gif|bmp|png)$ /closed/forbidden.jpg
App Academy www.appacademy.dk
@appacademydk
mod_rewrite
Betingelser
Variable Effekt
N Starter forfra på mod_rewrite (pas på, du kan lave en uendelig løkke)
L Stopper mod_rewrite fra at omskrive mere
NC NoCasing – der er ikke forskel på STORE og små bogstaver
R Bruger HTTP redirect I stedet for at omskrive URL’en
S Spring de næste linjer over [S=2]
30
App Academy www.appacademy.dk
@appacademydk
Apache moduler
mod_pagespeed
Et modul der optimere jeres hjemmeside
# wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-beta_current_i386.deb
…
# dpkg -i mod-pagespeed-*.deb
# apachectl configtest
Syntax OK
# apachectl graceful
# apachectl -t -D DUMP_MODULES |grep page
pagespeed_module (shared)
Syntax OK
#
31
App Academy www.appacademy.dk
@appacademydk
Tak for i dag
mh@appacademy.dk
32

More Related Content

PDF
Clio online flow undervisning
PDF
IES Marqués de Sargadelos
PPTX
London Mandarin Learners Bo Xi Lai Lesson
PPTX
Des A Intro
PPTX
Pinterest in education
PPTX
Pinterest and Education
PPTX
Grundlæggende HTML
PPTX
LAMP for webudviklere | Linux | Appacademy.dk
Clio online flow undervisning
IES Marqués de Sargadelos
London Mandarin Learners Bo Xi Lai Lesson
Des A Intro
Pinterest in education
Pinterest and Education
Grundlæggende HTML
LAMP for webudviklere | Linux | Appacademy.dk

Similar to Lamp - Apache | appacademy.dk (12)

PPTX
Grundlæggende PHP [App Academy]
PPTX
Web apps i PHP [app academy]
PDF
Automatiseret test af Drupal sites med Behat
PDF
Basic tcpip-print
PPTX
Databaser i PHP [App Academy}
PPT
Indholdsredigering i en d!ng hjemmeside
PDF
Ctf intro-print
PDF
Basic tcpip-exercises
PDF
CV for Peter Kølgaard
PPTX
Introduktion til wordpress App Academy
PPTX
Wordpress for foreninger | appacademy.dk
PPT
080612 Dw 1
Grundlæggende PHP [App Academy]
Web apps i PHP [app academy]
Automatiseret test af Drupal sites med Behat
Basic tcpip-print
Databaser i PHP [App Academy}
Indholdsredigering i en d!ng hjemmeside
Ctf intro-print
Basic tcpip-exercises
CV for Peter Kølgaard
Introduktion til wordpress App Academy
Wordpress for foreninger | appacademy.dk
080612 Dw 1
Ad

More from Kristian Langborg-Hansen (7)

PPTX
Google web designer | appacademy.dk
PPTX
Grundlæggende html - appacademy
PPTX
App inventor workshop [App Academy]
PPTX
Avanceret css - appacademy.dk
PPTX
Videregående html [App Academy]
PPTX
Responsive web design
PPTX
Mobile apps med html
Google web designer | appacademy.dk
Grundlæggende html - appacademy
App inventor workshop [App Academy]
Avanceret css - appacademy.dk
Videregående html [App Academy]
Responsive web design
Mobile apps med html
Ad

Lamp - Apache | appacademy.dk