Felhasználói eszközök

Eszközök a webhelyen


oktatas:linux:webszerver:apache

< Webszerver

Apache

A webszerverről

A webszerver HTML oldalakat szolgál ki http protokollon keresztül. Alapértelmezetten a 80-as porton. Titkosított adatátvitelre is képes SSL vagy TLS felett, a 443-as porton (https protokoll).

Az Apache weboldala http://apache.org. Az Apache valójában egy alapítvány, amelynek nagyon sok projektje van. A webszerver (httpd) csak az egyik projekt a sok közül. A webszervert a főoldalról kiindulva a következő útvonalon lehet megtalálni:

Project -> Project Listing -> Apache HTTP Server

Persze egyszerűen azt is írhatjuk:

A Debian GNU/Linux 6.x verzión, az apache2 csomagban a 2.2 verziójú apache található. Ennek dokumentációja:

Telepítés

apt install apache2

Az apache weboldaláról letölthető a legújabb verzió is. 2012. májusban ez a 2.4-es verzió.

A telepítés ellenőrzése

Az apache két proton szokott webhelyeket szolgáltatni, a 80-as és a 443-as porton. Alapértelmezetten csak a 80-as port használható. Ellenőrizzük, hogy figyel-e a 80-as porton a telepített apache2:

ss -lt

A kimenet ehhez hasonló lehet:

State      Recv-Q Send-Q      Local Address:Port          Peer Address:Port   
LISTEN     0      128                     *:ssh                      *:*       
LISTEN     0      128                    :::http                    :::*       
LISTEN     0      128                    :::ssh                     :::*   

A kettő darab kettőspontból láthatjuk, hogy az apache2 csak a IPv6 foglalaton figyel. (A harmadik kettőspont csak szeparátor) Ennek ellenére működik IPv4-en is, mivel az IPv4 az IPv6 foglalaton is képes fogadni a kapcsolatokat. Ehhez a Debian készítői az apache2 fordítását a következő kapcsolóval végezték:

--enable-v4-mapped

Hogy valóban, így van-e, kérdezzük le az apache-ot, milyen kapcsolókkal fordították:

apache2ctl -V

A következő sornak kell szerepelnie:

...
-D ARP_HAVE_IPV6 (IPv4-mapped addresses enabled)
...

A weblapok helye

Alapértelmezetten a weblapok helye a következő.

/var/www/html

Ez persze megváltoztatható.

Vezérlés

Vezérlés systemd-ből

systemctl stop apache2
systemctl start apache2
systemctl restart apache2
systemctl reload apache2

apache2ctl

Az apache az apache2ctl paranccsal is vezérelhető. A következő parancsok adhatok:

  • start
  • stop
  • restart
  • fullstatus
  • status
  • graceful
  • graceful-stop
  • configtest

Például az apache indítása:

apache2ctl start

Például az apache leállítása:

apache2ctl stop

A graceful parancs a SIGUSR1 jelzést küldi az apache-nak. Ennek hatására, ha az apache nem volt elindítva, akkor elindul. Ha el volt indítva, akkor nem szakítja meg a meglévő kapcsolatokat. Ha leállítjuk a graceful-stop paranccsal az sem szakítja meg a kapcsolatokat.

a2enmod, a2dismod

A modulok engedélyezése, tiltása.

Használata:

Engedélyezés:

a2enmod modulnév

Engedélyezésre példa:

a2enmod php5

Tiltás:

a2dismod mdoulnév

Milyen modulok engedélyezhetők? Nézzük meg a mods-available könyvtár tartalmát:

ls /etc/apache2/mods-available

a2ensite, a2dissite

Site vagy virtualhost engedélyezése, tiltása

a2ensite [site]
a2dissite [site]

Például az alapértelmezett site leállítása:

a2dissite default

Milyen sit-ok engedélyezhetők? Nézzük meg a sites-available könyvtár tartalmát:

ls /etc/apache2/sites-available

Milyen sit-ok vannak engedélyezve? Nézzük meg a sites-enabled könyvtár tartalmát:

ls /etc/apache2/sites-enabled

Állapot lekérdezése

/etc/init.d/apache2 status
Apache2 is running (pid 3064).

Ha a webszerver nem fut, akkor csak visszakapjuk a promptot.

Több információt kaphatunk az apache2ctl parancs segítségével:

apache2ctl status
apache2ctl fullstatus

Beállítás

A konfigurációs állományok szimpla szöveges fájlok (plain text). A fő konfigurációs fájl a httpd.conf, amelynek a helye fordítási időben van beállítva. A „-f” kapcsolóval az „apache2” programnak más konfigurációs fájlok is megadhatók.

Változtatás után az apache újratöltése vagy újraindítása előtt ellenőrizzük a konfigurációs fájl szintaktikáját:

apache2ctl configtest

Egy konfigurációs fájlhoz újabb konfigurációs fájlok illeszthetők az „Include” kulcsszóval. A konfigurációs mondatok nem case sensitvek. A nagy- és kisbetűk használata csak az átláthatóságot szolgálják. A konfiguráció minden módosítása után újra kell töltetni azokat az Apache webszerverrel a következő paranccsal:

service apache2 reload

Telepítés után a beállítások a következő helyen találhatók:

/etc/apache2/

Ezen belül újabb könyvtárakat és állományokat találunk:

  • conf-available
    • Ebben a könyvtárban elhelyezett állományok konfigurációs fájlként beolvasásra kerülnek.
  • conf-enabled
    • Ebben a könyvtárban az előző könyvtárból vannak szimbolikus linkek.
  • mods-available
    • Ebben a könyvtárban az engedélyezhető modulok konfigurációs állományi vannak.
  • mods-enabled
    • Eebben a könyvtárban az előző könyvtárból vannak szimbolikus linkek.
    • Ha itt megtalálható egy modulhoz egy szimbolikus link akkor az engedélyezve van.
  • sites-available
    • Hozzáférhető webhelyek beállításai
  • sites-enabled
    • Engedélyezett webhelyek (előző könyvtárból szimbolikus link)
  • apache2.conf
    • Általános beállítások
  • envvars
    • Környezeti változók
  • httpd.conf
    • Saját beállításink helye
  • magic
    • Kiterjesztések kezelése
  • ports.conf
    • Használt portok

Naplófájlok

A naplófájlok helye:

/var/log/apache2

Háromféle naplófájl van:

Hibanapló:

/var/log/apache2/error.log

Hozzáférési napló:

/var/log/apach2/access.log

Gyakorlat

Válaszoljon a következő kérdésekre:

  1. Hogyan telepítjük Debian GNU/Linuxon az Apache webszervert?
  2. Debian GNU/Linuxon, Apache webszerver esetén hol van a weboldalak alapértelmezett helye?
  3. Hogyan állíthatom le initscripttel az apache webszervert?
  4. Hogyan tilthatom le a php5 modult?
  5. Hogyan kérdezhetem le a webszerver állapotát?
  6. Debian GNU/Linux alatt hol van az alapértelmezett konfigurációs fájl?
  7. Hova kerülnek a naplófájlok?

Alapbeállítások

A Debian GNU/Linux rendszeren települő Apache2 azonnal használható.

A naplóállományokban azonban hibaüzenet van, mert egy ikonfájlt vár, amelyet megjelenít a böngészők fülein, ha az adott weblaphoz nincs semmi megadva. Alapértelmezetten azt várja, hogy készítsünk egy 16×16-os ico kiterjesztésű képfájlt.

Az ikonfájlt elkészíthetjük például a GIMP rajzoló, képszerkesztő programmal. Az elkészült ico kiterjesztésű fájlt a szerveren a következő helyre kell menteni, az alábbi néven:

/var/www/favicon.ico

Ha változtatunk az apache beállításain, akkor ellenőrizzük szintaktikailag:

apachectl configtest

Beállítások alkalmazási köre

A beállításokat alkalmazhatjuk könyvtárakra:

<Directory "könyvtárnév">...</Directory>

A beállításokat alkalmazhatjuk könyvtárakra, szabályos kifejezéseket is használva:

<DirectoryMatch "Könyvtárnév">...</DirectoryMatch>

A beállításokat alkalmazhatjuk fájlokra:

<Files "állománynév">...</Files>

A beállításokat alkalmazhatjuk fájlokra, szabályos kifejezéseket is használva:

<FilesMatch "állománynév">...</FilesMatch>

A beállításokat alkalmazhatjuk webhelyre:

<Location "cím">...</Location>

A beállításokat alkalmazhatjuk webhelyre, szabályos kifejezéseket is használva:

<LocationMatch "cím">......</LocationMatch>

A beállításokat alkalmazhatjuk virtuális hostokra:

<VirtualHost>...</VirtualHost>

Modulok

Az apache moduláris felépítésű. Alapértelmezetten csak az alapfunkciók vannak telepítve.

A modulok betöltésére példa:

LoadModule php5_module /usr/lib/apache2/modules/libphp5.so

Elsőként megadtunk egy utasítást, ez után egy modulnevet, a végén pedig a modul elérhetőségének útvonalát.

Fentebb már láttuk, hogy a modulok kezelésére létezik két remek utasítás:

  • a2enmod
  • a2dismod

Az engedélyezhető modulok megtekintése:

ls /etc/apache2/mods-available

A példakedvéért a PHP5 engedélyezése:

a2enmod php5

Ellenőrzés:

ls /etc/apache2/mods-enabled/php5.load

A core modul

Options

Mindig alapból betöltődő modul.

Lehetővé teszi az Options és az AllowOverride beállíátsokat

Options kapcsoló1 kapcsoló2
Options ExecCGI FollowSymlinks Indexes SymlinksIfOwnerMatch
  • ExecCGI
    • CGI programok futtathatók
  • FollowSymlinks
    • Szimbolikus linkek követése
    • Location direktívában hatástalan
  • Indexes
    • Az autoindex modul használatát engedélyezi, vagy tiltja
  • SymlinksIfOwnerMatch
    • A webkiszolgáló követi a szimbolikus linkeket, ha tulajdonos azonos
    • Location direktívában nem használható

A "+" és "-" karakterek használata

A plusz karakterek engedélyeznek valamit, a mínusz karakterek tiltanak egy beállítást. Ezeket a karaktereket nem kötelező kitenni. Ha nem teszem ki a „+” vagy a „-” karaktert, az alapértelmezett a „+”, vagyis engedélyezett.

<Directory /var/web/dir1>
    Options +Indexes
</Directory>

Ennek megfelelően egy tiltás:

<Directory /var/web/dir1>
    Options -Indexes
</Directory>

Természetesen ha nem írom oda az „Indexes” kapcsolót, akkor sem lesz engedélyezve.

AllowOverride

AllowOverride jog1 jog2

A könyvtárakban elhelyezett .htaccess fájlok mit írhatnak felül.

  • None
    • A .htaccess állomány semmit sem bírálhat felül
  • All
    • A .htaccess állomány minden felülbírálhat
  • Indexes
    • A könyvtárindexeléshez kapcsolódó vezérlések lehetősége (A Options Indexes nem tartozik ide! Az az Options-al kell állítani)
  • Limit
    • Szabályozható, melyik számítógépről érhető el (access modul)
  • FileInfo
    • Például: Rewrite engedélyezése.
  • Options
    • felülbírálhatja a biztonsági kapcsolókat

.htaccess használata

A beállítások két módon tehetők meg:

  • központi (centralizált) httpd.conf
  • helyi (decentralizált) .htaccess

A .htaccess akkor használjuk, ha egy könyvtárnak a beállításait nem központilag akarjuk megoldani. Ez jellemzően akkor van, ha azt egy másik rendszergazdára, vagy a webmesterre bízzuk (továbbiakban a webmesterre fogok hivatkozni).

A webmester létrehoz ezen a néven egy állományt az adott könyvtárban, amiben elhelyezi a beállításait. Hogy mi az amit beállíthat mi határozzuk meg az „AllowOverride” beállítással központilag.

Ha virtuális domainről van szó, akkor szerkesszük a virtuális domain beállításait, ha saját domainünk akkor httpd.conf fájlt:

Szerkesszük a httpd.conf állományt:

mcedit /etc/apache2/http.conf

Az engedélyezést (mint azt fentebb már csináltuk) Directory direktívák között használhatjuk, például:

<Directory /var/www/info>
  AllowOverride AuthConfig
</Directory>

Az AuthConfig teszi lehetővé, hogy a webmester a .htaccess fájlban apache azonosítást állítson be.

Álljon itt egy lista miket szoktunk engedélyezni:

  • None
  • All
  • AuthConfig
  • Indexes
  • Limit
  • Options

Ha több lehetőséget szeretnénk megadni, azt írjuk szóközökkel tagolva egymás után:

<Directory /var/www/info>
  AllowOverride AuthConfig Options Limit
</Directory>

A .htaccess példa

A fájl az aktuális könyvtárra vonatkozik, így nem kell Directory direktíva:

.htaccess
Options +Indexes
.htaccess
ErrorDocument 403 /error.php
ErrorDocument 404 /error.php
ErrorDocument 500 /error.php

Apache azonosítás

Az apache képes weboldalak hozzáférését szabályozni azonosítással. Vagyis nem kell a webmesternek megírni az azonosítási eljárást valamilyen néven, mert az alapból a rendelkezésünkre áll.

A következőkben az auth_basic modul használatával megnézzük hogyan állítsunk be egy azonosítást.

Jelszófájl létrehozása

Az első felhasználót így vesszük fel:

htpasswd -c /etc/apache2/auth/pass joska

A -c kapcsoló a jelszó fájl létrehozására ad utasítást.

A futtatás eredménye:

htpasswd -c /etc/apache2/auth/pass joska
New password: titok
Re-type new password: titok
Adding password for user joska

A következő felhasználónál már nem szükséges a -c kapcsoló:

htpasswd /etc/apache2/auth/pass mari

Ha használjuk mégis a -c kapcsolót, akkor felülírjuk a pass állományt tartalmát.

Beállítás

Az apache konfigurációs állományában be kell állítanunk az azonosítást:

<Directory /home/www/private>
    AuthType Basic
    AuthName "Vedett tartomany"
    AuthUserFile /etc/apache2/auth/pass
    Require valid-user
</Directory>

További lehetőségek

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

Ha csak mari felhasználó léphet be:

Require user mari

Csoportfájl

A csoportfájl használatának lehetősége a 2.4 apache verzióban külön modulba került, ami alapértelmezetten Debian9-en nincs engedélyezve. Először engedélyezzük az authz_groupfile modult:

a2enmod authz_groupfile

Az apache konfigurációban meg kell adni a csoportfájl helyét:

AuthGroupFile /etc/apache2/auth/groups

A csoportfájl szintaxisa:

csoportnev: nev1 nev2 nev3

Egy csoportfájl így nézhet ki:

informatika: joska mari kati
gazdasagi: tibi gabor lajos

A példában két csoport van. Az informatika és a gazdasagi. Az informatika csoportba tartozik joska, mari és kati. A gazdasagi csoportba tartozik tibi, gabor és lajos.

Karakterkódolás

Az apache konfigurációs fájlok kódolása iso-8859-1.

file -i /etc/apache2/apache2.conf

Ezért ha itt kell létrehoznunk egy AuthName értéket, akkor az helytelenül jelenik meg a böngészőben.

Az UTF-8 környezetben megírt szöveget vissza kell kódolnunk iso-8859-1-be.

Kódoljuk át az utf-8 karaktert iso-8859-1-es karakterré:

echo "ékezet" | iconv -f utf8 -t iso-8859-1//TRANSLIT

A kimeneteben valami ilyesmit kell látnunk:

�kezet

Gyakorlat

  1. Milyen hatókörökre készíthetünk beállításokat?
  2. Hogyan engedélyezzük egy könyvtár listázását?
  3. Milyen direktívákat használhatunk a különböző hatókörökre?
  4. Hogyan állíthatom be mi legyen az alapértelmezetten kiszolgátl fájlnév?
  5. Hogyan hozok létre egy jelszófájlt?
  6. Milyen modul kell a basic azonsításhoz?
  7. Mit jelent a Require valid-user?
  8. Mit jelent az AuthName „..” értéke?
  9. Hogyan adjuk meg a csoportfájl helyét?
  10. Az AllowOverride beállítást, hol és miért alkalmazzuk?

Az authz_host modul

A authz_host modul a 2.0-ás apacheban még access modul néven szerepel!

Allow,Deny

Célja a hozzáférés szabályozása.

Az Allow és a Deny direktívákkal szabályozhatjuk milyen hostról vagy IP címről érhetik el az egyes weboldalakat.

Figyelem! A beállítások alapértelmezetten csak a /var/www/ könyvtárban működnek. Ha a rendszergazda egy új könyvtárat szeretne, például: /home/www, akkor vagy a /etc/apach2/apache2.conf fájlban, vagy az új könyvtárra hivatkozásnál be kell ezt állítani külön:

<Directory /home/www/piros.hu/htdocs>
    Require all granted
</Directory>
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 számítógép számára: 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

Szigorúbb

Alapértelmezés szerint mindenkinek tiltott az elérés.

Order Allow,Deny

Először megnézzük az Allow részt. Ha egyetlen Allow rész sem illeszkedik akkor tiltás.

Másodszor megnézzük a Deny részt. Ha illeszkedik egy Deny-re akkor hiába volt engedélyezve, tiltva lesz.

Enyhébb

Alapértelmezés szerint minden ügyfél jöhet.

Order Deny,Allow

Először megnézzük a Deny részt. Ha nincs illeszkedés akkor elérhető a könyvtár.

Másodszor megnézzük a Allow-ot. Ez felül írja a Deny részt is, ha meg volt tiltva, de most szerepel az Allow részben, akkor hozzáférhető.

Hozzférés példa

<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 hálózatból nem jöhet senki, csak a 192.168.5.3-as címről.

Webhelyek kezelése

A webhelyeket (sites) a következő két paranccsal kezelhetők:

  • a2ensite
  • a2dissite

A webhelyek konfigurációs állományait az alábbi könyvtárban tartjuk:

/etc/apache2/sites-available

Mindig létezik egy alapértelmezett webhely „default” néven.

/etc/apache2/sites-available/default

Konfigurációk kezelése

Konfigurációt egy-egy könyvtár számára szoktunk beállítani.

Legyen például a /home/janos/valami könyvtár amit szeretnénk kiszolgálni.

A /etc/apache2/conf-available/ könyvtárban hozzunk létre egy valami.conf nevű állományt a következő tartalommal:

/etc/apache2/conf-available/valami.conf
<Directory /home/janos/valami>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

Engedélyezzük az konfigurációt:

a2enconf valami

Töltsük újra a szervert:

systemctl restart apache2

Virtualhost beállítása

Minimum

Hozzunk létre például a piros.and domain számára egy állományt:

mcedit /etc/apache2/sites-available/piros.and

Minimális tartalma:

<VirtualHost *:80>
        ServerAdmin webmaster@piros.and
        ServerName  piros.and
        ServerAlias www.piros.and
 
        DocumentRoot /home/virtual-web/piros.and/htdocs/
 
        # Naplófájlok
        ErrorLog  /home/virtual-web/piros.and/logs/error.log
        CustomLog /home/virtual-web/piros.and/logs/access.log combined
 
        <Directory /home/virtual-web/piros.and/htdocs>
                Require all granted
        </Directory>
</VirtualHost>
<VirtualHost *:80>
        ServerAdmin webmaster@piros.and
        ServerName  piros.and
        ServerAlias www.piros.and
 
        DirectoryIndex index.html
        DocumentRoot /home/virtual-web/piros.and/htdocs/
 
        # CGI könyvtár
        ScriptAlias /cgi-bin/ /home/virtual-web/piros.and/cgi-bin/
        <Location /cgi-bin>
                Options +ExecCGI
        </Location>
 
 
        # Naplófájlok
        ErrorLog  /home/virtual-web/piros.and/logs/error.log
        CustomLog /home/virtual-web/piros.and/logs/access.log combined
</VirtualHost>

Ez után töltsük újra a konfigurációt:

/etc/init.d/apache2 reload

Ellenőrizzük milyen hibák vannak:

tail /var/log/apache2/error.log

Engedélyezzük a domaint:

a2ensite piros.and

Ez után töltsük újra a konfigurációt:

/etc/init.d/apache2 reload

Ellenőrizzük a weblap elérhetőségét:

lynx http://piros.and

A website elérésével kapcsolatos hibák ez után itt:

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

A weblapról elérési adatok:

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

IP alapú virtualhost

/etc/apache2/sites-available
<VirtualHost 192.168.6.1>
    ServerAdmin valaki@zold.and
    DocumentRoot /home/www/tanar
 
    <Directory /home/www/tanar>
        Require all granted
    </Directory>
</VirtualHost>
 
 
<VirtualHost 192.168.7.1>
    ServerAdmin valaki@zold.and
    DocumentRoot /home/www/diak
    <Directory /home/www/diak>
        Require all granted
    </Directory>
</VirtualHost>

Engedélyezzük a beállítást:

a2ensite
systemctl restart apache2

Ellenőrző eszközök

Böngésző

apt-get install lynx

A lynx egy karakteres böngésző.

Terhelés

apt-get install apachetop

MySQL azonosítás

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;
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

Néha a webmesterek ASP-t szeretnének futtatni a webszerverünkön. Ehhez Mono nevű csomag telepítésére van szükség:

apt-get install libapache2-mod-mono

SSL

SSL engedélyezése

SSL modul engedélyezése:

a2enmod ssl
# a2enmod ssl
Considering dependency setenvif for ssl:
Module setenvif already enabled
Considering dependency mime for ssl:
Module mime already enabled
Considering dependency socache_shmcb for ssl:
Enabling module socache_shmcb.
Enabling module ssl.
See /usr/share/doc/apache2/README.Debian.gz on how to configure SSL and create self-signed certificates.
To activate the new configuration, you need to run:
  systemctl restart apache2

Az SSL site engedélyezése:

a2ensite default-ssl
# a2ensite default-ssl
Enabling site default-ssl.
To activate the new configuration, you need to run:
  systemctl reload apache2

Tanúsítvány elkészítése

Csináljunk a tanúsítványoknak helyet:

# mkdir /etc/apache2/ssl

A tanúsítványok másik szokásos helye lehet:

/etc/ssl/certs/

Tanúsítvány készítése:

# openssl req -x509 -nodes \ 
  -days 365 -newkey rsa:2048 \
  -keyout /etc/apache2/ssl/apache.key \
  -out /etc/apache2/ssl/apache.crt

A futtatás eredménye, egy konkrét példán:

# openssl req -x509 -nodes \
  -days 365 -newkey rsa:2048 \
  -keyout /etc/apache2/ssl/apache.key \
  -out /etc/apache2/ssl/apache.crt
Generating a 2048 bit RSA private key
..................+++
........+++
writing new private key to '/etc/apache2/ssl/apache.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:HU
State or Province Name (full name) [Some-State]:Hungary
Locality Name (eg, city) []:Budapest
Organization Name (eg, company) [Internet Widgits Pty Ltd]:ZoldRt
Organizational Unit Name (eg, section) []:Informatika
Common Name (e.g. server FQDN or YOUR name) []:zold.and
Email Address []:admin@zold.and

A kapcsolók rendre:

  • -x509 – A tanúsítvány típusa
  • -nodes – A titkos kulcs ne legyen DES algoritmussal titkosítva.
    • Ha elhagyjuk, akkor 3DES-CBC-el titkosítva lesz kulcs és a jelszót pedig bekéri.
    • Ha le lenne titkosítva, meg kellene adni szerver indulásakor a jelszót.
  • -days 365 – Egy évig legyen érvényes a tanúsítvány
  • -newkey rsa:2048 – A kulcs RSA algoritmussal készüljön, legyen 2048 bites
  • -keyout /etc/apache2/ssl/apache.key – a titkos kulcs helye és neve
  • -out /etc/apache2/ssl/apache.crt – a tanúsítvány helye és neve

Kulcsok védelme:

# chmod 600 /etc/apache2/ssl/*

Kulcsok beállítása az apache-ban

Kulcsok beállítása az apache-ban.

nano /etc/apache2/sites-available/default-ssl.conf 

Tartalmában javítjuk:

[...]
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
[...]

Végül

Apache újraindítása:

systemctl restart apache2

Ellenőrzés:

https://zold.and

Rewrite

A rewritingról

Egy címet, útvonalat újraírhatunk segítségével. Felhasználásának számtalan módja lehet, mi most csak egy egyszerű http https átirányítást fogunk megnézni a példa kedvéért.

A rewrite modul engedélyezése

a2enmod rewrite
systemctl restart apache2

Átirányítás

Először engedélyezzük az átírást:

RewriteEngine On

Ellenőrizzük, hogy nincs HTTPS kapcsolat:

RewriteCond %{HTTPS} !=on

Ezek után a kérést átirányítjuk ugyanarra a címre, de https protokollal.

RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]

Például:

http://zold.andhttps://zold.and

A beállításoknak két helye legyen:

  • httpd.conf
  • .htaccess

A .htaccess fájlban való használathoz be kell állítani a httpd.conf fájlban a következő tulajdonságot:

AllowOverride

Esetleg az alábbi sor helyettesíthető:

RewriteCond %{HTTPS} !=on

ezzel:

RewriteCond %{HTTPS} off

Könyvtár megadása

A következő sorokat tegyük a .htaccess fájlba.

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?secure/(.*) https://%{SERVER_NAME}/secure/$1 [R,L]

Például:

http://zold.and/titkos/https://zold.and/titkos/

Favicon példa

# REDIRECT FAVICON REQUESTS
<ifmodule mod_rewrite.c>
 RewriteEngine on
 RewriteCond %{REQUEST_URI} !^/favicon\.ico [NC]
 RewriteCond %{REQUEST_URI} favicon\.ico [NC]
 RewriteRule (.*) http://domain.tld/favicon.ico [R=301,L] 
</ifmodule>

Átirányítás

Minden hivatkozást átirányítunk egy másik címre. Lehet /etc/apache2/httpd.conf, vagy egy helyi .htaccess fájlban.

Lehet Directory direktíva között:

<Directory /var/www/ati>
    RedirectMatch permanent ^(.*)$ http://masikdomain.valahol
</Directory>

Lehet Location direktíva között:

<Location /ati>
    RedirectMatch permanent ^(.*)$ http://masikdomain.valahol
</Location>

A következő példában ha a blog könyvtár vagy annak egy alkönyvtárrára hivatkozik valaki, akkor átirányítás történik:

RedirectMatch 301 ^/blog/.*$ http://domain.tld/target.html

Ha csak a blog könyvtárra szeretnénk:

RedirectMatch 301 ^/blog/$ http://domain.tld/target.html

Esetleg csak domainnel:

RedirectMatch 301 ^/blog/$ http://domain.tld/

Más variációk, amelyekben benne van az ideiglenes (302) és a tartós (301) átirányítás:

# Tartós átirányítás
RedirectMatch 301 ^/blog/.*$ http://domain.tld/target.html
 
# Ideiglenes átirányitás:
RedirectMatch 302 ^/blog/.*$ http://domain.tld/target.html

Ilyeneket is írhatunk:

# Állandó átirányítás:
RedirectMatch permanent ^/blog/.*$ http://domain.tld/target.html
 
# Ideigelnes átirányítás:
RedirectMatch temp ^/blog/.*$ http://domain.tld/target.html

Port és IP cím

Az /etc/apache2/ports.conf állományban alapértelmezetten be van állítva a 80-as port használatra. Ebben az állományban megadhatunk más portokat is a „Listen” direktívával.

Listen 80

A Listen direktíva többször is használható, megadhatunk újabb portokat is:

Listen 80
Listen 8000

Egyszerre megadható IP cím is:

Listen 192.168.1.1:80

Megahdató IPv6-os cím is:

Listen 2001:db8::

Minden IP címen figyelünk:

Listen 0:0:0:0:80

CGI

CGI futtatható a könyvtárból.

<Directory /usr/local/apache2/htdocs/somedir>
    Options +ExecCGI
</Directory>

CGI scriptek kiterjesztésének megadása:

AddHandler cgi-script .cgi .pl

A .cgi és a .pl kiterjesztéseket szeretnénk használni.

<Directory /usr/local/apache2/htdocs/somedir>
    Options +ExecCGI
    AddHandler cgi-script .cgi
</Directory>
<Directory /usr/local/apache2/htdocs/somedir>
    Options +ExecCGI
    SetHandler cgi-script
</Directory>

Egy CGI program:

program.cgi
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Helló Világ";

Ellenőrzés

apt-get install apache2-utils
ab http://domainnev.hu/konyvtar

Sebesség teszt. Csak domainre nem működik, alkönyvtárra használjuk.

Userdir

A felhasználóknak szeretnénk lehetővé tenni, hogy saját weblapjaikat a public_html könyvtárban elhelyezhessék, azokra így hivatkozhassanak a böngészőben:

http://domainnev/~felhasznalonev/

Ehhez engedélyeznünk kell a userdir modult:

a2enmod userdir
service apache2 restart

Ha PHP is szeretnénk nekik engedélyezni, akkor:

mcedit /etc/apache2/mods-available/php5.conf

Megkeressük a következő részt:

<IfModule mod_userdir.c>
    <Directory /home/*/public_html>
        php_admin_value engine Off
    </Directory>
</IfModule>

A php_admin_flag engine On sort be kell szúrni.

<IfModule mod_userdir.c>
    <Directory /home/*/public_html>
        php_admin_value engine Off
        php_admin_flag engine On
    </Directory>
</IfModule>

Biztonsági okokból, konkrétan, hogy egyik felhasználó ne lásson a másik könyvtárába, a joska felhasználónak lehet be van állítva a következő:

chmod o-x /home/joska

Ebben az esetben nem fog működni a böngészőben a http://servernev/~joska/ Sajnos engedélyezni kell:

chmod o+x /home/joska

PHP modulok

# apt install php7.0 php7.0-mysql php7.0-xml

PHP kezelése

Telepítése után nem minden modul kerül engedélyezésre.

PHP modulok engedélyezése:

php5enmod imap
service apache2 restart

Modulok megtekintése:

php -m

Teljesítmnyteszt

Az ab parancs az apache2-utils csomag része. Az ab parancs segítségével teljesítményteszteket végezhetünk a webszerverünkön:

ab -n 1000 -c 100 http://localhost/
-n a kérések száma
-c a konkurens kérések száma

Konfig

<Directory /valahol/utvonal/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>
sudo service apache2 restart

Feladatok

Feladat 001

Készítse el a következő könyvtárat:

/var/www/szamvitel

Állítsa be a következőket:

  • nem indexelhető
  • könyvtárlista látszik
  • kezdőlap: elso.html

Feladat 002

Készítse el a következő könyvtárat:

/var/www/info

Állítsa be a következőket:

  • indexelhető
  • könyvtárlista látszik
  • kezdőlap nincs

Hozza létre a következő két állományt:

  • jelszo.html
  • telepites.html

Feladat 003

Készítse el a következő könyvtárat:

/usr/local/ets

Hozza létre a következő tartalmú állományt:

<?php
  phpinfo();
?>

Hozzon létre Aliast a könyvtárra.

Feladat 004

Készítse el a következő könyvtárat:

/var/www/raktar

Állítsa be a következőket:

  • legyen listázható
  • kiinduló állomány: kezdes.html
  • Hozza létre még a következő két állományt
    • torzs.html
    • selejt.html

Feladat 005

Készítse el a következő könyvtárat:

/var/www/kommunikacio

Állítsa be a következőket:

  • ne legyen listázható
  • kiindulási állomány: index.html

Feladat 006

  • Tartomány A 192.168.8.
  • Tartomány B 192.168.5.

Feladat 101

Vegyen fel egy új Virtualhostot:

lila.org

Dokumentumroot:

/home/virtual-www/lila.org/htdocs

Naplózás:

/home/virtual-www/lila.org/

Alias:

/etc/hosts

Feladat 102

Vegyen fel egy új Virtualhostot:

gomb.hu

Docroot:

/home/virtual-www/gomb.hu/www

Naplózás:

/home/virtual-www/gomb.hu/

Alias:

  • www
  • kis
  • nagy
  • perem

Azonosítás:

/home/virtual-www/gomb.hu/www/vedett

A következő felhasználók legyenek:

  • tamas
  • lori
  • peti

Jelszó fájl:

/home/virtual-www/gomb.hu/jelszo

Feladat 103

Vegyen fel egy új Virtualhostot:

pater.hu

DocRoot:

/home/vhosts/pater.hu/www/

Naplózás:

/home/vhosts/pater.hu/error.log
/home/vhosts/pater.hu/access.log

Alias:

Állítsa be a következőket:

/home/vhosts/pater.hu/www/novicius
  • A „rend” nevű csoport csak olvashatja
  • A „novicius” csoport csak azonosítással olvashatja

Csoportok:

  • rend tagjai
    • apat
    • peter
    • tibor
  • elemer tagjai:
    • izsak
    • feri

Feladat 104

Vegyen fel egy új Virtualhostot:

pirosszolo.hu

DocRoot:

/home/vhosts/pirosszolo.hu/public_html

Naplózás:

/home/vhosts/pirosszolo.hu/

Alias:

A következő könyvtárszerkezetet alakítsa ki:

../public_html
      |-- html
      |-- arak
      |-- bevetel

Azonosításhoz csoportok:

  • Csoportok
    • ugyfel
      • mankft
      • jozsibt
      • vker
    • borasz
      • juli
      • mari
      • tercsi

Irodalom

Könyv

  • Daniel Lopez: Apache zsebkönyv
    • ISBN: 9789639637320
  • Ken Coar, Rich Bowen: Apache receptek
    • Megoldások és példák Apache-rendszergazdáknak
    • ISBN: 9789639637481
  • Ben Laurie, Peter Laurie: Apache
    • ISBN: 963-09-4265-8

Linkek

oktatas/linux/webszerver/apache.txt · Utolsó módosítás: 2023/11/16 13:03 szerkesztette: admin