lamp - apache | appacademy.dk
TRANSCRIPT
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
InstallationVigtige 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 apachectlArgument 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 startHttpd (pid 3737) already running#
Bruges altid efter
configurations ændringer
6
App Academy www.appacademy.dk@appacademydk
Virtual host
At kunne hoste flere domæner med forskellig indenhold på en IP adresse.
www.site1.demo
www.site2.demo/var/vsite/site2
/var/vsite/site1 Index.html etc...
Index.html etc...httpd server
Dns navne www roots
7
App Academy www.appacademy.dk@appacademydk
Virtual HostOpsæ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 HostConfiguration
<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)
Hvor er index.html?
Domæner der skal bruges
9
App Academy www.appacademy.dk@appacademydk
Virtual HostFlere parametre
ParameterDocumentRoot 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
.htaccessHybertext access
Konfigurationsfil i filstrukturen./|.htaccess|index.html/images/.htaccess/images/me.jpg
11
App Academy www.appacademy.dk@appacademydk
.htaccessFejlhåndtering / 404
At fortælle brugerne at der mangler noget
12
App Academy www.appacademy.dk@appacademydk
.htaccessFejlhåndtering / 404
Tilføj følgende til .htaccessErrorDocument 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.htmlBemærk:URLerne skal her være absolute
13
App Academy www.appacademy.dk@appacademydk
.htaccessHTTP fejlkoder
Kode Årsag
400 Ugyldig forspørgelse
401 Brugernavn/kodeord påkrævet
403 Forbudt
404 Ikke fundet
500 Fejl på serverenErrorDocument 400 /error/400.htmlErrorDocument 401 /error/401.htmlErrorDocument 403 /error/403.htmlErrorDocument 404 /error/404.htmlErrorDocument 500 /error/500.html
14
App Academy www.appacademy.dk@appacademydk
.htaccessBiblioteksadgange
• 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
.htaccessKræv adgangskode
.htaccessAuthUserFile /var/virtual_hosts/www.site1.demo/.htpasswdAuthGroupFile /dev/nullAuthName "Privat område"AuthType Basic<Limit GET> require valid-user</Limit>
Tilføj bruger# htpasswd –c / var/virtual_hosts/www.site1.demo/.htpasswd mwhnew password: *********Re-type new password: ********Adding password for user mwh
16
App Academy www.appacademy.dk@appacademydk
.htaccessVigtigt!
<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_MODULESLoaded 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 modulermod_ssl
Secure Socket Layer
GET /js/jquery.js HTTP/1.1Host: www.site1.demo#¤Q#T”qg5q54y245yqgqehtqahQ#¤TGqaegq45yq4ehqe5y
20
App Academy www.appacademy.dk@appacademydk
Apache modulermod_ssl / installation
# a2enmod ssl<output truncated>
# a2ensite default-ssl
# service apache2 restart
21
App Academy www.appacademy.dk@appacademydk
Apache modulermod_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 modulermod_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 modulermod_ssl / kort om heartbleed
Se mere på http://xkcd.com/1354/
Og http://www.debian.org/security/2014/dsa-2896
# root@debian:~# openssl versionOpenSSL 1.0.1e 11 Feb 2013root@debian:~# dpkg -s openssl | grep VersionVersion: 1.0.1e-2+deb7u4 Debians backport
24
App Academy www.appacademy.dk@appacademydk
Apache modulermod_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 modulermod_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 modulermod_rewrite
Regl baseret konfigurationRewriteRule Mønster erstatning [Flag]
RewriteEngine onRewriteRule .* default.html
27
”Tænder” mod_rewrite
. = et hvilket som helst tegn* = 0..n gentagelserDefault.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_rewriteflag
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_rewriteBetingelser
29
RewriteEngine onRewriteCond %{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_rewriteBetingelser
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 modulermod_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 configtestSyntax OK# apachectl graceful# apachectl -t -D DUMP_MODULES |grep pagepagespeed_module (shared) Syntax OK#
31