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.
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
make
make install
Ezzel bekerült a httpd.conf-ba a
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:
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:
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:
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:
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:
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:
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:
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
- Apache Modul mod_fcgid
- RADME-FCGID ( Ez a letöltött modul könyvtárában is megtalálható )