حل مشکل غیر فعال شدن سرویس Apache در Wamp
حل مشکل غیر فعال شدن وب سرور Apache در Wamp

برنامه WAMPSERVER یک محیط توسعه وب سازگار با ویندوز (Windows web development environment) است که به شما امکان ساخت نرم افزارهای کاربردی تحت وب مبتنی بر وب سرور آپاچی، سیستم مدیریت پایگاه داده MySQL و زبان PHP را ارائه می کند و یکی از بهترین نرم افزارهای مورد استفاده توسعه دهندگان وب بر اساس زبان PHP می باشد. ومپ سرور دو سرویس اصلی را بر روی سیستم نصب و اجرا می کند. 1- سرویس وب سرور آپاچی 2- سرویس سیستم پایگاه داده MySQL و برای نمایش وضعیت این سیستم ها از یک مکانیزم جالب و ساده استفاده می کند بطوری که برای هر وضعیت آیکون ومپ سرور در قسمت اعلانات ویندوز (Notification) به یک رنگ خاص نمایش داده می شود که عبارتند از:

- رنگ سبز: هر دو سرویس Apache و MySQL در حال اجرا هستند.
- رنگ نارنجی: یکی از سرویس های Apache و MySQL در حال اجرا و دیگری غیرفعال است.
- رنگ قرمز: هر دو سرویس Apache و MySQL غیر فعال هستند و مشکلی در اجرای آنها وجود دارد.
در هنگام اجرای ومپ سرور ابتدا رنگ آیکون آن قرمز بوده و بعد نارنجی شده و در آخر هم با اجرای هر دو سرویس آن سبز رنگ می شود. اگر شما هم از این نرم افزار استفاد می کنید ممکن است با مشکل غیر فعال شدن سرویس های آن بویژه سرویس وب سرور Apache مواجه شوید. یکی از مهمترین دلایل از کار افتادن سرویس ها و اجرا نشدن آنها اشغال شدن درگاه (Port) مورد نیاز آنها بوسیله یک نرم افزار دیگر است، تمامی وب سرورها بصورت پیش فرض جوری تنظیم شده اند که برای اجرای سرویس های خود از پورت 80 استفاده کنند. آپاچی هم از این قاعده مستثنی نیست. حال اگر این پورت توسط برنامه ای دیگر اشغال شود Apache امکان اجرای خود را پیدا نخواهد کرد و رنگ ومپ سرور در چنین حالتی نارنجی باقی می ماند و سبز نمی شود.
راه حل اول: آزاد کردن پورت 80
از مهمترین برنامه هایی که باعث اشغال پورت 80 می شوند می توان به موارد زیر اشاره کرد:
- سرویس SQL Server Reporting Services
- سرویس Web Deployment Agent Service
- سرویس World Wide Web Publishing Service مربوط به وب سرور IIS
- نرم افزار گفتگوی اینترنتی اسکایپ (Skype)

برای آزاد کردن پورت 80 باید سرویس های مرتبط با موارد ذکر شده متوقف شوند و حالت اجرای آنها به حالت دستی Manual تغییر کند تا از اجرای خودکار آنها در زمان روشن شدن سیستم جلوگیری به عمل آید. بدین منظور باید کنسول سرویس های ویندوز را باز کنید، برای این کار می توانید از روش های زیر اقدام کنید:
Control Panel → System and Security → Administrative Tools → Services Run → Services
بعد از باز شدن کنسول Services کافی است عملیات زیر را انجام دهید:
- سرویس ها را پیدا کرده و بر روی هر کدام دوبار کلیک کنید تا کادر تنظیمات (Properties) آنها نمایش داده شود
- در کادر تنظیمات در زبانه general که زبانه (تب) اول می باشد به دنبال گزینه Startup Type بگردید. گزینه Startup Type خود دارای 4 گزینه زیر است که باید در اینجا گزینه دستی (manual) را انتخاب کنید.
- Automatic: این گزینه باعث می شود تا سرویس در هنگام راه اندازی سیستم و بارگذاری سیستم عامل (بوت شدن) راه اندازی و اجرا شود.
- Automatic Delayed start: در این حالت سرویس پس اتمام عملیات راه اندازی سیستم و بارگذاری سیستم عامل (با تاخیر) راه اندازی می شود. از این گزینه بیشتر در مواقعی استفاده می شود که کاربر بخواهد از هرگونه تداخل در استفاده از منابع سخت افزاری و نرم افزاری بین سرویس ها و برنامه ها جلوگیری کند و یا بخواهد فرآیند راه اندازی اولیه سیستم را سرعت ببخشد.
- Manual: انتخاب این گزینه باعث می شود تا سرویس در هنگام بوت شدن سیستم (راه اندازی اولیه) و بارگذاری سیستم عامل اجرا نگردد ولی امکان این که بعداً توسط یک سرویس یا برنامه دیگر فراخوانی و اجرا شود میسر است.
- Disable: این گزینه اگر انتخاب شود نه تنها سرویس در هنگام راه اندازی سیستم و بارگذاری سیستم عامل (لود شدن) اجرا نمیشود بلکه حتی در بعد از این زمان هم امکان فراخوانی آن توسط سرویس ها یا برنامه های دیگر نیز میسر نخواهد بود و سرویس بطور کلی غیر فعال می گردد.
- پس از انتخاب گزینه Manual برای Startup Type تنظیمات را ذخیره کنید.
- برای این که تنظیمات اعمال گردد می توانید سیستم را راه اندازی (ریستارت) کنید. ویا خود بصورت دستی از همان کار تنظیمات سرویس و یا با راست کلیک بروی نام سرویس گزینه Stop را برای توقف سرویس های مذکور انجام دهید تا پورت 80 آزاد شده و سرویس Apache بتواند آن را در اختیار بگیرد.
راه حل دوم: تنظیم اجرای آپاچی بر روی پورتی غیر از پورت 80
آپاچی در هنگام راه اندازی تمامی تنظیمات مورد نیاز برای اجرا شدن را از فایل تنظیمات خود با نام httpd.conf که در مسیری مثل مسیر زیر (با فرض اینکه ومپ سرور در درایو C نصب شده باشد) ذخیره شده است می خواند و به کار می بندد:
C:\wamp\bin\apache\apache2.4.9\conf\httpd.conf
درهر صورت فایل httpd.conf در درون پوشه conf در مسیر ریشه پوشه آپاچی واقع شده است. دراین فایل دایرکتیوهایی (directives) بصورت متنی ذخیره شده اند که شرایط اجرا و تنظیمات را برای آپاچی مشخص می کنند.
یکی از دایرکتیوهای مهم که پورت دریافت درخواست های http را برای آپاچی مشخص می کند و آپاچی به پورت مشخص شده در آن برای دریافت درخواست های Http گوش می دهد، دایرکتیو Listen (به معنای گوش دادن) می باشد. اگر فایل httpd.conf را باز کنید و کمی درون آن جستجو کنید حتماً دایرکتیو Listen را پیدا خواهید کرد و به خطوطی شبیه زیر بر خواهید خورد:
# Listen: Allows you to bind Apache to specific IP addresses and/or # ports, instead of the default. See also the <VirtualHost> # directive. # # Change this to Listen on specific IP addresses as shown below to # prevent Apache from glomming onto all bound IP addresses. # #Listen 12.34.56.78:80 Listen 0.0.0.0:80 Listen [::0]:80
در کد بالا خطوطی که با شارپ (#) شروع می شوند توضیح (Comment) بوده و توسط آپاچی در نظر گرفته نمی شوند. همانطور که مشاهده می کنید پورت پیش فرض 80 است و برای تغییر آن می توانید بجای 80 مثلاً 81 را جایگزین کنید. به مثال زیر دقت کنید:
# Listen: Allows you to bind Apache to specific IP addresses and/or # ports, instead of the default. See also the <VirtualHost> # directive. # # Change this to Listen on specific IP addresses as shown below to # prevent Apache from glomming onto all bound IP addresses. # #Listen 12.34.56.78:80 Listen 0.0.0.0:81 Listen [::0]:81
برای اعمال تغییرات باید سرویس آپاچی را راه اندازی مجدد (Reset) کنید. البته ناگفته نماند که با تغییر پورت پیش فرض دیگر نمی توانید با آدرس Localhost و یا آی پی 127.0.0.1 به صفحه اصلی ومپ سرور بروید و برای باز شدن آن باید در انتهای آدرسهای ذکر شده کاراکتر (:) و بعد آن شماره پورت جدید را وارد کنید تا صفحه اصلی ومپ باز شود. مثال:
localhost -> localhost:81 127.0.0.1 -> 127.0.0.1:81
موفق باشید.
44 comments