5. 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
6. 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
9. 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
10. 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
13. 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
14. 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
15. 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
16. 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
18. 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
19. 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
22. 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
23. 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
24. 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
25. 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
27. 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
28. 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
30. 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
31. 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