PHP futtatása Apache mod_fcgid modullal

A mod_cgid modullal lehetőség nyílik a PHP-t úgy futtatni Apache szerveren, hogy nem olvassa minden kéréskor a php.ini-t, de továbbra is élvezhetjük a több PHP verzió futtatásának előnyeit. Ebben a fejezetben a mod_fcgid modul beüzemeléséről írok kizárólag olyan mértékben, ami szükséges virtuális hosztonkénti tetszőleges PHP futtatásához.

A fejezet elolvasása előtt mindenképp nézd meg az előkészületekről szóló részt: PHP CGI megoldások Apache webszerveren

Javaslom a mod_cgid modullal foglalkozó fejezet átolvasását is: PHP futtatása Apache mod_fcgid modullal

Modul beszerzése

Az mod_fcgid modult külön le kell tölteni az Apache oldaláról. Szerveren a parancssorban a jól bevált "wget"-tel töltsük le a "/opt/apache" könyvtárba és tömörítsük ki és lépjünk a kitömörített könyvtárba!

Igazából bárhova letölthetnénk. Nincs jelentősége. De az előző fejezetekben telepített webszerverek könyvtára pont megfelelő hely.

cd /opt/apache
wget http://xenia.sote.hu/ftp/mirrors/www.apache.org//httpd/mod_fcgid/mod_fcgid-2.3.7.tar.gz
tar xf mod_fcgid-2.3.7.tar.gz
cd mod_fcgid-2.3.7

Ez után le kell fordítani. A fordítás mindig a megfelelő Apache szerver "bin" könyvtárában levő "apxs" programra hivatkozással történik. Akár csak a PHP telepítésénél volt. A módszer kicsit mégis változik.

Apache 2.4-ben

APXS=/opt/apache/2.4/bin/apxs ./configure.apxs
make
make install

Ezzel bekerült a httpd.conf-ba a

LoadModule fcgid_module modules/mod_fcgid.so

sor. Így már csak a virtuális hosztokat kell felkészíteni az új megoldásra.

PHP 5.4.14-ben

A virtuális hoszt definiciójába bekerül egy "FilesMatch" blokk, hogy az abba írt utasításaink csak a php fájlokra vonatkozhassanak. Meg kell mondani az Apache-nak, hogy ezeket a fájlokat a mod_fcgid modullal szolgálja ki. Tehát egy új kezelőt ( handler ) kell beállítani, valamint egy új opciót is engedélyezni kell a CGI-ként való futtatáshoz.

Ami még lényeges, hogy a mod_cgid modul esetén létrehozott ScriptAlias itt nem működik. A cgi-bin könyvtárra közvetlenül kell hivatkozni.

Fájl megnyitása:

nano /opt/apche/2.4/conf/extra/vhosts/002-p5414.a24.vm1.conf

A <Directory> sor elé írandó tartalom:

<FilesMatch "\.php$">
   SetHandler fcgid-script
   Options +ExecCGI
   FcgidWrapper /var/www/cgi-bin/php-5414
</FilesMatch>

Ha valaki a mod_cgid modult használta eddig, az "Action"-nel kezdődő sort törölnie kell vagy megjegyzésbe tenni.

PHP 5.3.24-ben

Akár az előző esetben.

Fájl megnyitása:

nano /opt/apche/2.4/conf/extra/vhosts/003-p5324.a24.vm1.conf

A <Directory> sor elé írandó tartalom:

<FilesMatch "\.php$">
   SetHandler fcgid-script
   Options +ExecCGI
   FcgidWrapper /var/www/cgi-bin/php-5324
</FilesMatch>

Ha valaki a mod_cgid modult használta eddig, az "Action"-nel kezdődő sort törölnie kell vagy megjegyzésbe tenni.

PHP 5.2-17-ben

Harmadszor is ugyanaz a módszer, mint az előző két verzióban:

Fájl megnyitása:

nano /opt/apche/2.4/conf/extra/vhosts/004-p5217.a24.vm1.conf

A <Directory> sor elé írandó tartalom:

<FilesMatch "\.php$">
   SetHandler fcgid-script
   Options +ExecCGI
   FcgidWrapper /var/www/cgi-bin/php-5217
</FilesMatch>

Ha valaki a mod_cgid modult használta eddig, az "Action"-nel kezdődő sort törölnie kell vagy megjegyzésbe tenni.

Tesztelés

Ne felejtsük el újraindítani az Apache-ot a szerverbeállítások módosítása miatt!

/opt/apache/2.4/bin/apachectl restart

Vagy elindítani, ha még nem futott

/opt/apache/2.4/bin/apachectl start

Ha az újraindítás után is működik a PHP, akkor mindent jól csináltunk.

Apache 2.2-ben

Töröljük az előző make eredményét:

make clean

Majd pedig:

APXS=/opt/apache/2.2/bin/apxs ./configure.apxs
make
make install

Majd a virtuális hosztokat kell felkészíteni az új megoldásra.

PHP 5.4.14-ben

Fájl megnyitása:

nano /opt/apche/2.2/conf/extra/vhosts/002-p5414.a22.vm1.conf

A <Directory> sor elé írandó tartalom:

<FilesMatch "\.php$">
   SetHandler fcgid-script
   Options +ExecCGI
   FcgidWrapper /var/www/cgi-bin/php-5414
</FilesMatch>

Ha valaki a mod_cgid modult használta eddig, az "Action"-nel kezdődő sort törölnie kell vagy megjegyzésbe tenni.

PHP 5.3.24-ben

Akár az előző esetben.

Fájl megnyitása:

nano /opt/apche/2.2/conf/extra/vhosts/003-p5324.a22.vm1.conf

A <Directory> sor elé írandó tartalom:

<FilesMatch "\.php$">
   SetHandler fcgid-script
   Options +ExecCGI
   FcgidWrapper /var/www/cgi-bin/php-5324
</FilesMatch>

Ha valaki a mod_cgid modult használta eddig, az "Action"-nel kezdődő sort törölnie kell vagy megjegyzésbe tenni.

PHP 5.2-17-ben

Fájl megnyitása:

nano /opt/apche/2.2/conf/extra/vhosts/004-p5217.a22.vm1.conf

A <Directory> sor elé írandó tartalom:

<FilesMatch "\.php$">
   SetHandler fcgid-script
   Options +ExecCGI
   FcgidWrapper /var/www/cgi-bin/php-5217
</FilesMatch>

Ha valaki a mod_cgid modult használta eddig, az "Action"-nel kezdődő sort törölnie kell vagy megjegyzésbe tenni.

Tesztelés

Ne felejtsük el újraindítani az Apache-ot a szerverbeállítások módosítása miatt!

/opt/apache/2.2/bin/apachectl restart

Vagy elindítani, ha még nem futott

/opt/apache/2.2/bin/apachectl start

Ha az újraindítás után is működik a PHP, akkor mindent jól csináltunk.

Megjegyzések

A mod_cgid modul használatánál könnyedén változtathattuk a php.ini beállításait. A szerver újraindítása nélkül érvénybe léptek. Ebben az esetben ez már nem igaz. Újra kell indítani a szervert egy-egy módosítás után. A ".user.ini" fájlok viszont továbbra is használhatók újraindítás nélkül, ám a user_ini.cache_ttl = 300 alapbeállítás miatt csak 5 percenként frissül, ha ezt nem definiáljuk felül.

Én elmentem ezt a virtuális gépet is "wtk-vm1-v7-fcgid" néven. Nem muszáj így menteni. Én azért teszem a végére az fcgid-t és tartom meg a verziószámot, hogy ezzel az alternatív lehetőséget jelezzem. Ugyanis a cgid-vel is azonos eredményt érhettünk el.

Források

Javasolt olvasmány

Kategóriák: 
Megosztás/Mentés