استفاده از fastCGI بر روی برنامه های php در iis7

IIs از قابلیت محبوبی همچون fastCGI که یک روش کارآمد و قابل اعتماد است پشتیبانی می کند. FastCGI یک جایگزین مناسب با کارایی بالا برای پروتکل CGI است که یک روش استاندارد برای ارتباط برنامه های خارجی با وب سرور زمان انتشار اولین نسخه iis بوده است.
برنامه های CGI فایل های اجرایی هستند که توسط وب سرور بر روی سرور مجازی و یا سرور اختصاصی اجرا می شوند و خروجی آنها برای کاربر روی صفحه وب نمایش داده می شود. CGI یکی از اولین روش ها برای ایجاد صفحات پویا به حساب می آید.
FastCGI یک واسط با تمام قابلیت های CGI است افزون براین که FastCGI برخلاف CGI که در آن برای هر درخواست یک پروسه جداگانه توسط وب سرور آغاز می شود در FastCGI یک پروسه در پس زمینه تمام مدت آماده پاسخگویی به درخواست ها باقی مانده است به این ترتیب دیگر نیازی به فراخوانی و آماده سازی مفسر در هر درخواست نخواهد بود وبه این ترتیب سرعت وب سرور بهبود می یابد.

فعال سازی FastCGI در IIs :

الف ) فعال سازی iis در ویندوز سرور 2008:
جهت فعال سازی iis در ویندوز سرور 2008 مسیر زیر را دنبال کنید.

Server Manager -> Roles -> Add Role Services

در صفحه Select Role Services کادر select CGI را انتخاب کنید در این کادر می توانید CGI و FastCGI را انتخاب کنید.

نصب و پیکربندی PHP :
توصیه می شود برای استفاده از FastCGI بر روی iis یک ساختار ایمن از php نصب شود زیرا FastCGI یک محیط اجرای مجازی را تضمین می کند و ساختارهای php بدون هیچ چک شدنی اجرا خواهند شد.

نصب php :

آخرین پکیچ زیپ شده نسخه php را می توانید از مسیر زیر دانلود کنید.

http://www.php.net/downloads.php.

فایل زیپ را در مسیر پیشنهادی خود باز کنید برای مثال در مسیر C:/php و فایل php.ini-recommended رابه php.ini تغییر نام دهید.
فایل php.ini را باز کنید و تغییرات زیر را در آن عمال کنید.

• Fastcgi.impersonate را بر روی 1 تنظیم کنید. FastCGI تحت iis می تواند از توانایی شناسایی جعل هویت شناسه های امنیتی مشتریان پشتیبانی کند. این قابلیت به iis اجازه می دهد تا زمینه امنیتی را برای اجرای دستورات تحت عملکرد خود تعریف کند.

• cgi.fix_pathinfo را برروی 1 تنظیم کنید. cgi.fix_pathinfo مسیر حقیقی PATH_INFO/PATH_TRANSLATED را برای پشتیبانی از CGI تهیه می کند. قبلا رفتار php به این شکل بود که مسیر PATH_TRANSLATED را بر روی SCRIPT_FILENAME تنظیم می نمود و PATH_INFO/ تعریف نمی شد. تنظیم این مقدار بر روی 1 باعث می شود phpCGI مسیرهای خود را بر اساس مشخصات CGI تعریف کند.

• مقدار cgi.force_redirect را بر روی صفر تنظیم کنید.

• مقدار open_basedir را برای اشاره به پوشه یا مسیری از شبکه که در آن محتوایی مربوط به وب سایت ها قرار داده شده است، تنظیم کنید.

• مقدار extension_dir را برروی نقطه ای که extension های php شما در انجا قرار دارد، تنظیم کنید. برای مثال به طور معمول برای php ورژن 5.2.x مسیر به صورت زیر تعریف خواهد شد.

extension_dir = “./ext”

• Extension های مورد نیاز خود را در خطوط جداگانه تعریف کنید برای مثال :

extension=php_mssql.dll
extension=php_mysql.dll

• جهت تایید نصب صحیح php خط فرمان (command prompt)خود را باز کنید و دستور زیر را در ان اجرا کنید.

C:\PHP>php –info

• اگر php به درستی نصب شده باشد و تمام وبستگی های آن در سیستم موجود باشد این دستور اطلاعات پیکریندی فعلی php را نمایش خواهد داد.

 

پیکربندی iis برای مدیریت درخواست های php:

برای iis مربوط به هاست های که از برنامه های php استفاده می کنند لازم است شما یک handler Mapping اضافه کنید تا به iis بگوید تمام پروتکل های مربوط به php را به ساختار مورد نظر مربوط به fastCGI منتقل کند.

پیکربندی iis برای مدیریت در خواست های php با استفاده از مدیریت iis :

1- Iis manager را باز کنید و در سطح سرور دابل کلیک کنید برروی گزینه handler mapping مطابق تصویر زیر


2- در پنجره Actions روی Add module mapping کلیک کنید در کادر محاورهای add module map تنظیمات پیکربندی را به صورت زیر انجام دهید.
• Request path: *.php
• Module: FastCgiModule
• Executable: “C:[Path to your PHP installation]\php-cgi.exe”
• Name: PHP via FastCGI

3- سپس برروی دکمه ok کلیک کنید.

4- در پنجره باز شده برروی yes کلیک کنید تا fasCGI اجازه استفاده از handler mapping را داشته باشد .

 

5- برای اطمینان از ایجاد صحیح handler mapping کد زیر را در مسیر C:\inetpub\wwwroot در فایل phpinfo.php قرار دهید.

<?php phpinfo(); ?>

6- یک مرورگر بازکنید و به لینک http://localhost/phpinfo.php بروید اگر همه چیز به درستی تنظیم شده باشد صفحه استاندارد اطلاعات php را مشاهده خواهید کرد.

نکته : اگر FastCgiModule را در ماژول ها مشاهده نمی کنید این مورد یاد در لیست ماژول ها اضافه نشده و یا فعال نیست برای بررسی اینکه آیا ماژول FastCGI ثبت شده است یا خیر فایل پیکربندی iis را درمسیر زیر باز کنید.

%windir%\windows\system32\config\applicationHost.config

حال بررسی کنید خط زیر در بخش globalModules>> وجود داشته باشد.

add name=”FastCgiModule” image=”%windir%\System32\inetsrv\iisfcgi.dll” />

در همین فایل همچنین بررسی کنید که ماژول FastCGI به بخش <modules> اضافه شده باشد.

>add name=”FastCgiModule” />

پیکربندی iis برای مدیریت در خواست هایphp با استفاده از خط فرمان:

مراحل بالا را نیز می توانید با استفاده از دستورات خط فرمان cmd کامل کنید.
1- ایجاد پرسه های fastCGI با اجرای دستور زیر در خط فرمان

C:\>%windir%\system32\inetsrv\appcmd set config /section:system.webServer/fastCGI /+[fullPath=’c:\{php_folder}\php-cgi.exe’]

2- Handler Mapping را با دستور زیر ایجاد کنید.

C:\>%windir%\system32\inetsrv\appcmd set config /section:system.webServer/handlers /+[name=’PHP_via_FastCGI’,path=’*.php’,verb=’*’,modules=’FastCgiModule’,scriptProcessor=’c:\{php_folder}\php-cgi.exe’,resourceType=’Unspecified’]

نکته :
اگر شما از نسخه php 4.x برروی سرور مجازی خود استفاده می کنید می توانید از php.exe بجایی php-cgi.exe استفاده کنید

مطالب مرتبط

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *