جدول محتوایی
در این آموزش چندین دستور اصلی برای عیب یابی ارورهای آپاچی معرفی و نحوه استفاده از آن ها را توضیح دادیم.
بخوانید: آموزش حذف ویندوز 11
عیب یابی خطاهای رایج آپاچی
سه دستور اصلی و مجموعهای از مکانهای گزارش رایج وجود دارد که میتوانید از آنها برای شروع عیبیابی خطاهای آپاچی استفاده کنید. به طور کلی، زمانی که در حال عیبیابی آپاچی هستید، از این دستورات به ترتیبی که در اینجا نشان داده شده است استفاده میکنید و سپس فایلهای گزارش را برای دادههای تشخیصی خاص بررسی میکنید.
دستوراتی که معمولاً برای عیب یابی آپاچی در اکثر توزیع های لینوکس استفاده می کنید عبارتند از:
systemctl – برای کنترل و تعامل با سرویس های لینوکس از طریق مدیر سرویس systemd استفاده می شود.
journalctl – برای پرس و جو و مشاهده گزارش هایی که توسط systemd تولید می شوند استفاده می شود.
apachectl – هنگام عیب یابی، از این دستور برای بررسی تنظیمات آپاچی استفاده می شود.
این دستورات، نحوه استفاده از آنها و مکانهای گزارش آپاچی که در آن میتوانید اطلاعات بیشتری درباره خطاها پیدا کنید، در بخشهای زیر با جزئیات بیشتر توضیح داده شدهاند.
لطفاً توجه داشته باشید: در سیستمهای Debian و Ubuntu، نام سرویس و فرآیند Apache apache2 است، در حالی که در CentOS، Fedora و سایر سیستمهای مشتق شده از RedHat، نام سرویس و فرآیند Apache httpd است. جدا از تفاوت بین نام سرویس و فرآیند در حال اجرا، شروع، توقف و بررسی وضعیت آپاچی و همچنین گزارشها با journalctl باید در هر سیستم لینوکسی که از systemd برای مدیریت سرویس آپاچی استفاده میکند، یکسان عمل کند. حتما از نام صحیح برای توزیع لینوکس خود استفاده کنید.
برای عیب یابی خطاهای رایج آپاچی با استفاده از مدیر سرویس systemd، اولین قدم این است که وضعیت فرآیندهای آپاچی را در سیستم خود بررسی کنید. دستورات systemctl زیر سیستم را برای وضعیت فرآیندهای آپاچی پرس و جو می کند.
در سیستم های اوبونتو و دبیان اجرا می شود:
sudo systemctl status apache2.service -l --no-pager
پرچم -l تضمین می کند که خروجی کوتاه یا بیضی نمی شود. پرچم –no-pager مطمئن میشود که خروجی مستقیماً به ترمینال شما میرود بدون اینکه برای مشاهده آن نیاز به تعاملی باشد. شما باید خروجی های زیر را دریافت کنید:
Output
برای بررسی فرآیند Apache در سیستمهای CentOS و Fedora اجرا کنید:
sudo systemctl status httpd.service -l --no-pager
Output
در هر صورت، خط Active را در خروجی یادداشت کنید. اگر سرور آپاچی شما همانطور که در مثالهای قبلی مشخص شد فعال (در حال اجرا) را نشان نمیدهد، اما انتظار دارید که باید باشد، ممکن است خطایی وجود داشته باشد. معمولاً اگر مشکلی وجود داشته باشد، خطی مانند شکل زیر در خروجی خود خواهید داشت (به قسمت ناموفق برجسته شده توجه کنید):
نمونه خروجی خطا:
Active: failed (Result: exit-code) since Tue 2020-07-14 20:01:29 UTC; 1s ago
اگر مشکلی در فرآیند یا پیکربندی آپاچی شما وجود دارد، می توانید با استفاده از دستور journalctl آن را بیشتر عیب یابی کنید.
برای بررسی لاگ های systemd برای آپاچی، می توانید از دستور journalctl استفاده کنید. گزارش های systemd برای آپاچی معمولا نشان می دهد که آیا مشکلی در راه اندازی یا مدیریت فرآیند آپاچی وجود دارد یا خیر.
این گزارشها جدا از گزارشهای درخواست و خطای آپاچی هستند. journalctl گزارشهایی را از systemd نشان میدهد که خود سرویس آپاچی را، از راهاندازی تا خاموش شدن، به همراه هر گونه خطای فرآیندی که ممکن است در طول مسیر با آن مواجه شود، نمایش میدهد.
در سیستمهای اوبونتو و دبیان از دستور زیر برای بررسی گزارشها استفاده کنید:
sudo journalctl -u apache2.service --since today --no-pager
پرچم –از امروز خروجی دستور را محدود به ورودیهای ثبت میکند که فقط از ساعت 00:00:00 روز جاری شروع میشود. استفاده از این گزینه به محدود کردن حجم ورودیهای گزارشی که باید هنگام بررسی خطاها بررسی کنید، کمک میکند. شما باید خروجی هایی مانند زیر دریافت کنید:
Output
اگر از یک سیستم مبتنی بر CentOS یا Fedora استفاده می کنید، از این نسخه از دستور استفاده کنید:
sudo journalctl -u httpd.service --since today --no-pager
Output
اگر خطایی وجود داشته باشد، یک خط در خروجی خواهید داشت که شبیه به زیر است، با تفاوت اصلی بین توزیعهای لینوکس، قسمت yourhostname برجسته شده:
نمونه خروجی خطا:
Jul 14 20:13:37 yourhostname systemd[1]: Failed to start The Apache HTTP Server.
اگر سرور آپاچی شما مانند مثال قبلی دارای خطاهایی در گزارش های journalctl است، مرحله بعدی برای عیب یابی مشکلات احتمالی، بررسی پیکربندی آپاچی با استفاده از ابزار خط فرمان apachectl است.
عیب یابی با Apachectl
اکثر توزیع های لینوکس شامل ابزار apachectl با آپاچی هستند. apachectl ابزاری ارزشمند برای کمک به شناسایی و تشخیص مشکلات پیکربندی آپاچی است.
برای عیب یابی مشکلات استفاده از apachectl، پیکربندی آپاچی خود را با استفاده از دستور apachectl configtest تست کنید. این ابزار فایل های آپاچی شما را تجزیه می کند و هر گونه خطا یا تنظیمات گم شده را قبل از شروع به کار سرور تشخیص می دهد.
این دستور را در توزیعهای مبتنی بر اوبونتو، دبیان، CentOS و Fedora اجرا کنید:
sudo apachectl configtest
یک پیکربندی فعال Apache خروجی ای مانند زیر را به همراه خواهد داشت:
Output
Syntax OK
بسته به توزیع لینوکس شما، ممکن است خطوط دیگری با خروجی مخلوط شده باشند، اما خط مهم آن است که می گوید Syntax OK.
اگر خطایی در پیکربندی آپاچی شما وجود داشته باشد، مانند دستورالعملی که به ماژولی اشاره می کند که فعال نیست یا حتی یک اشتباه تایپی، apachectl آن را شناسایی کرده و سعی می کند شما را در مورد مشکل مطلع کند.
به عنوان مثال، تلاش برای استفاده از دستورالعملها برای یک ماژول Apache که فعال نیست، پیامهایی مانند پیکربندی apachectl را به همراه خواهد داشت.
نمونه خروجی خطا:
در این مثال ماژول ssl فعال نیست، بنابراین دستورالعمل SSLEngine هنگام آزمایش پیکربندی خطا ایجاد می کند. آخرین خط همچنین نشان می دهد که گزارش خطای آپاچی ممکن است اطلاعات بیشتری داشته باشد، که مکان بعدی برای جستجوی اطلاعات دقیق تر اشکال زدایی است.
فایل های لاگ آپاچی
فایل های لاگ آپاچی منبع بسیار مفیدی برای عیب یابی هستند. به طور کلی، هر خطایی که در مرورگر یا سایر سرویس گیرندگان HTTP دریافت می کنید، ورودی مربوطه را در گزارش های آپاچی خواهد داشت. گاهی اوقات آپاچی خطاهای مربوط به پیکربندی، ماژول های داخلی و سایر اطلاعات اشکال زدایی را به فایل های گزارش خود خروجی می دهد.
برای بررسی فایلهای گزارش از نظر خطا هنگام عیبیابی Apache در سرور فدورا، CentOS یا RedHat، فایل /var/log/httpd/error_log را بررسی کنید.
اگر در حال عیب یابی یک سیستم مشتق شده از دبیان یا اوبونتو هستید، با استفاده از ابزاری مانند tail یا کمتر، خطاهای /var/log/apache2/error.log را بررسی کنید. به عنوان مثال، برای مشاهده دو خط آخر گزارش خطا با استفاده از tail، دستور زیر را اجرا کنید:
sudo tail -n 2 /var/log/apache2/error.log
تعداد خطوطی را که می خواهید بررسی کنید به جای عدد 2 در دستور جایگزین کنید. در یک سیستم CentOS یا Fedora، فایل log برای بررسی /var/log/httpd/error_log است.
یک خطای مثال چیزی شبیه به خطوط زیر خواهد بود. صرف نظر از اینکه از کدام توزیع لینوکس برای اجرای سرور آپاچی خود استفاده می کنید:
نمونه های ثبت خطا
دو خط در این خروجی پیام های خطای متمایز هستند. آنها هر دو به ماژول ایجاد کننده خطا اشاره می کنند (پراکسی در خط اول، proxy_http در خط دوم) و شامل کد خطایی است که مختص ماژول است. اولین مورد، AH00957، نشان میدهد که سرور آپاچی تلاش کرده است با استفاده از ماژول پروکسی به یک سرور باطن (127.0.0.1 در پورت 9090 در این مورد) متصل شود اما موفق به انجام این کار نشد.
خطای دوم از اولی مشتق شده است: AH01114 یک خطای ماژول proxy_http است که همچنین نشان می دهد که آپاچی قادر به اتصال به سرور پشتیبان پیکربندی شده برای درخواست HTTP نیست.
این خطوط مثال فقط برای اهداف تصویری هستند. اگر خطاها را با سرور آپاچی خود تشخیص می دهید، به احتمال زیاد خطوط خطا در گزارش های شما دارای محتوای متفاوتی با این موارد است. صرف نظر از توزیع لینوکس شما، فرمت هر خط خطا در گزارش های شما شامل ماژول آپاچی مربوطه و کد خطا و همچنین توضیح متنی خطا می شود.
هنگامی که ایده ای در مورد اینکه چه چیزی ممکن است باعث ایجاد مشکل در سرور آپاچی شما شود، می توانید به تحقیق و عیب یابی مشکل ادامه دهید. کد خطا و توضیحات متن بسیار مفید هستند زیرا اصطلاحات صریح و خاصی را در اختیار شما قرار می دهند که می توانید از آنها برای محدود کردن دامنه دلایل احتمالی یک مشکل استفاده کنید.