اشنایی با وب سرور آپاچی و نجوه پیکربندی آن

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

فایل های مرتبط با Apache

در ویندوز و توزیع های Redhat/CentOS/Fedora فایل پیکربندی اصلی آپاچی httpd.conf نام دارد که در پوشه conf موجود در پوشه اصلی که آپاچی در آن نصب شده قرار دارد. اما در توزیع های ابونتو/دبیان در زیر دایرکتوری etc/apache2/ فایل های پیکربندی Apache قرار دارند که اصلی ترین آنها apache2.conf است. اگر آپاچی را بوسیله بسته نرم افزاری Wamp Server نصب کرده باشید مسیر فایل پیکربندی آپاچی باید بصورت زیر باشد. با فرض اینکه ومپ سرور را در درایو C و با تنظیمات پیش فرض نصب کرده باشید.

C:\wamp64\bin\apache\apache2.4.23\conf

نکته: در مثال بالا عبارت عددی 2.4.22 اشاره به نسخه آپاچی نصب شده دارد و ممکن است در سیستم شما این عدد کمی متفاوت باشد.

راه ساده تر باز کردن فایل httpd.conf روش زیر است:

آیکون ومپ سرور در قسمت System Try (کنار ساعت) -> چپ کلیک -> Apache -> گزینه httpd.conf

باز کردن فایل Httpd.conf از منوی ومپ سرور

تمامی تنظیمات اصلی وب سرور آپاچی در فایل httpd.conf صورت می گیرد.

این فایل (و معادل آن) از سه بخش اصلی تشکیل شده است :

  • تنظیمات سرویس یا Daemon مربوط به Apache که در توزیع های ابونتو/دبیان به نام apache2 و در توزیع های Redhat/CentOS/Fedora به نام httpd خوانده شده و Global Environment نامیده می شوند.
  • تنظیمات مربوط به خود وب سرور که در حال کار بر روی آن هستید که Main server configuration
  • تنظیمات مربوط به Virtualhost ها که Virtual Hosts نامیده می شوند.

نکات مهم قبل از شروع پیکربندی آپاچی

نوشتن توضیح (Comment) در فایل httpd.conf

برای نوشتن توضیحات در فایل httpd.conf کافی است خط را با کاراکتر # (number یا همان hash) شروع کرد.

متغیرها در پیکربندی آپاچی

در فایل httpd.conf می توان متغیرهایی را تعریف کرد و بعد از آنها در جای مورد نیاز بهره برد. برای تعریف متغیر ها از دایرکتیو Define استفاده می شود. قالب تعریف یک متغیر بصورت زیر است.

Define VarName Value

در فایل Httpd.conf تعدادی متغیر ازپیش تعریف شده است که نباید نام یا مقدار آنها را تغییر داد. این متغیر ها در نسخه 2.4 آپاچی بشرح ذیل می باشد:

Define APACHE24 Apache2.4
Define VERSION_APACHE 2.4.23
Define INSTALL_DIR c:/wamp64
Define APACHE_DIR ${INSTALL_DIR}/bin/apache/apache${VERSION_APACHE}

همانطور که در خط 3 مثال فوق مشاهده می کنید می توان برای اشاره به یک مسیر خاص از متغیرها استفاده کرد. در مثال فوق متغیری با نام INSTALL_DIR و مقدار c:/wamp64 تعریف شده که در خط 4 از ان بصورت ${INSTALL_DIR} استفاده شده است. این متغیر به مسیر نصب ومپ سرور اشاره می کند.

برای فراخوانی یک متغیر کافی است ابتدا کاراکتر $ را تایپ کرده و سپس داخل عبارت {} نام متغیر را ذکر کنید.

آشنایی با Directive ها در پیکربندی Apache

به هر یک از تنظیمات قابل پیکربندی یک دایرکتیو (Directive) گفته می شود. در ادامه تعدادی از مهمترین دایرکتیوهای مربوط به تنظیمات سراسری (Global Configuration/Global Environment) را توضیح خواهیم داد.

Include و IncludeOptional

با استفاده از یک directive به نام Include می توان فایل های پیکربندی دیگری (configuration files) را در فایل فعلی فراخوانی کنیم. می توان در نوشتن این دایرکتیو از Wildcardها نیز استفاده کرد. به عنوان مثال می توان تمامی فایل ها یا فایل هایی با مشخصه خاص را از پوشه یا پوشه هایی بصورت کلی به فایل اصلی ضمیمه کرد.

نکته ای که مهم است این است که در نوشتن عبارات Wildcard باید دقت کافی را داشته باشید. چون اگر تفسیر این عبارت برای وب سرور ممکن نباشد خطا رخ می دهد. و وب سرور دیگر قادر به اجرا نخواهد بود. به عنوان مثال اگر با Wildcard همه فایل های یک پوشه را فراخوانی کنید. و در بین آن فایل ها فقط یک فایل موقتی خالی وجود داشته باشد آپاچی دیگر بدرستی اجرا نخواهد شد. برای اینکه از اینگونه خطاها جلوگیری کنیم می توان بجای دایرکتیو Include از دایرکتیو  IncludeOptional استفاده کرد. این دایرکتیو از آپشن هایی که با خطا روبرو می شوند صرف نظر می کند.

مسیر فایل ها می تواند بصورت مطلق (absolute path) نوشته شود و یا بصورت نسبی (relative) نسبت به مسیر پوشه سرور که در دایرکتیو ServerRoot مشخص شده است. مثالی از مسیردهی صریح در دایرکتیو Include:

Include /usr/local/apache2/conf/ssl.conf
Include /usr/local/apache2/conf/vhosts/*.conf

مثالی از مسیردهی نسبی نسبت به مسیر پوشه سرور که در دایرکتیو ServerRoot مشخص شده:

Include conf/ssl.conf
Include conf/vhosts/*.conf

ممکن است از Wildcardها در هر دو بخش دایرکتوری و یا فایل، مسیر استفاده شود. به مثال زیر دقت کنید:

Include conf/vhosts/*/*.conf

مثال بالا با شکست روبرو می شود اگر در مسیر conf/vhosts هیچ پوشه ای وجود نداشته باشد. و یا اگر در حداقل یکی از پوشه ها هیچ فایلی با پسوند conf وجود نداشته باشد.

برای اینکه با مشکل فوق مواجه نشویم می توانیم از دستور زیر استفاده کنیم. که در صورت بروز حالات فوق از آنها صرف نظر می کند.

IncludeOptional conf/vhosts/*/*.conf

ServerSignature

امضای سرور، دایرکتیوی است که در حالت پیش فرض فعال است. و وقتی فعال باشد در تمامی صفحات تولید شده توسط سرور مثل صفحات خطای 404، 403 و … در پابرگ صفحه مشخصات آپاچی و سیستم عامل قید می شود. بهتر است این دایرکتیو برای امنیت بیشتر سرور بر روی حالت off تنظیم شود. خب دلیل اصلی بودن چنین دایرکتیوی این است که اگر کاربر از مجموعه ای از سرورهای پراکسی استفاده می کرد. و با خطایی مواجه شد بتواند بفهمد که صفحه خطا توسط کدام سرور ایجاد شده است.

ServerTokens

این دایرکتیو تعیین می کند که سرور مشخصات سیستم عامل و ماژول های مورد استفاده را در فیلد هدر ارسالی به کاربر تا چه حد منتشر کند. این دایرکتیو، دایرکتیو ServerSignature را نیز کنترل می کند. به عنوان مثال:

ServerTokens Full (or not specified)
متن ارسالی سرور: Server: Apache/2.4.2 (Unix) PHP/4.2.2 MyMod/1.2
ServerTokens Prod[uctOnly]
متن ارسالی سرور: Server: Apache
ServerTokens Major
متن ارسالی سرور: Server: Apache/2
ServerTokens Minor
متن ارسالی سرور: Server: Apache/2.4
ServerTokens Min[imal]
متن ارسالی سرور: Server: Apache/2.4.2
ServerTokens OS
متن ارسالی سرور: Apache/2.4.2 (Unix)

timeout

بصورت پیشفرض 300 ثانیه است. (در توزیع های Redhat/CentOS/Fedora مقدار پیشفرض 60 ثانیه است) و مقدار آن حداکثر زمان برحسب ثانیه برای تکمیل کردن هر درخواست است.

KeepAlive

مقادیر On و Off را می پذیرد و مقدار پیشفرض آن Off است.

Keep Alive  چیست؟

Keep Alive امکانی است که از طریق آن می توان به جای باز کردن یک اتصال جدید برای هر درخواست به سرور، تنها یک اتصال با سرور برقرار کرد و مابقی درخواست ها را از طریق آن ارسال کرد. به عبارت دیگر، این تکنیک نوعی ارتباط بین وب سرور و مرورگر بوده و طی آن وب سرور به مرورگر اعلام میکند که می تواند در آنِ واحد بیشتر از یک درخواست دریافت کند. 

اگر Keep Alive  غیر فعال باشد چه اتفاقی می افتد؟

در صورتی که Keep Alive  غیر فعال باشد. برای هر درخواست کاربر به سمت سرور یک ارتباط جدید (Connection) با سرور برقرار خواهد شد و به محض اتمام درخواست ارتباط بسته خواهد شد.

KeepAliveTimeout

تعداد ثانیه ها برای انتظار در دریافت درخواست بعدی از سوی همان کلاینت و بر روی همان درخواست کلاینت. یعنی چه مدت وب سرور برای دریافت درخواست بعدی از سوی یک کلاینت و بر روی یک اتصال و پس از تمام شدن درخواست فعلی صبر می کند.

MaxKeepAliveRequests

حداکثر تعداد درخواست های مجاز که بر روی یک اتصال، یعنی کنترل می کند چه تعداد درخواست می تواند پیش از قطع یک اتصال از یک کلاینت تا پیش از قطع شدن آن اتصال، به وب سرور داده شود. مقدار صفر برای این پارامتر به معنی عدم محدودیت (نامحدود بودن است). بهتر است با یک عدد بزرگ برای بالابردن کارایی، مقدار دهی شود.

Listen

به عبارتی ساده این پارامتر درگاهی (Port) را که وب سرور بر روی آن به درخواست های Http گوش می دهد را تعیین می کند. وقتی سرویس httpd آپاچی اجرا می شود به درگاه و آدرس مشخصی در دستگاه میزبان متصل شده و منتظر درخواست های ورودی می شود. بصورت پیش فرض این سرویس به همه آدرس های دستگاه گوش می دهد. قطعاً در یک وب سرور واقعی نیاز است که این قاعده را تغییر دهیم. در حالت های واقعی نیاز است که سرور فقط به پورت (های) خاصی گوش دهد، یا فقط به آدرس های انتخاب شده یا ترکیبی از این دو. البته امروزه برای پیاده سازی این حالات از ویژگی VirtualHost که تعیین می کند httpd چگونه به IP آدرسها، hostname ها و پورت های مختلف پاسخ گو باشد، استفاده می شود.

دایرکتیو Listen به سرور می گوید که فقط درخواست های وارده از پورت ها یا آدرس ها یا ترکیبی از هردو اینها را قبول کند. اگر در دایرکتیو Listen فقط یک شماره پورت مشخص شده باشد، سرور به آن پورت بر روی همه کارت های شبکه (all interfaces) گوش فرا می دهد. اگر به همراه شماره پورت آدرس IP رابط خاصی مشخص شده باشد سرور بر روی همان رابط (کارت شبکه) به پورت مشخص شده برای دریافت درخواست های Http گوش می دهد.

می توان بصورت همزمان از چند دایرکتیو Listen که هر کدام حالت خاصی را مشخص کرده اند استفاده کرد. به عنوان مثال برای اینکه سرور به درخواست ها بر روی پورت 80 و 8000 همه کارت های شبکه سیستم گوش فرا دهد باید پیکربندی زیر را بکار برد:

Listen 80
Listen 8000

برای اینکه سرور به درخواست ها بر روی پورت 80 یک کارت شبکه و پورت 8000 کارت شبکه ای دیگر گوش کند پیکربندی می تواند بشکل زیر باشد:

Listen 192.0.2.1:80
Listen 192.0.2.5:8000

برای استفاده از آدرس IP نسخه 6 یعنی IPv6 باید آدرس را درون براکت نوشت:

Listen [2001:db8::a00:20ff:fea7:ccea]:80

User/Group

دو پارامتری که کاربر و گروه کاربری سرویس Apache را تعیین می کند. یک اشتباه بزرگ تعیین این دو پارامتر به ترتیب با نام کاربری root و گروه کاربری root است که با هک شدن سرویس، هکر کنترل کامل (دسترسی root) را خواهد داشت. کاربر/گروهی که انتخاب می شوند نباید root باشد و نباید مجوز های کاربری root را توسط ابزاری مانند sudo گرفته باشد. یک کاربر/گروه بدون هیچ مجوز سیستمی. وب سرور از این کاربر/گروه برای کارهای خود استفاده می کنند. همچنین کاربر وب سرور نباید امکان Login به سیستم را داشته باشد و Shell ان باید به nologin تنظیم شده باشد.

از تنظیمات سرویس Apache (دومین بخش تنظیمات بالا)، می توان به موارد زیر اشاره نمود.

DocumentRoot

زیر دایرکتوری تنظیم شده در این پارامتر، تمامی فایل های مربوط به وب سرور شما را نگه داری می شود. (فایل های html/css/javascript و فایل های php و هر فایل دیگری). مثلا در ومپ سرور این مقدار به صورت پیش فرض به پوشه ای با نام WWW که در پوشه اصلی ومپ ایجاد شده اشاره می کند و فایل index.php صفحه اولیه Wamp Server که در زمان فراخوانی Localhost نمایش داده می شود در این پوشه قرار دارد. البته در نسخه ای از آپاچی که بصورت مستقل نصب می شود به صورت پیش فرض این مسیر به پوشه (شاخه)  Htdocs درون ریشه ی فولدر نصب خود آپاچی اشاره میکند.

ما میتوانیم این مسیر را به دلخواه تغییر دهیم. کافی است مسیر پوشه دلخواه را بصورت زیر در فایل Httpd.conf وارد کنیم:

قالب:

DocumentRoot "مسیر پوشه ی انتخابی"

مثال)

DocumentRoot "${INSTALL_DIR}/www"

همانطور که در بالا شرح داده شد می توان از متغییرها استفاده کرد. لذا در مثال فوق مشاهده می کنید که از متغییر INSTALL_DIR استفاده شده است.

LoadModule

قبل از اینکه دایرکتیو LoadModule را توضیح دهیم باید با مفهوم DSO:Dynamic Shared Object و طراحی ماژولار آشنا شویم.

Dynamic Shared Object یا «شیء به اشتراک گذاشته شده پویا» که بصورت مخفف DSO نامیده می شود فایلی است که توسط چند برنامه بصورت همزمان قابل استفاده است.

طراحی ماژولار سبکی است که در آن برنامه اصلی با قابلیت های مشخص اولیه ای ارائه می شود. در ادامه قابلیت های بیشتری برای آن بصورت ماژول های اضافه ارائه می گردند که استفاده کننده بنا به نیاز خود می تواند این ماژول ها را تهیه کرده و به برنامه اصلی اضافه کند. نمونه معروف این سبک را در مرورگر ها مشاهده می کنید. به عنوان مثال کروم یا فایرفاکس هر دو دارای Extension ها و Pluginهایی هستند که با نصب آنها قابلیت های جدیدی به این مرورگرها اضافه می شود. سیستم های مدیریت محتوایی نظیر وردپرس نیز با این مدل طراحی استفاده می کنند و قابلیت های اضافه را در قالب افزونه های قابل نصب ارائه می کنند.

مدل طراحی ماژولار مزیت های بیشماری دارد:

  1. این روش امکان مشارکت برنامه نویسان دیگر را در توسعه یک نرم افزار فراهم کرده و باعث تقویت کار گروهی می شود. برنامه نویسان می توانند قابلیت های جدیدی را در قالب ماژول نوشته و به برنامه اصلی اضافه کنند.
  2. در حالت عادی بسیاری از کاربران به بسیاری از قابلیت های یک برنامه نیاز ندارند و ارائه کردن همه قابلیت ها در نسخه اصلی برنامه نیز کار عاقلانه ای نبوده و باعث افزایش حجم و کاهش راندمان برنامه خواهد شد. از این رو روش ماژولار کمک می کند تا کاربران بنا به نیاز خود قابلیت ها را به برنامه اضافه یا کم کنند.
  3. و بسیاری مزیت دیگر که از حوصله این مطلب خارج است.

آپاچی نیز بر اساس معماری ماژولار نوشته شده و بسیاری از قابلیت های آن بصورت ماژول های جداگانه ارائه شده اند. در پوشه اصلی نصب آپاچی پوشه ای با نام modules وجود دارد که در آن فایل های DSO ماژول های آپاچی با پسوند so ذخیره شده اند. برای اینکه یک ماژول را به آپاچی اضافه کنیم باید از دایرکتیو LoadModule استفاده کنیم. قالب این دایرکتیو بشکل زیر است:

LoadModule modulename path_of_related_so_file

ابتدا عبارت کلیدی LoadModule سپس نام ماژول و بعد مسیر فایل مرتبط با آن ماژول

البته در ومپ سرور راه ساده تری برای فعال سازی یا غیر فعال سازی ماژول ها دارد:

چپ کلیک بر روی آیکون ومپ در نوار وظیفه (در قسمت اعلانات) -> گزینه Apache -> گزینه Apache modules -> لیست ماژول ها

فعال و غیرفعال سازی ماژول های آپاچی از طریق منوی ومپ سرور

وجود علامت تیک در کنار هر گزینه نشان دهنده فعال بودن آن ماژول است و نبود تیک نشان دهنده غیر فعال بودن آن ماژول می باشد. باید بدانید با فعال کردن هر گزینه در این منو باعث می شود تا علامت # از اول خط متناظر آن در فایل Httpd.conf برداشته شود و بلعکس اگر ماژولی را غیر فعال کنید باعث می شود تا در ابتدای خط متناظر آن در فایل Httpd.conf کاراکتر # گذاشته شود.

ناگفته نماند این روش فقط برای فعال یا غیرفعال سازی ماژول هایی است که همکنون خط مربوط به پیکربندی آنها در فایل Httpd.conf وجود دارد. برای افزودن یک کاژول جدید باید حتماً فایل httpd.conf را ویرایش کنید. به عنوان مثال برای فراخوانی و فعال سازی ماژول PHP از دایرکتیو زیر استفاده شده است.

LoadModule php5_module "${INSTALL_DIR}/bin/php/php5.6.25/php5apache2_4.dll"

IfModule

همانطور که ملاحظه کردید می توان به آپاچی ماژول هایی را اضافه کرد. بطبع ممکن است هر ماژول دارای تنظیمات و دایرکتیوهای خاص خود باشد و نیاز باشد تا آنها را در فایل Httpd.conf پیکربندی کرد. آپاچی برای اطمینان از اینکه دایرکتیوهای مرتبط با هر ماژول تنها در صورت فعال بودن آن ماژول به کار بسته شود دایرکتیو IfModule را ارائه کرده است. این دایرکتیو با ساختاری تگ گونه کمک می کند تا پیکربندی های مرتبط با هر ماژول فقط زمانی به کار بسته شود که آن ماژول فعال باشد. قالب این دایرکتیو بصورت زیر است:

<IfModule نام_ماژول>
پیکربندی مد نظر
</IfModule>

ServerAdmin

با این دایرکتیو آدرس رایانامه مدیر سرور را به آپاچی معرفی می کنیم. اگر خطا یا مشکلی رخ دهد آپاچی گزارش ان را به این آدرس ارسال می کند. همچنین این آدرس در برخی صفحات تولید شده توسط آپاچی نظیر صفحات خطا نمایش داده می شود. قالب این دایرکتیو به شکل زیر می باشد:

ServerAdmin youremail@example.com

ServerName

این دایرکتیو نام و شماره پورتی که سرور اپاچی با آن خود را شناسایی می کند را مشخص می کند. مقدار این دایرکتیو بصورت پیش فرض بصورت زیر می باشد:

ServerName localhost:80

اگر نام ثبت شده مشخصی در سرویس DNS ندارید باید آدرس IP سیستم را بجای نام آن وارد کنید.

Directory

یکی از مهمترین دایرکتیوهای آپاچی دایرکتیو Directory است. با این دایرکتیو می توانیم سطح دسترسی به منابع فایل سیستم در اختیار سرور را مشخص کنیم. منظور از منابع پوشه هایی است که سرور به آنها دسترسی دارد. قالب این دایرکتیو بصورت زیر است:

<Directory "مسیر پوسه مد نظر">
    نوع سطح دسترسی
</Directory>

برای حالتی که برای یک پوشه هیچ سطح دسترسی تعریف نشده باید یک حالت پیش فرض داشته باشیم تا آپاچی آن را برای آن پوشه در نظر بگیرد. پیکربندی زیر حالت پیش فرض را تنظیم می کند.

<Directory />
    AllowOverride none
    Require all denied
</Directory>

پیکربندی فوق هرگونه دسترسی به کل فایل سیستم سرور را سلب می کند. این کار برای حمایت از امنیت سرور الزامی است. حال می توان برای هر پوشه دیگری پیکربندی سطح دسترسی موردنیاز آن را همچون مثال زیر که سطح دسترسی پوشه www موجود در پوشه wamp را تعیین می کند ایجاد کرد.

<Directory "${INSTALL_DIR}/www/">
    Options +Indexes +FollowSymLinks +Multiviews
    AllowOverride all
    Require local
</Directory>

برای درک بهتر چگونگی تنظیم سطح دسترسی باید با مفاهیم زیر اشنا شویم:

دایرکتیو Options حالت های مختلف موردنیاز برای چگونگی سطح دسترسی به پوشه مشخص شده را تعیین می کند. این تنظیم می تواند دو گزینه “None” ،”All” یا ترکیبی از گزینه های Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews باشد.

تنظیم دایرکتیو Options امری پیچیده و مهم است که توضیح کامل آن از حوصله این مطلب خارج است از این رو برای کسب اطلاعات بیشتر در مورد آن به آدرس زیر مراجعه کنید: http://httpd.apache.org/docs/2.4/mod/core.html#options

دایرکتیو AllowOverride مشخص می کند که چه دایرکتیوهایی در فایل های .htaccess قابل استفاده هستند. مقدار این دایرکتیو نیز می تواند یکی از گزینه های “All”، “None” یا ترکیبی از واژه های: AllowOverride FileInfo AuthConfig Limit باشد. وقتی مقدار این دایرکتیو “All” باشد به این معنی است که همه پیکربندی ها قابل استفاده در فایل htaccess هستند.

اما توضیح در مورد عبارت Require: برای این دایرکتیو سه حالت اصلی و بی نهایت حالت سفارشی قابل تنظیم است. در زیر چند حالت مهم را با ذکر مثال توضیح می دهیم:

Require local

حالت فوق به این معنی است که سرور برای پوشه مشخص شده فقط به درخواست های محلی اجازه دسترسی بدهد.

Require all denied

حالت فوق باعث رد همه درخواست ها خواهد شد.

Require all granted

حالت فوق باعث قبول همه درخواست ها خواهد شد.

برای درک بهتر دایرکتیو Require به این آدرس مراجعه کنید: https://httpd.apache.org/docs/2.4/howto/access.html

DirectoryIndex

این دایرکتیو به ما اجازه می دهد تا اولویت نام فایل اصلی که در هر پوشه توسط آپاچی در هر درخواست به کلاینت بصورت پیش فرض ارسال می شود را مشخص کنیم. شرط استفاده از این دایرکتیو این است که ماژول dir_module فعال باشد. به مثال زیر دقت کنید:

<IfModule dir_module>
    DirectoryIndex index.php index.php3 index.html index.htm
</IfModule>

همانطور که می بینید در پیکربندی فوق اینگونه تعیین شده که آپاچی ابتدا بدنبال فایلی با نام index.php گشته و چنانچه آن را پیدا کرد آن را به کلاینت ارسال کند در غیر اینصورت به دنبال فایل index.php3 بگردد و اگر آن فایل نیز پیدا نشد بدنبال فایل بعدی و همینطور تا انتها پیش برود. چنانچه هیچ فایل مطابق با لیست تعیین شده در این دایرکتیو در پوشه درخواست شده پیدا نشود آپاچی لیست تمامی فایل ها را (بشرط فعال بودن Indexing) به کاربر نمایش می دهد.

Files

همانطور که می توان سطح دسترسی به پوشه ها را با دایرکتیو Directory مشخص کرد می توان سطح دسترسی به فایل ها را نیز با دایرکتیو Files تعیین کرد. قالب این دایرکتیو بصورت زیر است:

<Files "نام صریح فایل یا ضابطه">
    نوع سطح دسترسی
</Files>

می توان نام یک فایل مشخص را قید کرد و یا بصورت ضابطه ای یک الگو را مشخص کرد. بطور مثال:

<Files ".ht*">
    Require all denied
</Files>

پیکربندی فوق اجازه دسترسی به فایل هایی که پسوند آنها با عبارت ht شروع می شود (مثل فایل های .htaccess و .htpasswd) را به هیچ درخواستی نمی دهد.

ErrorLog

این دایرکتیو مسیر فایلی که گزارش خطاهای رخ داده شده برای اپاچی در آن ذخیره می شود را مشخص می کند. بطور مثال:

ErrorLog "${INSTALL_DIR}/logs/apache_error.log"

LogLevel

این دایرکتیو سطح گزارش گیری از رویدادها برای ذخیره در فایل گزارش خطایی که در دایرکتیو ErrorLog مشخص کرده ایم را تعیین می کند. مقادیر قابل استفاده در این دایرکتیو عبارتند از: debug, info, notice, warn, error, crit, alert, emerg. بصورت پیش فرض این دایرکتیو بصورت زیر پیکربندی شده است:

LogLevel warn

پیکربندی فوق به این معناست که گزارش رویدادهایی تا سطح اخطار در فایل مذکور ذخیره شوند.

ErrorDocument

با این دایرکتیو می توان مسیر فایلی که مایلید در صورت بروز هر یک از خطاهای معروف سرور مثل خطای 404 نمایش داده شود را مشخص کنید. قالب این دایرکتیو بصورت زیر است:

ErrorDocument ErrCode "مسیر فایل یا پیام مورد نظر برای نمایش"

چند نمونه مثال:

ErrorDocument 500 "The server made a boo boo."
ErrorDocument 404 /missing.html
ErrorDocument 404 "/cgi-bin/missing_handler.pl"
ErrorDocument 402 http://www.example.com/subscription_info.html

پس از هر بار تغییر فایل httpd.conf، می بایست سرویس آپاچی را راه اندازی مجدد (Restart) کنید. برای این کار باید به روشی (چه روشی مهم نیست) سرویس Apache را ری استارت کنید. راه ساده: منوی ومپ -> آپاچی -> Service Administration و بعد گزینه restart.

موفق باشید.

سوالات خود را در بخش دیدگاه ها بیان کنید.

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

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