Vous êtes sur la page 1sur 18

2013/02/09 04:28

1/18

Apache

< Webszerver

Apache

Szerz: Sallai Andrs


Copyright Sallai Andrs, 2011
Licenc: GNU Free Documentation License 1.3
Web: http://szit.hu

A webszerverrl
A webszerver HTML oldalakat szolgl ki http protokollon keresztl. Alaprtelmezetten a 80-as porton.
Titkostott adattvitelre is kpes SSL vagy TLS felett, a 443-as porton (https protokoll).
Az Apache weboldala http://apache.org. Az Apache valjban egy alaptvny, amelynek nagyon sok
projektje van. A webszerver (httpd) csak az egyik projekt a sok kzl. A webszervert a foldalrl
kiindulva a kvetkez tvonalon lehet megtallni:
Project -> Project Listing -> Apache HTTP Server
Persze egyszeren azt is rhatjuk:

http://httpd.apache.org

A Debian GNU/Linux 6.x verzin, az apache2 csomagban a 2.2 verzij apache tallhat. Ennek
dokumentcija:

http://httpd.apache.org/docs/2.2/

Telepts
apt-get install apache2
Az apache weboldalrl letlthet a legjabb verzi is. 2012. mjusban ez a 2.4-es verzi.

A weblapok helye
Alaprtelmezetten a weblapok helye a kvetkez.

SzitWiki - http://szit.hu/

Last update: 2012/09/12 21:41

oktatas:linux:webszerver:apache http://szit.hu/doku.php?id=oktatas:linux:webszerver:apache

/var/www
Ez persze megvltoztathat.

Vezrls
Vezrls initscriptekkel
/etc/init.d/apache2 stop
/etc/init.d/apache2 start
/etc/init.d/apache2 restart
/etc/init.d/apache2 reload

apache2ctl
Az apache az apache2ctl paranccsal is vezrelhet. A kvetkez parancsok adhatok:

start
stop
restart
fullstatus
status
graceful
graceful-stop
configtest

Pldul az apache indtsa:


apache2ctl start
Pldul az apache lelltsa:
apache2ctl stop
A graceful parancs a SIGUSR1 jelzst kldi az apache-nak. Ennek hatsra, ha az apache nem volt
elindtva, akkor elindul. Ha el volt indtva, akkor nem szaktja meg a meglv kapcsolatokat. Ha
lelltjuk a graceful-stop paranccsal az sem szaktja meg a kapcsolatokat.

http://szit.hu/

Printed on 2013/02/09 04:28

2013/02/09 04:28

3/18

a2enmod, a2dismod
A modulok engedlyezse, tiltsa.
Hasznlata:
Engedlyezs:
a2enmod modulnv
Tilts:
a2dismod mdoulnv
Milyen modulok engedlyezhetk? Nzzk meg a mods-available knyvtr tartalmt:
ls /etc/apache2/mods-available

a2ensite, a2dissite
Site vagy virtualhost engedlyezse, tiltsa
a2ensite [site]
a2dissite [site]
Pldul az alaprtelmezett site lelltsa:
a2dissite default
Milyen sit-ok engedlyezhetk? Nzzk meg a sites-available knyvtr tartalmt:
ls /etc/apache2/sites-available
Milyen sit-ok vannak engedlyezve? Nzzk meg a sites-enabled knyvtr tartalmt:
ls /etc/apache2/sites-enabled

Bellts
Telepts utn a belltsok a kvetkez helyen tallhatk:
/etc/apache2/
Ezen bell jabb knyvtrakat s llomnyokat tallunk:
SzitWiki - http://szit.hu/

Apache

Last update: 2012/09/12 21:41

oktatas:linux:webszerver:apache http://szit.hu/doku.php?id=oktatas:linux:webszerver:apache

conf.d
Ebben a knyvtrban elhelyezett llomnyok konfigurcis fjlknt beolvassra kerlnek.
mods-available
Ebben a knyvtrban az engedlyezhet modulok konfigurcis llomnyi vannak.
mods-enabled
Eebben a knyvtrban az elz knyvtrbl vannak szimbolikus linkek.
Ha itt megtallhat egy modulhoz egy szimbolikus link akkor az engedlyezve van.
sites-available
Hozzfrhet webhelyek belltsai
sites-enabled
Engedlyezett webhelyek (elz knyvtrbl szimbolikus link)
apache2.conf
ltalnos belltsok
envvars
Krnyezeti vltozk
httpd.conf
Sajt belltsink helye
magic
Kiterjesztsek kezelse
ports.conf
Hasznlt portok

Naplfjlok
A naplfjlok helye:
/var/log/apache2
Hromfle naplfjl van:
Hibanapl:
/var/log/apache2/error.log
Hozzfrsi napl:
/var/log/apach2/access.log

Alapbelltsok
A Debian GNU/Linux rendszeren telepl Apache2 azonnal hasznlhat.
A naplllomnyokban azonban hibazenet van, mert egy ikonfjlt vr, amelyet megjelent a
bngszk flein, ha az adott weblaphoz nincs semmi megadva. Alaprtelmezetten azt vrja, hogy
ksztsnk egy 1616-os ico kiterjeszts kpfjlt.
http://szit.hu/

Printed on 2013/02/09 04:28

2013/02/09 04:28

5/18

Apache

Az ikonfjlt elkszthetjk pldul a GIMP rajzol, kpszerkeszt programmal. Az elkszlt ico


kiterjeszts fjlt a szerveren a kvetkez helyre kell menteni, az albbi nven:
/var/www/favicon.ico

Belltsok alkalmazsi kre


A belltsokat alkalmazhatjuk knyvtrakra:
<Directory "knyvtrnv">...</Directory>
A belltsokat alkalmazhatjuk knyvtrakra, szablyos kifejezseket is hasznlva:
<DirectoryMatch "Knyvtrnv">...</DirectoryMatch>
A belltsokat alkalmazhatjuk fjlokra:
<Files "llomnynv">...</Files>
A belltsokat alkalmazhatjuk fjlokra, szablyos kifejezseket is hasznlva:
<FilesMatch "llomnynv">...</FilesMatch>
A belltsokat alkalmazhatjuk webhelyre:
<Location "cm">...</Location>
A belltsokat alkalmazhatjuk webhelyre, szablyos kifejezseket is hasznlva:
<LocationMatch "cm">......</LocationMatch>
A belltsokat alkalmazhatjuk virtulis hostokra:
<VirtualHost>...</VirtualHost>

Apache azonosts
Az apache kpes weboldalak hozzfrst szablyozni azonostssal. Vagyis nem kell a
webmesternek megrni az azonostsi eljrst valamilyen nven, mert az alapbl a rendelkezsnkre
ll.

SzitWiki - http://szit.hu/

Last update: 2012/09/12 21:41

oktatas:linux:webszerver:apache http://szit.hu/doku.php?id=oktatas:linux:webszerver:apache

Jelszfjl ltrehozsa
Az els felhasznlt gy vesszk fel:
htpasswd -c /etc/apache2/auth/pass joska
A -c kapcsol a jelsz fjl ltrehozsra ad utastst.
A futtats eredmnye:
htpasswd -c /etc/apache2/auth/pass joska
New password: titok
Re-type new password: titok
Adding password for user joska
A kvetkez felhasznlnl mr nem szksges a -c kapcsol:
htpasswd /etc/apache2/auth/pass mari
Ha hasznljuk mgis a -c kapcsolt, akkor fellrjuk a pass llomnyt tartalmt.

Bellts
Az apache konfigurcis llomnyban be kell lltanunk az azonostst:
<Directory /home/www/private>
AuthType Basic
AuthName "Vdett tartomny"
AuthUserFile /etc/apache2/auth/pass
Require valid-user
</Directory>

Tovbbi lehetsgek

Require valid-user
Require user userid [userid2]
Require group csoportnev [csportnev2]

Ha csak mari felhasznl lphet be:


Require user mari

Csoportfjl

http://szit.hu/

Printed on 2013/02/09 04:28

2013/02/09 04:28

7/18

Apache

Ha csoportot lltunk be, akkor meg kell adni a csoportfjl helyt.


AuthGroupFile /etc/apache2/auth/groups
A csoportfjl szintaxisa:
csoportnev: nev1 nev2 nev3
Egy csoportfjl gy nzhet ki:
informatika: joska mari kati
gazdasagi: tibi gabor lajos
A pldban kt csoport van. Az informatika s a gazdasagi. Az informatika csoportba tartozik joska,
mari s kati. A gazdasagi csoportba tartozik tibi, gabor s lajos.

A core modul
Options
Mindig alapbl betltd modul.
Lehetv teszi az Options s az AllowOverride belltsokat
Options kapcsol1 kapcsol2
Options ExecCGI FollowSymlinks Indexes SymlinksIfOwnerMatch

ExecCGI
CGI programok futtathatk
FollowSymlinks
Szimbolikus linkek kvetse
Location direktvban hatstalan
Indexes
Az autoindex modul hasznlatt engedlyezi, vagy tiltja
SymlinksIfOwnerMatch
A webkiszolgl kveti a szimbolikus linkeket, ha tulajdonos azonos
Location direktvban nem hasznlhat

AllowOverride
AllowOverride jog1 jog2
A knyvtrakban elhelyezett .htaccess fjlok mit rhatnak fell.
SzitWiki - http://szit.hu/

Last update: 2012/09/12 21:41

oktatas:linux:webszerver:apache http://szit.hu/doku.php?id=oktatas:linux:webszerver:apache

None
A .htaccess llomny semmit sem brlhat fell
All
A .htaccess llomny minden fellbrlhat
Indexes
A knyvtrindexelshez kapcsold vezrlsek lehetsge (A Options Indexes nem tartozik ide!
Az az Options-al kell lltani)
Limit
Szablyozhat, melyik szmtgprl rhet el (access modul)
Options
fellbrlhatja a biztonsgi kapcsolkat

.htaccess hasznlata
A .htaccess akkor hasznljuk, ha egy knyvtrnak a belltsait nem kzpontilag akarjuk megoldani.
Ez jellemzen akkor van, ha azt egy msik rendszergazdra, vagy a webmesterre bzzuk
(tovbbiakban a webmesterre fogok hivatkozni).
A webmester ltrehoz ezen a nven egy llomnyt az adott knyvtrban, amiben elhelyezi a
belltsait. Hogy mi az amit bellthat mi hatrozzuk meg az AllowOverride belltssal kzpontilag.
Ha virtulis domainrl van sz, akkor szerkesszk a virtulis domain belltsait, ha sajt domainnk
akkor httpd.conf fjlt:
Szerkesszk a httpd.conf llomnyt:
mcedit /etc/apache2/http.conf
Az engedlyezst (mint azt fentebb mr csinltuk) Directory direktvk kztt hasznlhatjuk, pldul:
<Directory /var/www/info>
AllowOverride AuthConfig
</Directory>
Az AuthConfig teszi lehetv, hogy a webmester a .htaccess fjlban apache azonostst lltson be.
lljon itt egy lista miket szoktunk engedlyezni:

None
All
AuthConfig
Indexes
Limit
Options

Ha tbb lehetsget szeretnnk megadni, azt rjuk szkzkkel tagolva egyms utn:
<Directory /var/www/info>
AllowOverride AuthConfig Options Limits
http://szit.hu/

Printed on 2013/02/09 04:28

2013/02/09 04:28

9/18

Apache

</Directory>

Az authz_host modul
A authz_host modul a 2.0-s apacheban mg access modul nven szerepel!

Allow,Deny
Clja a hozzfrs szablyozsa.
Az Allow s a Deny direktvkkal szablyozhatjuk milyen hostrl vagy IP cmrl rhetik el az egyes
weboldalakat.
Allow from all
Allow from piros.and
Allow from 10.252.46.165
Deny from 10.252.46.165
Allow from 192.168.1.104 192.168.1.205
Minden szmtgp szmra: all
Deny from all
Allow from 192.168.5.0/255.255.255.0
Allow from 192.168.5.0/24
Allow from 10.1.0.0/255.255.0.0
Allow from 10.1.0.0/16
Allow from 2001:db8::a00:20ff:fea7:ccea
Allow from 2001:db8::a00:20ff:fea7:ccea/10

Order
Order sorrend

SzitWiki - http://szit.hu/

Last update: 2012/09/12 21:41

oktatas:linux:webszerver:apache http://szit.hu/doku.php?id=oktatas:linux:webszerver:apache

Szigorbb
Alaprtelmezs szerint mindenkinek tiltott az elrs.
Order Allow,Deny
Elszr megnzzk az Allow rszt. Ha egyetlen Allow rsz sem illeszkedik akkor tilts.
Msodszor megnzzk a Deny rszt. Ha illeszkedik egy Deny-re akkor hiba volt engedlyezve, tiltva
lesz.

Enyhbb
Alaprtelmezs szerint minden gyfl jhet.
Order Deny,Allow
Elszr megnzzk a Deny rszt. Ha nincs illeszkeds akkor elrhet a knyvtr.
Msodszor megnzzk a Allow-ot. Ez fell rja a Deny rszt is, ha meg volt tiltva, de most szerepel az
Allow rszben, akkor hozzfrhet.

Hozzfrs plda
<Directory /pub>
Order Allow,Deny
Allow from piros.and
Deny from sarga.and
</Directory>
<Directory /pub>
Order Deny,Allow
Deny from 192.168.5.0/24
Allow from 192.168.5.3
</Directory>
A 192.168.5.0 hlzatbl nem jhet senki, csak a 192.168.5.3-as cmrl.

Virtualhost belltsa

http://szit.hu/

Printed on 2013/02/09 04:28

2013/02/09 04:28

11/18

Minimum
Hozzunk ltre pldul a piros.and domain szmra egy llomnyt:
mcedit /etc/apache2/sites-available/piros.and
Minimlis tartalma:
<VirtualHost *:80>
ServerAdmin webmaster@piros.and
ServerName piros.and
ServerAlias www.piros.and
DirectoryIndex index.html
DocumentRoot /home/virtual-web/piros.and/htdocs/
# CGI knyvtr
ScriptAlias /cgi-bin/ /home/virtual-web/piros.and/cgi-bin/
<Location /cgi-bin>
Options +ExecCGI
</Location>

# Naplfjlok
ErrorLog /home/virtual-web/piros.and/logs/error.log
CustomLog /home/virtual-web/piros.and/logs/access.log combined
</VirtualHost>
Ez utn tltsk jra a konfigurcit:
/etc/init.d/apache2 reload
Ellenrizzk milyen hibk vannak:
tail /var/log/apache2/error.log
Engedlyezzk a domaint:
a2ensite piros.and
Ez utn tltsk jra a konfigurcit:
/etc/init.d/apache2 reload
Ellenrizzk a weblap elrhetsgt:
lynx http://piros.and
A website elrsvel kapcsolatos hibk ez utn itt:
SzitWiki - http://szit.hu/

Apache

Last update: 2012/09/12 21:41

ErrorLog

oktatas:linux:webszerver:apache http://szit.hu/doku.php?id=oktatas:linux:webszerver:apache

/home/virtual-web/piros.and/logs/error.log

A weblaprl elrsi adatok:


CustomLog /home/virtual-web/piros.and/logs/access.log combined

Ellenrz eszkzk
Bngsz
apt-get install lynx
A lynx egy karakteres bngsz.

Terhels
apt-get install apachetop

MySQL azonosts
apt-get install libapache2-mod-auth-mysql
a2enmod auth_mysql
mysql -u root -p
grant all on auth.* to auth_user@localhost identified by 'titok';
create database auth;
use auth;
CREATE TABLE `clients` (
`username` varchar(30) NOT NULL default '',
`passwd` varchar(25) NOT NULL default '',
`groups` varchar(25) NOT NULL default '',
PRIMARY KEY (`username`),
KEY `groups` (`groups`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

http://szit.hu/

Printed on 2013/02/09 04:28

2013/02/09 04:28

13/18

Apache

INSERT INTO `clients` VALUES ('joska', 'titok', 'info');


mcedit /etc/apache2/httpd.conf
Auth_MySQL_Info localhost auth_user titok
<Directory /var/www/info>
AuthName "Azonositas"
AuthType Basic
AuthBasicAuthoritative off
AuthMySQL On
AuthMySQL_Authoritative on
AuthMySQL_DB auth
AuthMySQL_Password_Table clients
AuthMySQL_Group_Table clients
AuthMySQL_Empty_Passwords off
AuthMySQL_Encryption_Types Plaintext Crypt_DES
AuthMySQL_Username_Field username
AuthMySQL_Password_Field passwd
require valid-user
</Directory>

ASP
Nha a webmesterek ASP-t szeretnnek futtatni a webszervernkn. Ehhez Mono nev csomag
teleptsre van szksg:
apt-get install libapache2-mod-mono

SSL
Tanstvny elksztse

Els lps - Privt kulcs generlsa


Az openssl eszkzzel kszthetnk RSA pvitkulcsot s CSR-t azaz Certificate Signing Request. Egy
1024 bites RSA kulcsot hozunk ltre, amely Triple-DES algoritmussal van kdolva. A trols formja
PEM, gy ASCII szvegknt olvashat.
openssl genrsa -des3 -out server.key 1024

SzitWiki - http://szit.hu/

Last update: 2012/09/12 21:41

oktatas:linux:webszerver:apache http://szit.hu/doku.php?id=oktatas:linux:webszerver:apache

Ehhez hasonl kimenetet ltunk:


Generating RSA private key, 1024 bit long modulus
.........................................................++++++
........++++++
e is 65537 (0x10001)
Enter PEM pass phrase:
Verifying password - Enter PEM pass phrase:

Msodik lps - CSR elksztse


openssl req -new -key server.key -out server.csr
Country Name (2 letter code) [GB]:HU
State or Province Name (full name) [Berkshire]:Pest
Locality Name (eg, city) [Newbury]:Budapest
Organization Name (eg, company) [My Company Ltd]: Zold Zrt.
Organizational Unit Name (eg, section) []:Informatika osztly
Common Name (eg, your name or your server's hostname) []:zold.and
Email Address []: admin@zold.and
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Harmadik lps - A Jelsz trlse a kulcsbl


Step 3: Remove Passphrase from Key
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
Az ls kimenete:
-rw-r--r-- 1 root root 745 Jul 04 14:15 server.csr
-rw-r--r-- 1 root root 891 Jul 04 14:12 server.key
-rw-r--r-- 1 root root 963 Jul 04 14:21 server.key.org

Negyedik lps - Tanstvnyt alrjuk


(Self-Signed Certificate)
openssl x509 -req -days 365 -in server.csr -signkey server.key -out
http://szit.hu/

Printed on 2013/02/09 04:28

2013/02/09 04:28

15/18

Apache

server.crt

tdik lps - A privtkulcs s a tanstvny teleptse


cp server.crt /etc/apache2/ssl/ssl.crt
cp server.key /etc/apache2/ssl/ssl.key

SSL belltsa
SSLEngine on
SSLCertificateFile /usr/local/apache/conf/ssl.crt/server.crt
SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/server.key
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
CustomLog logs/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\"
%b"

Hetedik lps - Apache jraindtsaa


invoke-rc.d apache restart

Rewrite
A rewritingrl
Egy cmet, tvonalat jrarhatunk segtsgvel. Felhasznlsnak szmtalan mdja lehet, mi most
csak egy egyszer http https tirnytst fogunk megnzni a plda kedvrt.

tirnyts
Elszr engedlyezzk az trst:
RewriteEngine On
Ellenrizzk, hogy nincs HTTPS kapcsolat:
RewriteCond %{HTTPS} !=on

SzitWiki - http://szit.hu/

Last update: 2012/09/12 21:41

oktatas:linux:webszerver:apache http://szit.hu/doku.php?id=oktatas:linux:webszerver:apache

Ezek utn a krst tirnytjuk ugyanarra a cmre, de https protokollal.


RewriteRule ^/?(.*) https://%{SERVER_NAME}/ class="code apache" [R,L]
Pldul:
http://zold.and https://zold.and
A belltsoknak kt helye legyen:

httpd.conf
.htaccess

A .htaccess fjlban val hasznlathoz be kell lltani a httpd.conf fjlban a kvetkez tulajdonsgot:
AllowOverride
Esetleg az albbi sor helyettesthet:
RewriteCond %{HTTPS} !=on
ezzel:
RewriteCond %{HTTPS} off

Knyvtr megadsa
Either put the above solution in a .htaccess file in the directory to be affected, or put the URI prefix in
the regex itself.
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?secure/(.*) https://%{SERVER_NAME}/secure/ class="code apache"
[R,L]
Pldul:
http://zold.and/titkos/ https://zold.and/titkos/

Favicon plda
# REDIRECT FAVICON REQUESTS
<ifmodule mod_rewrite.c>
RewriteEngine on
http://szit.hu/

Printed on 2013/02/09 04:28

2013/02/09 04:28

17/18

Apache

RewriteCond %{REQUEST_URI} !^/favicon\.ico [NC]


RewriteCond %{REQUEST_URI} favicon\.ico [NC]
RewriteRule (.*) http://domain.tld/favicon.ico [R=301,L]
</ifmodule>

tirnyts
Minden hivatkozst tirnytunk egy msik cmre. Lehet /etc/apache2/httpd.conf, vagy egy helyi
.htaccess fjlban.
Lehet Directory direktva kztt:
<Directory /var/www/ati>
RedirectMatch permanent ^(.*)$ http://masikdomain.valahol
</Directory>
Lehet Location direktva kztt:
<Location /ati>
RedirectMatch permanent ^(.*)$ http://masikdomain.valahol
</Location>
A kvetkez pldban ha a blog knyvtr vagy annak egy alknyvtrrra hivatkozik valaki, akkor
tirnyts trtnik:
RedirectMatch 301 ^/blog/.*$ http://domain.tld/target.html
Ha csak a blog knyvtrra szeretnnk:
RedirectMatch 301 ^/blog/$ http://domain.tld/target.html
Esetleg csak domainnel:
RedirectMatch 301 ^/blog/$ http://domain.tld/
Ms varicik, amelyekben benne van az ideiglenes (302) s a tarts (301) tirnyts:
# Tarts tirnyts
RedirectMatch 301 ^/blog/.*$ http://domain.tld/target.html
# Ideiglenes tirnyits:
RedirectMatch 302 ^/blog/.*$ http://domain.tld/target.html
Likewise, you may also write:
# This is a permanent redirect RedirectMatch permanent ^/blog/.*$ http://domain.tld/target.html #
This is a temporary redirect RedirectMatch temp ^/blog/.*$ http://domain.tld/target.html
SzitWiki - http://szit.hu/

Last update: 2012/09/12 21:41

oktatas:linux:webszerver:apache http://szit.hu/doku.php?id=oktatas:linux:webszerver:apache

Irodalom
Linkek

http://httpd.apache.org/docs/2.2/howto/auth.html
http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html
http://www.howtoforge.com/mod_auth_mysql_apache2_debian
http://modauthmysql.sourceforge.net/CONFIGURE
http://www.akadia.com/services/ssh_test_certificate.html (SSL)

From:
http://szit.hu/ - SzitWiki
Permanent link:
http://szit.hu/doku.php?id=oktatas:linux:webszerver:apache
Last update: 2012/09/12 21:41

http://szit.hu/

Printed on 2013/02/09 04:28

Vous aimerez peut-être aussi