E-mail
















 

Manitu Parancssora


A történet úgy kezdődött, hogy az Apple elguisította a méltán népszerű Apache webszerver programot egy Személyes Web Megosztás (Personal Web Sharing) gombra a Megosztás (Sharing) modulban, mindemellett eltitkolta számos lehetőségét. Lássuk, milyen alapvető beállításai vannak Mac OS X 10.3 alatt. Szükség lesz a UNIX tudásodra, a Terminal programra, a sudo parancsra és az Apache webszerver programra, szerezd be ezeket!

Az Apache általános vezérlőprogramja az "apachectl". A szerver elindításához az:
$ apachectl start
parancsot kell kiadni, a leállítás az:
$ apachectl stop
az újraindítás az:
$ apachectl graceful
paranccsal történik. A "graceful" kapcsoló használatakor megvárja, míg a nyitott kapcsolatok bezárásra kerülnek, és egy beállításfájl-ellenőrzést is végez. Ez akkor hasznos, ha valamit módosítunk a beállításfájlon, és utána újraindítjuk a webszervert, mert ellenőrzi, helyes volt-e a változtatásunk.

Alapesetben úgy van beállítva, hogy a Saját Mappád (Home Folder) Oldalak (Sites) mappájába tett oldalakat mutassa meg. A Saját Mappádnak a nevét könnyen lelesheted, ez a Saját Mappádnak (Home Folder) a neve, legyen pl. alma, utána bármely böngészőben megnézheted, pötyögd be a "localhost/~alma" sort! Egy Apple által írt demooldal töltődik be, ha nem helyeztél el saját oldalt a Sites mappádban, ami alapesetben csak statikus lehet.

Apache Ez előbb említett "localhost" név mindig a te gépedre hivatkozik, ha az IP címeket jobban kedveled, a 127.0.0.1 címet üsd be! A Mac OS X indításkor létrehoz egy virtuális hálózati kártyát lo0 névvel, ennek a hálózati kártyának a címe a "localhost", névfeloldás után a 127.0.0.1. Ezt az "ifconfig lo0" paranccsal is lekérdezheted. A névfeloldás azt jelenti, hogy az általad használt domain névből egy DNS szerver útján megkapod az IP címet, amelyen keresztül a böngésző meg tudja mutatni az oldalt.

Ez oké, mondhatod, hogy te eléred, de mi lesz a többiekkel? Amint bekapcsoltad az indiánt, a Sharing (Megosztás) ablakban lent megjelenik az oldaladnak a címe, amin elérhető vagy a világhálóról. Ha a számítógéped belső hálózatra van kapcsolva, és router vagy tűzfal állja útját az elérésnek, akkor beszélj a rendszergazdával a publikus IP címekről, a 80-as portról, amelyen keresztül a weboldal-szolgáltatás működik. Ha a megjelenített cím 192, 127 vagy 10-es számmal kezdődik, akkor mindenképp erről van szó.

A személyes webtárhelyed

Ha a demooldallal találkoztál először, olvasd végig, mert hasznos információkat tartalmaz! Persze ezt ki fogod törölni, mert kell a hely a saját oldaladnak, ami a Saját Mappádon belül (Home Folder) a Sites mappában található. A mappát böngészve találhatsz egy index.html oldalt, és egy Images mappát. Ezt kitörölve hozz létre egy tetszőleges szövegszerkesztő programban egy másik index.html oldalt a következőképpen:

<head>
<title>Web oldal</title>
</head>
<body>
<p align="center">Web oldal Apache szerveren.</p>
<p align="center"><strong>Árvíztűrő tükörfúrógép.</strong></p>
</body>
</html>


Ha Szövegszerkben (Text Edit) dolgozol, ügyelj arra, hogy sima text legyen, ne rakjon bele rich text formázást. A forrást ugyanitt megnyitni pedig csak úgy lehet, ha bejelölöd a Hagyd figyelmen kívül a rich text parancsokat (ignore rich text commands) jelölőnégyzetet a html fájl megnyitásánál. Ékezetes betűk használata esetén célszerű a Safari böngészőben a Beállításokban (Preferences), a Megjelenés (Appearance) fülön az Alapértelmezett Kódolást (Default Encoding) Central European (ISO Latin 2) kódolásra - a tesztelés után célszerű az eddig beállított kódolásra visszaállítani a Safari böngészőt, hogy más oldalak is helyesen jelenjenek meg -, a Szövegszerkben pedig szintúgy Central European (ISO Latin 2) kódolást állítani. Ha elmentetted, és frissíted az oldalt, az általad újraszerkesztett, de teljesen egyszerű oldal jelenik meg. De semmi szerveroldali okosság, nem tudsz CGI programokat a Sites mappádban elhelyezni, és PHP-t sem tudsz használni! Ezenfelül az intraneted szabadon nyitva áll az internet előtt.

A varázslat most kezdődik

Amit eddig elkészítettél az teljesen egyszerű, az oldal címe is egy ronda hosszú szöveg. Első lépésként adjunk valami szebb URL-t az oldalnak. Az URL általában az oldal karakterekkel megadott címe. Fent az index.html oldalt a Saját mappádon belülre helyezted, most a DocumentRoot mappába tegyél egy másolatot. A DocumentRoot az alapértelmezett szerverkönyvtár, ahonnan az oldalak kiszolgálásra kerülnek. Ez a /Library/Webserver/Documents mappa alapesetben, aminek ugyanúgy létezik bemutatkozó oldala, ha érdekel a http://localhost címet nézd meg egy böngészővel.

Lokalizáció vagy Tartalmi Egyeztetés

A /Library/Webserver/Documents mappát böngészve óhatatlanul az Apache másik nagyon hasznos tulajdonságába botlasz, a Tartalmi Egyeztetéshez. Attól függően, hogy a látogató operációs rendszerében milyen nyelvi sorrend van beállítva, mindig az adott nyelvű oldalt képes az Apache megjeleníteni. A sorrend módosítását a Nemzetközi (International) modulon, a Nyelvek (Languages) listában lehet elvégezni, alapesetben a Magyar nincsen hozzáadva, ezt külön meg kell tenni. A Safari tárból tölti a már egyszer látogatott oldalakat, az állításoknál érdemes mindig frissíteni, illetve a nyelvi beállítások csak a program újraindítása után lépnek életbe. A mappában lévő oldalak közül egy se végződik ".html"-re, mindegyik végén található egy néhány karakterből álló kiterjesztés, ami az adott oldal nyelvi tartalmára utal. Az ".en" végződés angol, a ".de" végződés német, a ".ru" az orosz nyelvi tartalmat jelöli és így tovább. Alapesetben a ".hu", mint magyar nyelvi tartalom nincs hozzáadva, illetve magyar nyelvű bemutatkozó oldal sincs a mappában.

Ehhez hozzá kell adni az adott nyelvet az Apache beállításaihoz, a fordítási információk mellett a beállítás fájl helyét a
$ httpd -V
paranccsal tudod lekérdezni. Ami itt különösen érdekes, azok a
-D SERVER_CONFIG_FILE="/etc/httpd/httpd.conf"
-D ACCESS_CONFIG_FILE="/etc/httpd/access.conf"
-D DEFAULT_ERRORLOG="/var/log/httpd/errorőlog"

fájlok, az utolsó nagy segítség a hibakeresésben, javításban és a felügyeletben. Az első fájlra van szükséged, használd a "pico" szerkesztőt.
$ sudo pico /etc/httpd/httpd.conf

Miután megadtad a jelszódat, az Apache beállítás dokumentumot látod. De hagy figyelmeztesselek, ne változtass meg semmit, ha csak nem tudod pontosan, hogy mit jelent! Nagyon jó leírások vannak a fájlon belül, ha valamit nem értesz, nézz utána az on-line oldalakon! Nyomd le a Ctrl+W kombinációt, majd a Keresés (Search) ablakba írd be "AddLanguage en", majd üss Entert!

Itt láthatóak a html végződések, ".en" például, és hogy ezt milyen nyelvnek ismerje fel. Ide kell beírnod a következőt, mondjuk a ".he" és az ".iso8859-8" közé:
AddLanguage hu .hu

Majd üss egy Ctrl+O kombinációt, majd Entert, végül a Ctrl+X kombinációval léphetsz ki a szerkesztőből! Még újra kell indítanunk az Apache szervert, hogy beolvassa a változtatásokat:
$ sudo apachectl graceful

Most már, ha a Magyar nyelv van legfelül a listában, és van ".hu" végződésű html oldal a leírások között, akkor a Safari azt az oldalt jeleníti meg. Ehhez a fenti oldalt kiegészítve akár saját oldalt is készíthetsz:

<head>
<title>Sikerült az Apache telepítés!</title>
</head>
<body>
<p align="center">Sikerült az Apache telepítés!</p>
<p align="center"><strong>Árvíztűrő tükörfúrógép.</strong></p>
<div align="center"><img src="apache_pb.gif" alt=""></div>
</body>
</html>


Fontos, hogy "index.html.hu" neve legyen.

A Tartalmi Egyeztetés előnyei pedig magától értetődőek. Általában a felhasználó operációs rendszere az anyanyelvére van beállítva, tehát esetedben a Magyar szerepel a lista tetején. Ha nincs nyelvi csomag telepítve, akkor is érdemes ezt a beállítást megtenned. Így az oldal meglátogatásakor az adott nyelvi tartalom fog megjelenni.

Mi is az a CGI?

A CGI (Common Gateway Interface) egy lehetőséget ad arra, hogy a webszerver kapcsolatot tartson külső tartalomgeneráló programokkal, így adatokat kaphatsz a felhasználótól, és testreszabott tartalmat szolgáltathatsz számára. A különböző feladatokra szkripteket helyezhetsz el a webszerveren, és a böngészőn keresztül futtathatod őket. A CGI szkriptek gyakran Perl nyelven íródnak - ami szintén megtalálható a Mac OS X rendszerben -, így a felhasználók adatbázisokat érhetnek el, interaktív űrlapokat használhatnak és így tovább.

Ahhoz, hogy le tudd ellenőrizni, hogy sikeres volt e a telepítés, nézd meg a beállításokat a beállításfájl beolvasásával, majd keress rá a "CGI" betűkre! Az első bejegyzés a:
LoadModule cgi_module libexec/httpd/mod_cgi.so

Ez azt jelenti, hogy a CGI modul alapesetben be van töltve. Ha újra kiadod a Vezérlő (Ctrl) és W, majd Enter kombinációt, továbbkeres a fájlban. Röviddel az előző bejegyzés után:
AddModule mod_cgi.c

A sok sor az Apache plug-inszerű bővíthetőségére utal. A webszervert különböző tulajdonságokkal vértezheted fel, vagy éppen a feleslegeseket kapcsolhatod ki, ha nincs rá szükséged. Ezeket moduloknak hívják, és "mod_" névvel kezdődnek, azok a sorok, amelyeket a "#" hashmark karakter előzi meg, figyelmen kívül vannak hagyva, inaktív modulok. Mivel a CGI modul nem inaktív, továbbkereshetünk. Hat keresés után (Mac OS X 10.3 alatt), a következőt találhatjuk:
ScriptAlias /cgi-bin/ "/Library/WebServer/CGI-Executables/"

A ScriptAlias mondja meg az Apache szervernek, hogy egy adott könyvtár félre van téve a CGI szkriptek számára, és melyik az a mappa, amelybe el lehet helyezni a CGI szkripteket. Ebben az esetben a http://localhost/cgi/-bin/ mappára lehet hivatkozni az oldalról, a szkripteket pedig a /Library/WebServer/CGI-Executables/ mappába kell belerakni. Az utána következő <Directory> blokkot most kihagyhatod, a következő találat azonban érdekes:
#AddHandler cgi-script .cgi

Ennek sornak az engedélyezése nélkül nem lehet bárhol CGI szkripteket futtatni, csak a ScriptAlias direktívával megadott helyeken, ott viszont minden fájl CGI szkriptként lesz végrehajtva. Ha máshova töltöd fel és futtatod, akkor szöveges fájlként kerül értelmezésre. Ha engedélyezed, minden ".cgi" végződésű fájl futtatásra kerül, bárhol legyen is a szkript, és bármilyen felhasználó futtathatja. Ez biztonsági szempontból fontos, hiszen ha bárhol futtathatóak lennének a CGI szkriptek, akkor egy anonim FTP loginnal is lehetséges lenne rosszindulatú CGI szkriptek feltöltése, és böngészőn keresztül történő futtatása. Így nem férnek hozzá a CGI szkriptjeidhez, és nem lehetséges ártalmas CGI szkriptek futtatása sem.

Mivel a CGI-Executables mappa üres, készítened kell egy CGI szkriptet. Elsőnek barangolj el a /CGI-Executables mappába:
$ cd /Library/WebServer/CGI-Executables/
Majd hozz létre egy test.cgi fájlt:
$ touch test.cgi
Nyisd meg a "pico" szerkesztővel:
$ pico test.cgi
majd írd bele a következőt:
#!/usr/bin/perl
print "Content-type: text/html\n\n";
foreach $key (keys %ENV) {
   print "$key --> $ENV{$key}";
}


A CGI a Perl fordítót kelti életre, a következő sor a fejléc, amely megmondja a böngészőnek, hogy egy html oldalt kap, a két újsor "\n" karakter zárja le a fejlécet, ami utána jön, az egy ciklus, amely a kéréskor átadott, illetve belső környezeti változók nevét és tartalmát írja ki már a törzsön belül. Befejezéshez üss egy Ctrl+O, Enter, majd Ctrl+X kombinációt, majd próbáld ki a http://localhost/cgi-bin/test.cgi címet egy böngészőben! Nem a kívánt eredmény fogad, hanem visít az Apache, hogy nincs jogod a művelethez. Mi lehet a gond? Nézzük meg a szerverlogokban! Fentebb megemlítettük, hogy az "error_log" kiemelt fontosságú, nézzük, mi áll benne:
$ sudo pico /var/log/httpd/error_log
[Fri Nov 19 16:53:39 2003] [error] [client 127.0.0.1] file permissions deny server execution: /Library/WebServer/CGI-Executables/test.cgi


Remélem, találsz egy hasonló sort az utolsó sorban. Azt mondja, hogy a fájl jogai nem teszik lehetővé a szerver általi végrehajtást. Ugye emlékszel a UNIX-ban használt jogokra? Nézzük meg, milyen jogokkal rendelkezik a test.cgi szkript:
$ sudo ls -la /Library/WebServer/CGI-Executables/test.cgi
-rw-r--r-- 1 root admin 142 21 Nov 01:46 /Library/WebServer/CGI-Executables/test.cgi


Nincs rajta futtathatósági jog senki számára. Az Apache "www" tulajdonosi névvel dolgozik, először állítsuk ezt be, majd adjunk az új tulajdonosnak futtathatósági jogot:
$ sudo chown www /Library/WebServer/CGI-Executables/test.cgi
$ sudo chmod u+x /Library/WebServer/CGI-Executables/test.cgi


Ezek után, frissítve az oldalt a kívánt változókat és értéküket láthatod. Ezekkel e CGI és Apache alapokkal már számos tartalommenedzselő rendszert telepíthetsz, egyikük a http://www.movabletype.org/ címen lakik. Ha kérdésed vagy problémád van távoli dolgokkal kapcsolatban, írj bátran!


Mátyás Ferenc Farkas


A lap tetejére