A FreeBSD szolgálja ki a legforgalmasabb honlapok nagy részét szerte a világban. A mögöttük álló webszerverek általában az Apache webszervert alkalmazzák. Az Apache használatához szükséges csomagok megtalálhatóak a FreeBSD telepítőlemezén is. Ha a FreeBSD első telepítésekor még nem telepítettük volna az Apache szerverét, akkor a www/apache13 vagy www/apache12 portból tudjuk feltenni.
Az Apache szervert sikeres telepítését követően be kell állítanunk.
Ebben a szakaszban az Apache
webszerver 1.3.X változatát
mutatjuk be, mivel ezt használják a
legtöbben FreeBSD alatt. Az
Apache 2.X rengeteg új
technológiát vezetett be, de ezekkel itt most
nem foglalkozunk. Az
Apache 2.X
változatával kapcsolatban keressük fel a
http://httpd.apache.org/
oldalt.
Az Apache webszerver
konfigurációs állománya FreeBSD alatt
/usr/local/etc/apache/httpd.conf
néven található. Ez az
állomány egy szokványos UNIX®-os
szöveges konfigurációs
állomány, ahol a megjegyzéseket egy
#
karakterrel vezetjük be. Az itt
használható összes lehetséges
beállítási lehetőség
átfogó ismertetése meghaladná az
egész kézikönyv határait, ezért
most csak a leggyakrabban módosított
direktívákat fogjuk ismertetni.
ServerRoot "/usr/local"
Ez adja meg az Apache
számára az alapértelmezett
könyvtárat. A binárisai ezen
belül a bin
és sbin
alkönyvtárakban, a konfigurációs
állományai pedig az etc/apache
könyvtárban tárolódnak.
ServerAdmin saját@címünk.az.interneten
Erre a címre küldhetik nekünk a szerverrel kapcsolatos hibákat. Ez a cím egyes szerver által generált oldalakon jelenik meg, például hibák esetében.
ServerName www.minta.com
A ServerName
segítségével meg tudjuk adni, hogy
milyen nevet küldjön vissza a szerver a
klienseknek olyankor, ha az nem egyezne meg a jelenlegivel
(vagyis a www
nevet használjuk a
gépünk valódi neve helyett).
DocumentRoot "/usr/local/www/data"
A DocumentRoot
adja meg azt a
könyvtárat, ahonnan kiszolgáljuk a
dokumentumokat. Alapértelmezés szerint az
összes kérés erre a
könyvtárra fog vonatkozni, de a szimbolikus
linkek és az álnevek akár más
helyekre is mutathatnak.
A változtatások végrehajtása előtt mindig is jó ötlet biztonsági másolatot készíteni az Apache konfigurációs állományairól. Ahogy sikerült összerakni egy számunkra megfelelő konfigurációt, készen is állunk az Apache futtatására.
A többi hálózati szervertől eltérően az Apache nem az inetd szuperszerverből fut. A kliensektől érkező HTTP kérések minél gyorsabb kiszolgálásának érdekében úgy állítottuk be, hogy önállóan fusson. Ehhez egy szkriptet is mellékeltünk, amellyel igyekeztünk a lehető legjobban leegyszerűsíteni a szerver indítását, leállítását és újraindítását. Az Apache első indításához adjuk ki a következő parancsot:
#
/usr/local/sbin/apachectl start
Így pedig a szervert bármikor leállíthatjuk:
#
/usr/local/sbin/apachectl stop
Ha valamilyen okból megváltoztattuk volna a szerver beállításait, akkor ezen a módon tudjuk újraindítani:
#
/usr/local/sbin/apachectl restart
Ha a jelenleg megnyitott kapcsolatok felbontása nélkül akarjuk újraindítani az Apache szervert, akkor ezt írjuk be:
#
/usr/local/sbin/apachectl graceful
Mindezekről az apachectl(8) man oldalon találunk bővebb leírást.
Amennyiben szükségünk lenne az
Apache
elindítására a rendszer
indításakor, akkor a következő sort
vegyünk fel az /etc/rc.conf
állományba:
apache_enable="YES"
Az Apache 2.2 esetében:
apache22_enable="YES"
Amikor az Apache
httpd
nevű programjának
szeretnénk további paranccsori
paramétereket átadni a rendszer
indítása során, akkor ezeket így
tudjuk megadni az rc.conf
állományban:
apache_flags=""
Most, miután a webszerverünk működik,
a böngészőnkkel mindezt ellenőrizni is
tudjuk a http://localhost/
cím
beírásával. Ilyenkor az
alapértelmezés szerinti
/usr/local/www/data/index.html
állomány tartalmát láthatjuk.
Az Apache a virtuális nevek használatának két különböző módját ismeri. Ezek közül az első módszer a név alapú virtualizáció (Name-based Virtual Hosting). Ilyenkor a kliens HTTP/1.1 fejlécéből próbálja meg a szerver megállapítani a hivatkozási nevet. Segítségével több tartomány is osztozhat egyetlen IP-címen.
Az Apache név alapú
virtualizációjának
beállításához az alábbi
beállítást kell hozzátennünk a
httpd.conf
állományhoz:
NameVirtualHost *
Ha a webszerverünk neve www.tartomany.hu
, és hozzá
egy www.valamilyenmasiktartomany.hu
virtuális nevet akarunk megadni, akkor azt a
következőképpen tehetjük meg a
httpd.conf
állományon
belül:
<VirtualHost *> ServerName www.tartomany.hu DocumentRoot /www/tartomany.hu </VirtualHost> <VirtualHost *> ServerName www.valamilyenmasiktartomany.hu DocumentRoot /www/valamilyenmasiktartomany.hu </VirtualHost>
A címek és elérési utak helyére helyettesítsük be a használni kívánt címeket és elérési utakat.
A virtuális nevek
beállításának további
részleteivel kapcsolatosan keressük fel az
Apache hivatalos
dokumentációját a http://httpd.apache.org/docs/vhosts/
címen
(angolul).
Az alap szerver képességeinek kiegészítéséhez több különböző Apache modul áll rendelkezésünkre. A FreeBSD Portgyűjteménye az Apache telepítése mellett lehetőséget ad a népszerűbb bővítményeinek telepítésére is.
A mod_ssl modul az OpenSSL könyvtár használatával valósít meg erős titkosítást a biztonságos socket réteg második, illetve harmadik verziójával (Secure Sockets Layer, SSL v2/v3) és a biztonságos szállítási rétegbeli (Transport Layer Security v1) protokoll segítségével. Ez a modul mindent biztosít ahhoz, hogy a megfelelő hatóságok által aláírt tanúsítványokat tudjunk kérni, és ezáltal egy védett webszervert futtassunk FreeBSD-n.
Ha még nem telepítettünk volna fel az Apache szervert, akkor a www/apache13-modssl porton keresztül a mod_ssl modullal együtt is fel tudjuk rakni az Apache 1.3.X változatát. Az SSL támogatása pedig már az Apache 2.X www/apache22 porton keresztül elérhető változataiban alapértelmezés szerint engedélyezett.
Mindegyik nagyobb szkriptnyelvhez létezik egy külön Apache-modul, amelyek segítségével komplett Apache-modulokat tudunk készíteni az adott nyelven. Gyakran a dinamikus honlapok is így próbálják a szerverbe épített belső értelmezőn keresztül a külső értelmező indításából és benne a szkriptek lefuttatásából fakadó költségeket megspórolni, ahogy erről a következő szakaszokban olvashatunk.
Az utóbbi évtizedben egyre több vállalkozás fordult az internet felé bevételeik és részesedéseinek növelésének reményében, amivel egyre jobban megnőtt az igény a dinamikus honlapokra is. Miközben bizonyos cégek, mint például a Microsoft®, a saját fejlesztésű termékeikbe építettek be ehhez támogatást, addig a nyílt forrásokkal foglalkozó közösség sem maradt tétlen és felvette a kesztyűt. A dinamikus tartalom létrehozásához többek közt Django, Ruby on Rails, a mod_perl és a mod_php modulok használhatóak.
A Django egy BSD típusú licensszel rendelkező keretrendszer, amelynek használatával nagy teljesítményű és elegáns webes alkalmazásokat tudunk gyorsan kifejleszteni. Tartalmaz egy objektum-relációs leképezőt, így az adattípusokat Python-objektumokként tudjuk leírni, és ezekhez az objektumokhoz egy sokrétű, dinamikus adatbázis hozzáférést nyújtó alkalmazásfejlesztői felületet, így a fejlesztőknek egyetlen SQL utasítást sem kell megírniuk. Találhatunk még benne továbbá egy bővíthető sablonrendszert, amelynek köszönhetően az alkalmazás belső működése elválasztható a HTML-beli megjelenésétől.
A Django működéséhez a mod_python modulra, az Apache szerverre és egy tetszőlegesen választott SQL alapú adatbázisrendszerre van szükség. A hozzá tartozó FreeBSD port mindezeket automatikusan telepíti a megadott beállítások szerint.
#
cd /usr/ports/www/py-django; make all install clean -DWITH_MOD_PYTHON3 -DWITH_POSTGRESQL
Miután a Django és a hozzá szükséges komponensek felkerültek rendszerünkre, hozzunk létre egy könyvtárat a leendő Django projektünknek és állítsuk be az Apache szervert, hogy az oldalunk belül a megadott linkekre a saját alkalmazásunkat hívja meg a beágyazott Python-értelmezőn keresztül.
A következő sort kell hozzátennünk
a httpd.conf
állományhoz,
hogy az Apache bizonyos linkeket a webes alkalmazás
felé irányítson át:
<Location "/"> SetHandler python-program PythonPath "['/a/django/csomagok/helye/
'] + sys.path" PythonHandler django.core.handlers.modpython SetEnv DJANGO_SETTINGS_MODULEazoldalam.beallitasai
PythonAutoReload On PythonDebug On </Location>
A Ruby on Rails egy olyan másik nyílt forráskódú keretrendszer, amivel lényegében egy teljes fejlesztői készletet kapunk és amelyet kifejezetten arra élezték ki, hogy segítségével a webfejlesztők sokkal gyorsabban tudjanak haladni és a komolyabb alkalmazások gyorsabb elkészítése se okozzon nekik gondot. A Portrgyűjteményből pillanatok alatt telepíthető.
#
cd /usr/ports/www/rubygem-rails; make all install clean
Az Apache és Perl egyesítésén fáradozó projekt a Perl programozási nyelv és az Apache webszerver erejének összehangolásán dolgozik. A mod_perl modulon keresztül Perlben vagyunk képesek modulokat készíteni az Apache szerverhez. Ráadásul a szerverben egy belső állandó értelmező is található hozzá, ezzel igyekeznek megspórolni a külső értelmező és a Perl indításából keletkező többletköltségeket.
A mod_perl több különböző módon állítható munkába. A mod_perl használatához nem szabad elfelejtenünk, hogy a mod_perl 1.0-ás verziója csak az Apache 1.3 változatával működik, és a mod_perl 2.0-ás változata pedig csak az Apache 2.X változataival. A mod_perl 1.0 a www/mod_perl portból telepíthető, valamint a statikusan beépített változata a www/apache13-modperl portban található. A mod_perl 2.0 a www/mod_perl2 portból rakható fel.
A PHP, vagy másik nevén „PHP, a hipertext feldolgozó” egy általános célú szkriptnyelv, amelyet kifejezetten honlapok fejlesztéséhez hoztak létre. A szabványos HTML ágyazható nyelv felépítésében a C, Java™ és Perl nyelveket ötvözi annak elérése érdekében, hogy ezzel segítse a fejlesztőket a dinamikusan generált oldalak minél gyorsabb megírásában.
A PHP5 támogatását úgy tudjuk hozzáadni az Apache webszerverhez, ha telepítjük a lang/php5 portot.
Ha a lang/php5 portot
most telepítjük először, akkor a vele
kapcsolatos beállításokat
tartalmazó OPTIONS
menü
automatikusan megjelenik. Ha ezzel nem
találkoznánk, mert például
valamikor korábban már felraktuk volna a
lang/php5 portot, akkor a
port könyvtárában következő
parancs kiadásával tudjuk újra
visszahozni:
#
make config
A beállítások között
jelöljük be az APACHE
opciót, amelynek eredményeképpen
létrejön az Apache
webszerverhez használható
mod_php5 betölthető
modul.
A PHP4 modult még ma is rengeteg szerver használja több különböző okból (például kompatibilitási problémák vagy a már korábban kiadott tartalom miatt). Ha tehát a mod_php5 helyett inkább a mod_php4 modulra lenne szükségünk, akkor a lang/php4 portot használjuk. A lang/php4 portnál is megtalálhatjuk a lang/php5 fordítási idejű beállításainak nagy részét.
Az iméntiek révén települnek
és beállítódnak a dinamikus
PHP alkalmazások
támogatásához szükséges
mouldok. Az
/usr/local/etc/apache/httpd.conf
állományban ellenőrizni is tudjuk, hogy az
alábbi részek megjelentek-e:
LoadModule php5_module libexec/apache/libphp5.so
AddModule mod_php5.c <IfModule mod_php5.c> DirectoryIndex index.php index.html </IfModule> <IfModule mod_php5.c> AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps </IfModule>
Ahogy befejeződött a művelet, a
PHP modul betöltéséhez
mindösszesen az apachectl
paranccsal
kell óvatosan újraindítanunk a
webszervert:
#
apachectl graceful
A PHP jövőbeni
frissítéseihez már nem lesz
szükségünk a make config
parancsra, mivel a korábban kiválasztott
OPTIONS
menün belüli
beállítasainkat a FreeBSD
Portgyűjteményéhez tartozó
keretrendszer automatikusan elmenti.
A PHP FreeBSD-ben megtalálható támogatása kifejezetten moduláris, ezért az alap telepítése igencsak korlátozott. A további elemek hozzáadásához a lang/php5-extensions portot tudjuk használni. A port egy menüvezérelt felületet nyújt a PHP különböző bővítményeinek telepítéséhez. Az egyes bővítményeket azonban a megfelelő portok használatával is fel tudjuk rakni.
Például PHP5 modulhoz
úgy tudunk támogatást adni a
MySQL adatbázis szerverhez,
ha telepítjük a
databases/php5-mysql
portot.
Miután telepítettünk egy bővítményt, az Apache szerverrel újra be kell töltetnünk a megváltozott beállításokat:
#
apachectl graceful
Ha kérdése van a FreeBSD-vel kapcsolatban, a
következő címre írhat (angolul):
<questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon:
<gabor@FreeBSD.org>.