lamp - apache | appacademy.dk

32
App Academy www.appacademy.dk @appacademydk LAMP Apache/httpd 1

Upload: klangborg

Post on 29-May-2015

194 views

Category:

Education


1 download

TRANSCRIPT

Page 1: Lamp - Apache | appacademy.dk

App Academy www.appacademy.dk@appacademydk

LAMP

Apache/httpd

1

Page 2: Lamp - Apache | appacademy.dk

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

Page 3: Lamp - Apache | appacademy.dk

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

Page 4: Lamp - Apache | appacademy.dk

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

Page 5: Lamp - Apache | appacademy.dk

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

Page 6: Lamp - Apache | appacademy.dk

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

Page 7: Lamp - Apache | appacademy.dk

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

Page 8: Lamp - Apache | appacademy.dk

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

Page 9: Lamp - Apache | appacademy.dk

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

Page 10: Lamp - Apache | appacademy.dk

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

Page 11: Lamp - Apache | appacademy.dk

App Academy www.appacademy.dk@appacademydk

.htaccessHybertext access

Konfigurationsfil i filstrukturen./|.htaccess|index.html/images/.htaccess/images/me.jpg

11

Page 12: Lamp - Apache | appacademy.dk

App Academy www.appacademy.dk@appacademydk

.htaccessFejlhåndtering / 404

At fortælle brugerne at der mangler noget

12

Page 13: Lamp - Apache | appacademy.dk

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

Page 14: Lamp - Apache | appacademy.dk

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

Page 15: Lamp - Apache | appacademy.dk

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

Page 16: Lamp - Apache | appacademy.dk

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

Page 17: Lamp - Apache | appacademy.dk

App Academy www.appacademy.dk@appacademydk

.htaccessVigtigt!

<Files ~ "^\.ht"> Order allow,deny Deny from all Satisfy all</Files>

Fixes med .htaccess :D

17

Page 18: Lamp - Apache | appacademy.dk

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

Page 19: Lamp - Apache | appacademy.dk

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

Page 20: Lamp - Apache | appacademy.dk

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

Page 21: Lamp - Apache | appacademy.dk

App Academy www.appacademy.dk@appacademydk

Apache modulermod_ssl / installation

# a2enmod ssl<output truncated>

# a2ensite default-ssl

# service apache2 restart

21

Page 22: Lamp - Apache | appacademy.dk

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

Page 23: Lamp - Apache | appacademy.dk

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

Page 24: Lamp - Apache | appacademy.dk

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

Page 25: Lamp - Apache | appacademy.dk

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

Page 26: Lamp - Apache | appacademy.dk

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

Page 27: Lamp - Apache | appacademy.dk

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

Page 28: Lamp - Apache | appacademy.dk

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

Page 29: Lamp - Apache | appacademy.dk

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

Page 30: Lamp - Apache | appacademy.dk

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

Page 31: Lamp - Apache | appacademy.dk

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

Page 32: Lamp - Apache | appacademy.dk

App Academy www.appacademy.dk@appacademydk

Tak for i [email protected]

32