اجرای همزمان IIS و Apachi روی یک سیستم

ارسال شده توسط حمیدرضا هاشمی‌نژاد | در برنامه نویسی-تحت وب | تاریخ ۱۲-۰۱-۱۳۸۹

۱

اجرای همزمان IIS  و Apachi تنها روی یک ویندوز (PHP , ASP ,ASP.net)

برای اینکه بتوانید همزمان روی یک ویندوز (مثلا ویندوز سرور) هم فایل های PHP و هم فایل های ASP.net را اجرا کنید نیاز دارید که هم IIS و هم Apache را نصب کنید ولی از آنجا که این دو سرویس هر دو برروی پورت ۸۰ کار می کنند نمی توانند همزمان با هم فعالیت کنند.

برای رفع این مشکل می توانید برای بازکردن صفحات به IIS یا Apachi بگید که مثلا یکی روی پورت ۸۰۰۰ برای وب گوش بدهد تا بتوانند کنار هم کارکنند. ولی برای این کار مثلا باید برای اجرا شدن فایل های PHP آدرس سایت را بدین صورت وارد کنید که زیاد پسندیده نیست.

http://www.tiuma.ir:8000

ولی میتوان خیلی راحت تر و با اندکی ابتکار و تجربه این کار را بهینه تر انجام دهیم.

طبق معمول سناریوی را مطرح می کنیم و در ادامه آن راه حل  را اجرا می کنیم:

فرض کنید یک ویندوز سرور ۲۰۰۳ داریم (البته نوع ویندوز مهم نیست) و میخواهیم کلیه هاست های شرکت را به داخل شرکت بیاوریم ولی موضوع مهم از این قرار است که بعضی از صفحات با Microsoft Visual Studio 2008 و ASP و ASP.NET طراحی شده و بعضی هم یا CMS بوده یا با PHP طراحی شده بودند و میخواهیم که برای این از دو سرور استفاده نکنیم چون نگهداری یک سیستم بهتر و آسان تر از نگهداری دو سیستم در شرایط سرور بودن است. خب پس از نصب ویندوز سرور روی کارت شبکه آن بجای تنظیم یک آی پی ولید باید دو آی پی از یک رنج اضافه کنید.برای مثال فرض کنید کل آی پی های ولید شما به صورت زیر باشد ۳٫۲٫۱٫۱  تا ۳٫۲٫۱٫۱۵ و ۳٫۲٫۱٫۱ روتر شما باشد.

تنظیمات به صورت زیر می شود

IP: 3.2.1.2

Subnet: 255.255.255.240

Default Gateway: 3.2.1.1

و سپس روی Advanced کلیک کنید و روی IP Tab کلید Add را کلیک کنید و یک آی پی دیگر در همان رنج مثلا ۳٫۲٫۱٫۳ را اضافه کنید.حال شما باید بتوانید از بیرون هر دو آی پی را پینگ کنید.اضافه کردن این دو آی پی به این دلیل است که به جای تغییر روی پورت برای تصمیم گیری برای IIS یا Xamp که زیاد مناسب نمی باشد تصمیم گیری روی IP انجام میگیردوبدین صورت که هر موقع سایت ها به آی پی ۳٫۲٫۱٫۲ اشاره کردند Xamp به پورت ۸۰ گوش می دهد و زمانی که آی پی ۳٫۲٫۱٫۳ وارد شد IIS به پکت های درخواست شده روی پورت ۸۰ جواب می دهد.

خب ابتدا یکی از(بالاترین) نسخه های Xamp را دانلود http://www.freedanload.com/XAMPP-1-7-3/ و روی سیستم نصب کنید .سپس کلیه سایت های خود را که با PHP نوشته شده اند را اجرا کنید. برای مثال سه سایت به نام های www.a.com و www.b.com و www.c.com و www.d.com داریم هر دو سایت اول باید با Xamp اجرا شوند و سایت سوم و چهارم باید با IIS اجرا شود یک نمونه کانفیگ برای بارگزاری چند دومین روی Xamp بدین صورت است . در درایوی که Xamp را نصب کردید به آدرس C:\xampp\apache\conf\extra بروید و فایل httpd-vhosts.conf را با NotePad ویرایش کنید.حال این موارد را به انتهای فایل ذکر شده اضافه کنید.

کلیه فایل های هر سایت در درایو D و در پوشه ای به نام همان سایت ذخیره شده است.

<VirtualHost *:80>

DocumentRoot “D:\a.com”

ServerName a.com

ServerAlias www.a.com

##ErrorLog “logs/dummy-host.localhost-error.log”

##CustomLog “logs/dummy-host.localhost-access.log” combined

<Directory “D:\a.com”>

Options Indexes FollowSymLinks

AllowOverride FileInfo

Order allow,deny

Allow from all

</Directory>

</VirtualHost>

######################################################

<VirtualHost *:80>

DocumentRoot “D:\b.com”

ServerName b.com

ServerAlias www.b.com

##ErrorLog “logs/dummy-host.localhost-error.log”

##CustomLog “logs/dummy-host.localhost-access.log” combined

<Directory “D:\b.com”>

Options Indexes FollowSymLinks

AllowOverride FileInfo

Order allow,deny

Allow from all

</Directory>

</VirtualHost>

خب پس از یکبار Stop ,Start کردن Xamp تا این قسمت باید بتونید هر دو سایت a.com و b.com را به راحتی بازکنید.لازم به ذکر است که باید طوری Dns های سایت a.com  و b.com را تنظیم کنید که با پینگ کردن آنها آی پی ۳٫۲٫۱٫۲ برگردانده شود.ولی برای سایت های ویندوزی (c.om) آی پی ۳٫۲٫۱٫۳ برگردانده شود.

خب برای اینکه Xamp را طوری کانفیگ کنیم که فقط در صورتی که آی پی ۳٫۲٫۱٫۲ بود به پورت ۸۰ گوش دهد باید به مسیر زیر بروید C:\xampp\apache\conf  رفته و فایل httpd.conf را ویرایش کنید سپس خط Listen 80 را به Listen 3.2.1.2:80 تغییر دهید.یکبار دیگر Xamp را Stop ,Start کنید باید همه چیز درست باشد و سایت های a.com و b.com به راحتی باز شود.

خب میریم سراغ نصب IIS ،بهتر است قبل از نصب IIS سرویس وب Xamp را Stop کنید .

پس از نصب IIS به صورت عادی باید تنظیمات زیر را انجام دهید .

برای تنظیم IIS فقط روی آی پی ۳٫۲٫۱٫۳ باید از برنامه ای کمکی به نام httpcfg.exe استفاده کنیم این برنامه را میتوانید به همراه دیگر ابزار های کمکی از سایت ماکروسافت به آدرس زیردریافت نمایید.فایل support.cab را دانلود کنید .

http://www.microsoft.com/downloads/details.aspx?FamilyID=96a35011-fd83-419d-939b-9a772ea2df90&displaylang=en#filelist

پس از دانلود کلیه فایل ها را در C:\Program Files و پوشه ای به نام Support Tools ساخته و کپی کنید سپس مراحل زیر را انجام دهید.

Start Menu -> Run -> Type Cmd [Enter]

cd \ [Enter]

cd Program Files [Enter]

cd Support Tools [Enter]

httpcfg set iplisten -i 3.2.1.3 [Enter]

net stop http /y [Enter] //to stop the HTTP service

net start w3svc [Enter] //to restart IIS services

همچنین برای اطمینان میتوانید از دستور httpcfg query iplisten استفاده کنید خروجی باید آی پی ۳٫۲٫۱٫۳  باشد.

در این مرحله میتوانید سرویس وب Xamp را هم فعال کنید می بینید که هر دو می توانند در کنار هم کار کنند ،برای تست می توانید در مرور گر خود آی پی ۳٫۲٫۱٫۲ راوارد کنید تا صفحه پیش فرض Xamp را ببنید یا آی پی ۳٫۲٫۱٫۳ را بزنید تا صفحه پیش فرض IIS را ببنید.

اجرای چند سایت روی یک آی پی (IP) ولید در IIS ویندوز

همچنین می توانید با استفاده از Host Header ها در IIS به راحتی چندین سایت را روی یک IP ولید بارگزاری کنید بدین صورت که ابتدا صفحه مدیریت IIS را بازکنید و برای ساختن دو سایت جدید مراحل زیر را انجام دهید.

Expand Server name

Right Click on Web Sites -> New -> Web Site

-> Next -> Description : c.com site

-> Next -> Host Header for this Web Site : www.c.com

-> Next -> Path : D:\c.com

-> Next -> Read ,Run Script -> Finish

Right Click on c.com below the Default Web Site -> Properties

Web Site Tab -> Advanced

-> Add -> TCP Port: 80

-> Host Header Value: c.com

شما میتونید همین دستورالعمل ها رابرای سایت d.com اعمال کنید

منابع استفاده شده :

http://www.strangework.com/2008/06/11/how-to-run-apache-http-server-and-iis-on-windows-server-2003/

http://blog.pengoworks.com/index.cfm/2007/10/29/Running-IIS-and-Apache-on-the-same-Windows-2003-server