Monday, April 16, 2012

IIS7.5 PHP Fast-CGI


Ebben a cikkben szeretném megmutatni, hogy hogyan kell PHP-t telepíteni Windows-os környezetbe, IIS7.5-ös web-kiszolgálóra. A nagyobb biztonság, sebesség és stabilitás érdekében szeretnénk FastCGI-vel futtatni a PHP-t. A PHP non-thread-safe verzióját fogjuk használni, hogy miért ezt használjuk, és miért épp FastCGI-t, eről bővebben itt olvashatsz.


Lehetőségünk van a Microsoft Web Platform Installer -nevű eszközzel telepíteni, de elég sok hátránya van, és nem is biztos, hogy azt a verziót telepíti amire szükségünk lehet, így éles rendszereknél biztonságosabb, és átláthatóbb ha kézzel állítjuk be.

A cikkben a Windows Server 2008 R2 Enterprise verzióját használjuk, így nem a parancssoros lépéseket fogom megmutatni, de elég sok infó található arról is.

Feltételezem hogy az Olvasó rendelkezik már telepített Windows Server-rel, és IIS7.5-tel. A leírás a következő rendszereken működik: Windows Server: 2008/2008R2, **Windows: 7.

**Windows 7 operációs rendszerből legalább Professional változatra van szükségünk, hogy IIS-t telepíthessünk rá.


A telepítés


1. Server Manager -> Roles -> Add Role Services és itt válasszuk (telepítsük) a CGI-t.



2. Töltsük le a kívánt PHP verziót, abból is a non-thread safe -et  (ww.php.net/downloads), és csomagoljuk ki, pl a C:\PHP mappába. 

3. Nyissuk meg az IIS Manager-t, kattintsunk a szerverünkre, válasszuk a Handler Mappingot. 

4. A Handler Mapping -on belül válasszuk a jobb oldali sávban az Add Module Mapping-ot.

5. A képen látható módon állítsuk be a mappinget, majd az OK -ra kattintás után válaszoljunk IGEN-nel, hogy engedélyezze a PHP FastCGI-s futtatását (automatikusan létrehoz egy applications-t).

A beállítás

Végeztünk is a PHP és FastCGI beállításával IIS7.5-re. Ha friss rendszeren vagyunk, akkor valószínűleg 500-as hibával el fog szállni a rendszer (0x800736b1). Kétféle hiba okozhatja ezt:

1.Friss rendszeren valószínűleg nincs telepítve a Microsoft Visual C++ 2008 Redistributable Package (x86). Fontos megjegyezni, hogy függetlenül, hogy a szerverünk 64 bites, nekünk a 32 bites verzió kell!

2. Másik hiba az lehet, hogy a php nem találja a php.ini -t, pontosabban a windows mappában keresi, ezt a következőképpen orvosolhatjuk:

Nyissuk meg a regedit-et. HKEY_LOCAL_MACHINE -> SOFTWARE -> Wow6432Node. Itt jobklikk, new key. A key neve legyen PHP, és hozzunk létre benne egy sztringet, melynek neve legyen: iniFilePath és értéke legyen: c:\php
iniFilePath

Ha megvan: Start-> Control Panel -> Keresőbe advanced system settings -et írjuk be -> Environment Variables -> válasszuk ki a PATH-et és a végére írjuk hozzá a következőt: ;c:\php\ .
PATH
Ha minden lépést elvégeztünk, akkor többnyire a phpinfo() hívására megjelenik a phpinfo táblázat, melyből megtudhatjuk, hogy azt a php.ini -t töltötte-e be, amit szerettünk volna, illetve más infomrációkat a telepített PHP-ról.

Előfordulhat, hogy az újonnan létrehozott php mappában az IIS-nek nincs joga futtatni a php-fastcgi.exe-t (és a dll-eket), nézzük meg, javítsuk ki! Ha még mindig nem menne, nézzünk bele az IIS logjába (inetpub/logs mappában siteonként).

Alap beállításként a php.ini-ben engedélyezve van a log_errors( = On), ilyenkor ha bármilyen hiba van a php kódban, az alap 500 -as hibát fogja dobni a szerver (Internal Server Error), és így elég nehéz debugolni, ezért állítsuk Off -ra !

Ha sikerült megheggesztenünk, és minden tökéletesen működik, akkor hurrá, van egy magas rendelkezésre állású rendszerünk. Nyilván ha van lehetőségünk, PHP-t Linux-on fogunk futtatni, de lehet, hogy nincs elég erőforrásunk, így nem tudjuk az asp.net -es és PHP -s siteokat külön szerveren hosztolni, ilyenkor ez a legjobb megoldás.

No comments:

Post a Comment