Tartalomjegyzék

  1. Bevezetés
  2. Hosztnév beállítása
  3. Az Apache és a PHP telepítése
  4. Az Apache konfigurálása PHP CGI-hez
  5. Az itk üzenettovábbító modul engedélyezése

Bevezetés

Az Apache HTTP szervereknél PHP szkriptek futtatásához a legtöbb esetben javasoljuk a mod_php modul használatát. Ez beágyazza a PHP értelmezőt a webszerver folyamatába, ezzel egyszerűvé téve a PHP alkalmazások futtatását.

Habár a beágyazott értelmező használata is kihívásokkal járhat: amikor a PHP értelmező webszerverfolyamatokba van beágyazva, a PHP szkriptek a webszerver felhasználója által kerülnek elvégzésre. Kisebb telepítések esetében ez teljesen elfogadható, de nagyobb telepítések és folyamatok esetében biztonsági kockázatok merülhetnek fel.

Az Apache itk üzenettovábbító modulja lehetővé teszi, hogy felhasználói folyamatok alatt Apache folyamatokat futtassunk egy virtuális szintű hosztbeállítással, azonban ez nem kompatibilis a beágyazott értelmezővel. Az itk modul CGI folyamatként kompatibilis a PHP-vel.

Tapasztalataink szerint a mod_php nem kompatibilis a mod_rails -zel vagy a Phusion Passenger Ruby on Rails módszerével. Ezekben az esetekben, ha PHP-t és Rails alkalmazásokat szeretnénk futtatni egyszerre az Apache-ban, akkor PHP szkripteket kell CGI folyamatokként futtatnunk, a lejjebb leírt módszer alapján. Amennyiben újak vagyunk a Linux szerverek adminisztrálásának világában, úgy ajánlatos előtte egy kezdőknek szóló cikket elolvasnunk a témát illetően, és utána visszatérni erre a cikkre.

Hosztnév beállítása

Mielőtt elkezdenénk telepíteni és beállítani a cikkben felsorolt komponenseket, előtte bizonyosodjunk meg róla, hogy megfelelően beállítottuk a hosztnevet.

Ezt a következőképpen tehetjük meg:

1 hostname
2 hostname -f 

Az első parancs a rövid hosztnevet mutatja, a második pedig a teljes, minősített domain nevet. (Fully Qualified Domain Name=FQDN).

Az Apache és a PHP telepítése

A következő paranccsal bizonyosodjunk meg róla, hogy csomagjaink és telepített programjaink frissítve vannak:

1 apt-get update
2 apt-get upgrade --show-upgraded 

Amennyiben már telepítettük az Apache HTTP szervert, úgy a következő parancsot írjuk be az Apache-hoz tartozó csomagok telepítéséhez:

1 apt-get install apache2

Most már lehet konfigurálni a virtuális hosztingot szerverünk igényeinek megfelelően.

Ahhoz, hogy installáljuk a PHP CGI binárisokat, írjuk be a következő parancsot:

1apt-get install php5-cgi

Amikor a folyamat befejeződik, konfigurálhatjuk az Apache-ot, hogy a PHP szkripteket a CGI folyamatoknak adja át, ami majd megjeleníti ezeket a szkripteket.

Az Apache konfigurálása PHP CGI-hez

Ahhoz, hogy beállíthassuk, hogy az Apache PHP-CGI-t használjon Debian rendszereken, ahhoz engedélyeznünk kell a mod_actions modult. Ezt a következő paranccsal tehetjük meg:

1 a2enmod actions

A szükséges direktívákat bárhol beállíthatjuk az Apache konfigurációs fáján. Javasoljuk egy php-cgi.conf fájl létrehozását az Apache conf.d/ könyvtárában. Ezt követően a változókat is itt állítsuk be. A Debian rendszerekhez ez a könyvtár az /etc/apache2/donf.d/ elérési úton található. A másik módszer szerint választhatjuk az /etc/apache2/httpd.conf fájlban való elhelyezést is. A helytől függetlenül a releváns beállítások a következők:

Apache Configuration Block (Apache konfigurációs blokk)
1 ScriptAlias /local-bin /usr/bin
2 AddHandler application/x-httpd-php5 php
3 Action application/x-httpd-php5 /local-bin/php-cgi 

Ebben a példában a php-cgi bináris elérési útja /usr/bin/php-cgi. Minden fájl a php kiterjesztéssel lesz továbbítva a PHP CGI binárishoz.

Ezeket a konfigurációs direktívákat opcionálisan egy virtuális hoszting blokkba is beletehetjük. Amennyiben nincs a mod_php telepítve vagy engedélyezve, úgy használhatjuk arra is, hogy meghatározott virtuális hosztok számára szelektíven engedélyezzük a PHP-t.

Amennyiben a telepítésünk több verzióját kívánja meg a PHP-nek, akkor meghatározhatjuk virtuális hosztok kezelői számára a meghatározott útvonalat a php-cgi különböző verzióihoz.

A PHP által futtatható CGI konfigurálási fájlja az /etc/php5/cgi/php.ini elérési helyen található. Ezt a fájlt átalakíthatjuk telepítésünknek megfelelően:

/etc/php5/cgi/php.ini
1 error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR
2 display_errors = Off
3 log_errors = On
4 error_log = /var/log/php.log
5 max_execution_time = 30
6 memory_limit = 64M
7 register_globals = Off 

Amennyiben a PHP-ben MySQL támogatásra van szükségünk, akkor telepítenünk kell a php5-mysql csomagot a következő paranccsal:

1 apt-get install php5-mysql

Amikor a php-cgi konfigurálása készen van, akkor biztonságosan engedélyezhetjük az itk üzenettovábbító modult az Apache-ban. Az itk-hoz tartozó telepítő folyamat újra fogja indítani az Apache-ot. Ha a PHP CGI alapértelmezett vagy már meglévő üzenettovábbító modulját kívánjuk használni, akkor indítsuk újra az Apache-ot a következő paranccsal:

1 /etc/init.d/apache2 restart

Az itk üzenettovábbító modul engedélyezése

Az Apache alapkonfigurációja egy worker nevű üzenettovábbító modult alkalmaz, ami végrehajtási szálat használ a HTTP kérések hatékony kezelésére. Egy alternatív PMP a prefork, ami nem használ végrehajtási szálat és kompatibilis a nem végrehajtási szál-biztos könyvtárakkal is. A worker és prefork moduloknak is alapfeltétele, hogy a kéréseket egy bizonyos engedélyekkel rendelkező felhasználó által futtatott folyamatként kezelje. A Debian rendszerek esetében az Apache folyamatok a www-data felhasználó alatt futnak.

Ez nem feltétlenül ideális abban az esetben, ha a szerverünkön több felhasználó futtat nyilvánosan elérhető szkripteket. Ezekben az esetekben nem árt meghatározott felhasználói fiókokba körültekintően elkülönítenünk a virtuális hosztokat egy alternatív üzenettovábbító modul használatával, amit itk-nak vagy mpm-itk-nak nevezünk.

Funkcióját tekintve az mpm-itk elég hasonló a prefork-hoz, de az itk fel tudja dolgozni a kéréseket az összes virtuális hoszthoz egy meghatározott felhasználói fiók alatt. Ez hasznos lehet olyan szituációkban, ahol olyan különféle oldalak hosztjai vagyunk, amelyeket izoláltan kell kezelnünk.

Kezdjük az mpm-itk modul telepítésével:

1 apt-get install apache2-mpm-itk

Most, az oldalunk <VirtualHost> bejegyzéséhez adjuk hozzá a következő alblokkot: (Az oldalspecifikus fájlokat az /etc/apache2/sites-available/ elérési helyen találhatjuk meg)

Apache Virtual Hosting Configuration Block
1 <IfModule mpm_itk_module>
2 AssignUserId webeditor webgroup
3 </IfModule> 

Ebben a példában a webeditor a szóban forgó oldal felhasználója és a webgroup a neve a felhasználók azon csoportjának, akik a webszerverhez kapcsolódó fájlokat és folyamatokat birtokolják ezen hoszt esetében.

Emlékezzünk rá, hogy felhasználókat és csoportokat a useradd paranccsal tudunk hozzáadni.