TAHA
11-05-2009, 08:46 PM
تمامی سرویسدهندههای وب (Web Servers)، جهت استاندارد و یکسان بودن در نحوه ارسال، دریافت و پردازش دادهها، از یک پروتکل ساده موسوم به HypertextTransfer Protocol یا HTTP استفاده میکنند. این پروتکل نرمافزارهای سرویسگیرنده وب را که به مرورگرهای وب (Web Browser) موسوم هستند، قادر میسازد تا بدون اینکه بدانند با چه سرویسدهنده وبی در حال ارتباط هستند، به تبادل داده بپردازند.
سرویسدهنده وب آپاچی نخستین بار جهت اصلاح و وصله کردن سرویسدهنده وب NCSA ایجاد شد و طی سالها توسعه، به موقعیت کنونی خود به عنوان یک سرویسدهنده وب بسیار قابل اطمینان و پر استفادهترین سرویسدهنده وب جهان با آمار استفاده حدود ۷۰ درصد (Netcraft Ltd - Internet Research, Anti-Phishing and PCI Security Services (http://www.netcraft.com))، دست یافته است و به نوبه خود یکی از موفقترین پروژههای نرمافزارهای بازمتن نیز میباشد.
نصب سرویسدهنده آپاچی
نصب سرویسدهنده وب آپاچی در توزیعهای لینوکس همانند نصب سایر بستههای نرمافزاری است. کافی است بستههای آنرا از روی دیسکهای نصب توزیع مورد استفاده خود بر روی سیستم نصب نمایید. در دبیان گنو/لینوکس کافی است دستور زیر را بصورت کاربر ریشه جهت نصب آپاچی صادر نمایید:
# apt-get install apache
روش دیگر نصب سرویسدهنده وب آپاچی دریافت و کامپایل آن بطور کامل از کد منبع میباشد. جدیدترین نسخههای Apache را میتوانید از وب سایت پروژه آن در آدرس Welcome! - The Apache Software Foundation (http://www.apache.org) دریافت نمایید. البته شخصا این کار را به دلیل دشواری در بروز نگه داشتن سرویسدهنده از نظر امنیتی توصیه نمیکنم.
در صورتی که نصب سرویسدهنده آپاچی با موفقیت انجام پذیرد، اکنون میتوانید با هدایت مرورگر خود به آدرس سرویسدهنده که همان آدرس IP یا DNS آن خواهد بود، صفحه test آپاچی را مشاهده نمایید. در صورتی که بر روی سرویسدهنده خود محیط X را ندارید، میتوانید برای آزمایش از مرورگرهای متنی مانند lynx استفاده نمایید.
سرویسدهنده آپاچی همچنین به صورت یک نسخه با پشتیبانی از SSL یا Secure Socket Layer نیز ارائه میشود که نصب آن همانند نسخه معمولی آپاچی بوده با این تفاوت که تبادل دادهها بین سرویسدهنده و سرویسگیرنده بصورت رمزنگاری شده انجام میشود. نسخه SSL دارای برخی ماژولها و Directive های اضافهتر نسبت به نسخه معمولی است. جهت نصب آن در دبیان کافی است دستور زیر را تایپ نمایید:
# apt-get install apache-ssl
باید در نظر داشته باشید که برای استفاده رسمی از قابلیتهای SSL باید یک Certificate مربوط به SSL را در سایتهایی که اینگونه خدمات را ارائه میدهند، ثبت نمایید تا قابلیت SSL سایت شما در مرورگرهای وب معتبر شناخته شود. در غیر اینصورت، تنها میتوانید از قابلیتهای ساده رمزنگاری SSL بر روی سرویسدهنده خود استفاده نمایید. مانند رمزنگاری سیستمهای مدیریتی مبتنی بر وب.
فایلهای پیکربندی آپاچی
تنظیمات سرویسدهنده آپاچی در فایلهایی متنی ذخیره میشود که به آنها اصطلاحا فایلهای پیکربندی یا Configuration Files اطلاق میگردد. فایلهای پیکربندی اصلی آپاچی عبارتند از:
- httpd.conf : تنظیمات اصلی سرویسدهنده
- modules.conf : تنظیمات مربوط به فعال و غیر فعال سازی ماژولهای آپاچی
- access.conf : میتواند حاوی تنظیمات دسترسی باشد
- srm.conf : حاوی برخی تنظیمات دیگر آپاچی مانند DocumentRoot
نکتهای که باید به آن توجه داشته باشید این است که تمام این فایلهای پیکربندی در تمام توزیعها وجود ندارند و یا از آنها استفاده نمیشود. مثلا در دبیان تنها از httpd.conf و modules.conf استفاده میشود.
با اینکه بستههای نرمافزاری آپاچی بسیاری از تنظیمات لازم برای آنرا برای شما انجام میدهند، هنوز تنظیمات زیادی وجود دارند که شما میتوانید با استفاده از آن از سرویسدهنده خود برای امور بیشتری مانند ارتباطات رمزنگاری شده، دسترسی حفاظت شده یا Virtual Hosting استفاده نمایید.
توجه داشته باشید که apache-ssl دارای فایلهای پیکربندی مخصوص به خودش ولی مشابه با فایلهای پیکربندی apache است که در مسیر /etc/apache-ssl/ موجود هستند.
کنترل سرویسدهنده آپاچی
در بسته دبیان آپاچی اسکریپتی به نام apachectl برای کنترل راهاندازی و توقف سرویسدهنده گنجانده شده است. این اسکریپت ممکن است در سایر توزیعها نیز وجود داشته باشد. از طریق این دستور و دستورات دیگر میتوانید سرویسدهنده آپاچی را کمترل نمایید:
# apachectl
usage: /usr/sbin/apachectl (start|stop|restart|fullstatus|status|graceful|con figtest|help)
-start :راه اندازی سرویسدهنده آپاچی
-stop: توقف سرویسدهنده آپاچی
-restart: راهاندازی مجدد . یا راهاندازی در صورت متوقف بودن سرویسدهنده
-fullstatus: نمایش یک صفحه وضعیت کلی از سرویسدهنده. به مرورگر lynx و ماژول mod_status نیاز میباشد
-status: نمایش یک خلاصه وضعیت از سرویسدهنده. به مرورگر lynx و ماژول mod_status نیاز میباشد.
-configtest: آزمایش فایلهای پیکربندی جهت نبود خطا پیش از بکارگیری آن در سرویسدهنده
در صورتی که در توزیع شما دستور apachectl وجود ندارد، میتوانید از این دستور استفاده نمایید:
# /etc/init.d/apache
Usage: /etc/init.d/apache {start|stop|reload|reload-modules|force-reload|restart}
فایل پیکربندی httpd.conf
تنظیمات اصلی سرویسدهنده آپاچی در این فایل قرار دارند. مانند تنظیمات نوع سرویسدهنده، محل فایلهای ثبت رخداد، نام کاربر اجرا کننده سرویسدهنده و...
- ServerType: این گزینه یا directive تعیین کننده چگونگی اجرای سرویسدهنده آپاچی شما بر روی ماشین است. در صورتی که سرویسدهنده به صورت Standalone اجرا میشود، برای اجرا یا توقف آن از اسکریپتهای ثانویه دیگری استفاده میشود و تنها کاربر ریشه میتواند سرویسدهنده را اجرا یا متوقف نماید. انتخاب دیگری که در این بخش قابل استفاده است، inetd است. در این صورت، تنها هنگامی که درخواستی به سرویسدهنده ارسال شود، اجرا خواهد شد و پس از اتمام تقاضا، سرویسدهنده تا دریافت درخواست بعدی متوقف خواهد شد. این حالت برای محیطهای توسعه نرمافزار مناسب است تا یک سرویسدهنده درگیر وب.
ServerType standalone
-Port : شماره درگاهی که سرویسدهنده شما به آن گوش خواهد داد. پیش گزیده آن درگاه شماره ۸۰ میباشد.
Port 80
- HostnameLookups : در صورتی که این گزینه بر روی On تعریف شده باشد، در فایلهای ثبت رخداد، بجای آدرس IP، نام واقعی Host سرویسگیرندهها درج خواهد شد. تنظیم آن بر روی On مفید است، مخصوصا هنگامی که بخواهید بدانید که بازدید کنندهای از چه سایتی است.
HostnameLookups Off
- مالکیت (User/Group) : این گزینه نقش بسیار مهمی بر روی امنیت سیستم شما خواهد داشت. سرویس وب بصورت ریشه اجرا شده و سپس سطح دسترسی خود را به یک کاربر و گروه خاص کاهش میدهد. این بخش تعیین کننده نام و گروهی است که در این مورد استفاده خواهد شد. در دبیان، هنگام نصب بسته آپاچی، کاربر و گروهی به نام www-data ایجاد و از آن به این منظور استفاده خواهد شد. دلیل استفاده از این کاربر و گروه جلوگیری از نفوذ به درون سیستم از طریق سرویسدهنده وب میباشد. حساب www-data دارای حقوق دسترسی بسیار پایینی است.
User www-data
Group www-data
- ServerAdmin : این گزینه حاوی آدرس پست الکترونیک شخص اداره کننده سرویسدهنده است که باید یک آدرس پست الکترونیک معتبر باشد تا امکان گزارش اشکالات یا درخواستها به آن فراهم شود.
- ServerRoot : این گزینه نشاندهنده مسیری است که فایلهای مربوط به سرویسدهنده، مانند فایلهای پیکربندی در آن قرار دارند. بطور پیشگزیده etc/apache/ میباشد.
- BindAddress : سرویسدهنده آپاچی امکان ارائه سرویس به بیش از یک آدرس IP یا دامین اینترنتی را داراست. این گزینه تعیین کننده آدرسهای IP یا نامهای دامنهای است که سرویسدهنده آپاچی وظیفه سرویسدهی به آنها را بر عهده دارد. این گزینه را میتوان همراه با Virtual Hosting بکار برد.
- Listen: این امکان را فراهم میسازد تا بتوان آپاچی را بر روی درگاهها و شمارههای IP متنوعی به کار گرفت. این گزینه بسیار شبیه به BindAddress میباشد.
- ثبت رخداد: ثبت رخدادها به دلایلی بسیار مهم است. این دلایل عبارتند از: پیدا کردن و رفع اشکال در سرویسدهنده، ضبط فعالیت سایتها و سرویسدهنده. در این بخش از فایل پیکربندی httpd.conf محل و مسیر فایلهای ثبت رخداد تنظیم میشود. مسیر پیشگزیده فایلهای ثبت رخداد آپاچی، مسیر var/log/apache/ است. دو فایل ثبت رخداد اصلی در آپاچی وجود دارد. error.log جهت ذخیره خطاهایی که در سرویسدهنده رخ میدهد (مانند خطاهای شماره ۵۰۰) و access.log که تمامی دسترسیهای صورت گرفته به سرویسدهنده در آن ذخیره خواهد شد. این فایلها را میتوانید با استفاده از یک ویرایشگر متنی ساده بررسی نمایید و یا با دستور زیر آنرا مانیتور نمایید:
# tail -f /var/log/apache/error.log
فایلهای ثبت رخداد apache-ssl در مسیر /var/log/apache-ssl/ قرار دارند.
- ServerName : این گزینه تعیین کننده این مطلب است که سرویسدهنده با چه نامی روی شبکه اینترنت شناخته میشود و شامل یک نام ثبت شده میباشد. این گزینه بصورت پیشگزیده غیر فعال بوده و شما باید آنرا بصورت دستی فعال نمایید.
- CacheNegotiatedDocs : این بخش حاوی چندین گزینه سیستمی است. گزینه نخست که میباشد، باعث خواهد شد تا سرویسدهنده Proxy صفحات سرویسدهنده را Cache نماید.
- Timeout: همیشه ممکن است ارتباطات در اینترنت به دلایلی مانند ترافیک، خرابیها و... دچار تاخیر گردند. گزینه Timeout تعیین کننده مدت زمانی است که یک درخواست قادر است به سرویسدهنده وارد شده و از آن خارج شود. (ثانیه). سرویسدهنده قادر است درخواستهایی را که از زمان مجاز عبور کردهاند، متوقف نماید.
Timeout 300
- KeepAlive : هنگامی که این گزینه بر روی On تعریف شده باشد، سرویسدهنده قادر خواهد بود تا چندین تراکنش را بر روی یک Connection اجرا نماید. این گزینه به طرز فزایندهای سرعت کار سرویسدهنده را افزایش خواهد داد، زیرا به ازای هر درخواست یک اتصال جداگانه ایجاد نخواهد شد.
KeepAlive On
- MaxKeepAliveRequests : این گزینه حداکثر درخواستهای ارسالی از سمت یک سرویسگیرنده را تعیین خواهد نمود.
- Server Pool : این بخش چگونگی اجرای دیمن آپاچی را تعیین میکند. گزینههای MinSpareServers و MaxSpareServers تعیین کننده تعداد پروسههای child سرویسدهنده آپاچی است. این گزینه برای بهبود Performance سرویسدهنده هنگام افزایشهای ناگهانی بار بسیار مفید است. اعداد پیشگزیده ۵ و ۱۰ سرویسدهنده child میباشد. گزینه StartServers نیز تعیین کننده تعداد سرویسدهندههای child در هنگام آغاز به کار آپاچی میباشد. در صورتی که مقدار StartServers کمتر از MinSpareServers تعیین شود، سرویسدهنده با مقدار تعیین شده در MinSpareServers راهاندازی خواهد شد.
MinSpareServers 5
MaxSpareServers 10
StartServers 5
- MaxClients : حداکثر تعداد سرویسگیرندههایی که میتوانند به طور همزمان به سرویسدهنده متصل شوند را تعیین میکند.
MaxClients 150
- DocumentRoot : مسیر اصلی قرار گیری فایلها و صفحات وب در سرویسدهنده آپاچی.
DocumentRoot /var/www
- AddCharset : تعیین کننده کاراکتر ستهای قابل پشتیبانی در آپاچی است که صفحات وب پردازش شده را تحت تاثیر قرار خواهد داد. باید AddCharset UTF-8 .utf8 برای پشتیبانی از utf8 فارسی در این بخش اضافه گردد:
AddCharset UTF-8 .utf8
- AddDefaultCharset : در صورتی که بر روی on تنظیم شده باشد، سرویسدهنده صفحات را بطور پیشگزیده با کاراکترست ISO-8859-1 پردازش خواهد نمود. برای پشتیبانی از utf8 باید بر روی off تنظیم شود.
- DirectoryIndex : فایلهایی که بصورت Index هر دایرکتوری شناخته خواهند شد، در این بخش تعریف میشوند. مانند index.html یا default.html. در برخی از نسخههای Apache در برخی از توزیعها باید گزینه index.php را بطور دستی اضافه نمایید.
DirectoryIndex index.html index.htm index.shtml index.cgi index.php
- UserDir : در صورتی که این گزینه فعال باشد، تمامی کاربران سیستم قادر خواهند بود تا صفحات وب مربوط به خود را بر روی سرویسدهنده داشته باشند که با آدرس http://localhost/~userid قابل دسترسی خواهد بود. localhost میتواند با آدرس IP یا نام دامنه تعویض گردد. کافی است تا هر کاربر یک پوشه public_html در دایرکتوری خانگی خود ایجاد نموده و صفحات وب مربوط به خود را در آنجا قرار دهد. برای استفاده از این قابلیت، ماژول UserDir باید در آپاچی فعال باشد:
LoadModule userdir_module /usr/lib/apache/1.3/mod_userdir.so
- Redirection and aliasing : این امکان شرایطی را فراهم میسازد تا بتوان فایلها و صفحات وب را در جایی غیر از جایی که سرویسگیرنده به آن اشاره مینماید ذخیره کرد. گزینه Redirect امکان هدایت یک آدرس URI خاص را به یک آدرس URL فراهم میسازد. مثلا ممکن است بر روی سرویسدهنده خود یک آدرس قدیمی داشته باشید که به آدرسی دیگری تغییر کرده باشد. با استفاده از این قابلیت قادر خواهید بود تا کاربرانی را که هنوز به آدرس قدیمی مراجعه مینمایند، بطور خودکار به آدرس جدید هدایت نمایید:
Redirect /data/ web site promotion click search at clickrast.com (http://www.clickrast.com/docs)/
Alias به فایلهایی که خارج از DocumentRoot سرویسدهنده قرار دارند، اشاره مینماید. به این معنی که در صورتی که نیاز داشته باشید تا فایلهای را که خارج از DocumentRoot سرویسدهنده قرار دارند از داخل سرویسدهنده آپاچی قابل دسترسی نمایید، از این کلمه کلیدی استفاده مینمایید:
Alias /doc/ /usr/share/doc/
گزینه ScriptAlias همانند Alias کار میکند با این تفاوت که تنظیم کننده موقعیت اصلی اسکریپتهای وب میباشد. مانند اسکریپتهای cgi:
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
- AddType : این گزینه برای اضافه کردن نوع فایل خاصی به فایلهای قابل شناسایی توسط سرویسدهنده میباشد. برای مثال در زیر تنظیم مربوط به فایلهای php را مشاهده مینمایید:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
- ErrorDocument : این گزینه جهت سفارشی سازی صفحات نمایش پیغامهای خطا بکار میرود. مانند نمایش یک صفحه HTML خاص و یا Redirect به آدرس وب خاص.
ErrorDocument 404 /missing.html
کنترل دسترسیها در آپاچی
سرویسدهنده آپاچی قادر به کنترل نحوه دسترسی به فایلها و دایرکتوریها از طریق درخواستهای ارسال شده به سرویسدهنده میباشد. Directiveهایی که در تنظیم میشوند، بر روی همان دایرکتوری تحت پوشش خود عمل مینمایند. کلمه کلیدی Options تعیین کننده ویژگیهایی است که در آن کاربر هنگام دسترسی به دایرکتوری مورد نظر قادر به استفاده از آنهاست. همچنین میتوانید تعیین کنید که دایرکتوری مورد نظر قادر به استفاده از فایلهای htaccess. باشد یا خیر. این امر توسط کلمه کلیدی AllowOverride صورت میگیرد.
<Directory /var/www/rest>
AllowOverride AuthConfig
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
</Limit>
<Limit PUT DELETE PATCH PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Order deny,allow
Deny from all
</Limit>
</Directory>
با استفاده از tagهای Limit قادر خواهید بود تا فرایندهای خاصی را بر روی دایرکتوری خاصی محدود نمایید. از کلمه کلیدی order جهت تعیین ترتیب اولویت گزینهها استفاده میشود. کلمات کلیدی Allow و Deny نیز جهت آزاد کردن یا محدود کردن فرایندها استفاده میشود.
برخی اوقات این امر اهمیت دارد تا دسترسی به دایرکتوری خاصی را محدود نمایید. ممکن است مایل باشید تا برای دسترسی به بخش خاصی، از کاربر درخواست کلمه و رمز عبور شود. به این قابلیت سرویسدهنده آپاچی کنترل دسترسی با استفاده از htaccess اطلاق میگردد. به این منظور ابتدا باید گزینه AccessFileName را در فایل پیکربندی httpd.conf فعال نمایید و یک فایل با همان نام در دایرکتوری مورد نظر که مایل به حفاظت از آن هستیدایجاد نمایید. توضیح اینکه گزینه AccessFileName بطور پیشگزیده در دبیان فعال میباشد.
AccessFileName .htaccess
سپس در فایل پیکربندی آپاچی باید کلمه کلیدی AllowOverride AuthConfig را همانگونه که در مثال بالا دیدید، برای دایرکتوری مورد نظرتان اضافه نمایید و در صورتی که این دایرکتوری در آن معرفی نشده است، باید آنرا مطابق مثال بالا در فایل پیکربندی آپاچی اضافه کنید. در زیر محتویات یک فایل htaccess. برای مثال نشان داده شده است:
AuthUserFile /var/www/rest/.htpasswd
AuthGroupFile /dev/null
AuthName "Authentication Required"
AuthType Basic
Require valid-user
کلمه کلیدی AuthUserFile نشان دهنده محل فایل حاوی کلمه عبور کاربر میباشد. AuthGroupFile نشان دهنده محل فایل گروه کابرانی است که میتوانند به این محل دسترسی پیدا کنند. AuthName نشاندهنده نام یا عنوان احراز هویت است. AuthType نیز نشانگر نوع احراز هویت است که میتواند از نوع Basic، Digest یا انواع مرتبط با بانکهای اطلاعاتی باشد. بخش Require نیز نوع درخواست سیستم احراز هویت را تعیین میکند و میتواند حاوی user و نام یک یا چند کاربر، valid-user در صورتی که فایل کلمه عبور حاوی تعداد زیادی نام کاربری است و group و نام گروههایی که نیاز به اجازه دسترسی به آنها وجود دارد باشد. برای مثال در مورد کاربران:
Require user alan armen
جهت ایجاد یک فایل کلمات عبور باید از دستور htpasswd استفاده نمایید:
# htpasswd -c .htpasswd alan
این دستور یک فایل کلمه عبور به نام htpasswd. و یک کاربر به نام alan ایجاد نموده و از شما درخواست خواهد کرد تا کلمه عبور آنرا نیز تعریف نمایید. از نظر امنیتی بکارگیری احراز هویت نوع Basic جهت امور حساس چندان مناسب نیست، زیرا با اینکه کلمات عبور در فایلهای حاوی آن با رمزنگاری MD5 ذخیره میشوند، تبادل نام کاربری و کلمه عبور بین سرویسدهنده و سرویسگیرنده با استفاده از متن ساده انجام میگیرد و در صورت وجود sniffer میتواند خوانده شود. در این گونه موارد باید از نوع Digest استفاده شود. برای استفاده از این قابلیت باید ماژول mod_auth_digest در سرویسدهنده فعال شود. به این منظور میتوانید از دستور زیر استفاده کنید:
# apache-modconf apache enable mod_auth_digest
سپس فایل htaccess. را مانند مثال زیر ویرایش نمایید:
AuthType Digest
AuthName "Private"
AuthDigestFile /var/www/rest/.htdigest
Require valid-user
و فایل htdigest. را نیز ایجاد نمایید:
# htdigest -c .htdigest auth alan
البته توجه داشته باید تبادل digest در برخی از مرورگرها پشتیبانی نمیشود، بنابراین برای حداکثر سازگاری بهتر است از SSL به همراه htaccess استفاده نمایید.
گروهها در فایلها htaccess هنگامی اهمیت پیدا میکنند که شما تعداد زیادی کاربر داشته باشید که هر یک باید به محلهای خاصی بر روی سرویسدهنده دسترسی داشته باشند. به این صورت میتوانید یک فایل مرکزی htpasswd ایجاد کرده و با گروهبندی کاربران، دسترسیهای آنها را به محلهای مناسب امکانپذیر نمایید. با استفاده از کلمات کلیدی AuthGroupFile که نشاندهنده فایل حاوی گروهها و نامهای کاربری است و Require group استفاده نمایید.
فایل گروه یک فایل متنی است که با نام گروه و یک کالن شروع شده و کاربران عضو گروه به دنبال هم در آن قرار میگیرند:
dev-group: alan armen
sup-group: nick jake
برای اینکه احراز هویت با استفاده از فایل گروه صورت گیرد، میتوان فایل htaccess. مثال بالا را به صورت زیر تغییر داد:
AuthUserFile /var/www/rest/.htpasswd
AuthGroupFile /var/groups
AuthName "Authentication Required"
AuthType Basic
Require group dev-group
هنگامی که از احراز هویت با استفاده از فایل گروه استفاده میکنید، آپاچی در حقیقت احراز هویت را در دو مرحله انجام میدهد. نخست بررسی میکند که آیا کاربر مورد نظر در گروه وجود دارد یا نه و دوم اینکه کلمه عبور ارسال شده صحیح است یا خیر. هر کدام از این دو مرحله که با شکست مواجه شود، دسترسی کاربرد به منبع مورد نظر مسدود خواهد شد. نکتهای که باید به آن توجه داشته باشید این است که فایل حاوی گروهها را در دایرکتوری که قرار است از آن حفاظت کند و یا در کل مسیرDocumentRoot آپاچی قرار ندهید، زیرا کاربران قادر خواهند بود آنرا دانلود نمایند.
Virtual Hosting در آپاچی
ویژگیهای Virtual Hosting آپاچی به منظور بکارگیری در سرویسدهندههای فضای اینترنتی استفاده میشود. به عنوان یک سرویسدهنده حانگی یا اداری کوچک، احتمالا شما نیازی نخواهید داشت تا از این قابلیت سرویسدهنده آپاچی استفاده نمایید. هنگامی که اینترنت را میبینید، هر سرویسدهنده وب عهدهدار ارائه سرویس جهت دامنههای متعددی است. این امکان را قابلیتی در Apache به عنوان Virtual Hosting فراهم میسازد. جهت فعال کردن این قابلیت شما باید از گزینه NameVirtualHost به همراه آدرس IP و یا درگاهی که مایل هستید Virtual Hosting روی آن فعال شود، استفاده نمایید. مثال زیر یک Virtual Hosting را نمایش میدهد:
NameVirtualHost 212.68.80.137
VirtualHost 212.68.80.137>
ServerName www.clickrast.com (http://www.clickrast.com/)
ServerAlias clickrast.com
ServerAdmin postmaster@clickrast.com
DocumentRoot /home/clickrast/public_html
</VirtualHost>
در صورتی که مایل هستید جهت هر آدرس IP یک دامنه جداگانه اختصاص دهید، نیازی به استفاده از گزینه NameVirtualHost نیست و در خط مربوط به VirtualHost نیز باید نام دامنه را بجای آدرس IP وارد نمایید.
قابلیت Virtual Hosting آپاچی این امکان را نیز فراهم میسازد تا بتوانید فایلهای ثبت رخداد سفارشی و خاص هر سایت نیز ایجاد نمایید:
ErrorLog logs/host.some_domain.com-error.log
CustomLog logs/host.some_domain.com-access.log common
فایل پیکربندی modules.conf
قابلیتهای مختلف سرویسدهنده آپاچی و پشتیبانی از زبانها و اسکریپتهای مختلف در آن از طریق قطعاتی بنام ماژول صورت میگیرد. فایل modules.conf جهت اضافه کردن و ویرایش ماژولهای فعال در سرویسدهنده میباشد. دستوری به نام apache-modconf وجود دارد که با استفاده از آن قادر هستید تا ماژولها را در سرویسدهنده دبیان خود مدیریت نمایید. البته بسیاری از بستههای نرمافزاری مانند php4 هنگام نصب این فایل را برای شما تنظیم میکنند:
# apache-modconf
Error: /usr/sbin/apache-modconf has been called with invalid parameters
Usage: /usr/sbin/apache-modconf apache|apache-perl|apache-ssl [enable <module_name>]
/usr/sbin/apache-modconf apache|apache-perl|apache-ssl [disable <module_name>] [quiet]
/usr/sbin/apache-modconf apache|apache-perl|apache-ssl [query <module_name]
توجه داشته باشید که این دستور و سایر دستورات مدیریتی آپاچی تنها توسط کاربر ریشه قابل اجرا میباشند
سرویسدهنده وب آپاچی نخستین بار جهت اصلاح و وصله کردن سرویسدهنده وب NCSA ایجاد شد و طی سالها توسعه، به موقعیت کنونی خود به عنوان یک سرویسدهنده وب بسیار قابل اطمینان و پر استفادهترین سرویسدهنده وب جهان با آمار استفاده حدود ۷۰ درصد (Netcraft Ltd - Internet Research, Anti-Phishing and PCI Security Services (http://www.netcraft.com))، دست یافته است و به نوبه خود یکی از موفقترین پروژههای نرمافزارهای بازمتن نیز میباشد.
نصب سرویسدهنده آپاچی
نصب سرویسدهنده وب آپاچی در توزیعهای لینوکس همانند نصب سایر بستههای نرمافزاری است. کافی است بستههای آنرا از روی دیسکهای نصب توزیع مورد استفاده خود بر روی سیستم نصب نمایید. در دبیان گنو/لینوکس کافی است دستور زیر را بصورت کاربر ریشه جهت نصب آپاچی صادر نمایید:
# apt-get install apache
روش دیگر نصب سرویسدهنده وب آپاچی دریافت و کامپایل آن بطور کامل از کد منبع میباشد. جدیدترین نسخههای Apache را میتوانید از وب سایت پروژه آن در آدرس Welcome! - The Apache Software Foundation (http://www.apache.org) دریافت نمایید. البته شخصا این کار را به دلیل دشواری در بروز نگه داشتن سرویسدهنده از نظر امنیتی توصیه نمیکنم.
در صورتی که نصب سرویسدهنده آپاچی با موفقیت انجام پذیرد، اکنون میتوانید با هدایت مرورگر خود به آدرس سرویسدهنده که همان آدرس IP یا DNS آن خواهد بود، صفحه test آپاچی را مشاهده نمایید. در صورتی که بر روی سرویسدهنده خود محیط X را ندارید، میتوانید برای آزمایش از مرورگرهای متنی مانند lynx استفاده نمایید.
سرویسدهنده آپاچی همچنین به صورت یک نسخه با پشتیبانی از SSL یا Secure Socket Layer نیز ارائه میشود که نصب آن همانند نسخه معمولی آپاچی بوده با این تفاوت که تبادل دادهها بین سرویسدهنده و سرویسگیرنده بصورت رمزنگاری شده انجام میشود. نسخه SSL دارای برخی ماژولها و Directive های اضافهتر نسبت به نسخه معمولی است. جهت نصب آن در دبیان کافی است دستور زیر را تایپ نمایید:
# apt-get install apache-ssl
باید در نظر داشته باشید که برای استفاده رسمی از قابلیتهای SSL باید یک Certificate مربوط به SSL را در سایتهایی که اینگونه خدمات را ارائه میدهند، ثبت نمایید تا قابلیت SSL سایت شما در مرورگرهای وب معتبر شناخته شود. در غیر اینصورت، تنها میتوانید از قابلیتهای ساده رمزنگاری SSL بر روی سرویسدهنده خود استفاده نمایید. مانند رمزنگاری سیستمهای مدیریتی مبتنی بر وب.
فایلهای پیکربندی آپاچی
تنظیمات سرویسدهنده آپاچی در فایلهایی متنی ذخیره میشود که به آنها اصطلاحا فایلهای پیکربندی یا Configuration Files اطلاق میگردد. فایلهای پیکربندی اصلی آپاچی عبارتند از:
- httpd.conf : تنظیمات اصلی سرویسدهنده
- modules.conf : تنظیمات مربوط به فعال و غیر فعال سازی ماژولهای آپاچی
- access.conf : میتواند حاوی تنظیمات دسترسی باشد
- srm.conf : حاوی برخی تنظیمات دیگر آپاچی مانند DocumentRoot
نکتهای که باید به آن توجه داشته باشید این است که تمام این فایلهای پیکربندی در تمام توزیعها وجود ندارند و یا از آنها استفاده نمیشود. مثلا در دبیان تنها از httpd.conf و modules.conf استفاده میشود.
با اینکه بستههای نرمافزاری آپاچی بسیاری از تنظیمات لازم برای آنرا برای شما انجام میدهند، هنوز تنظیمات زیادی وجود دارند که شما میتوانید با استفاده از آن از سرویسدهنده خود برای امور بیشتری مانند ارتباطات رمزنگاری شده، دسترسی حفاظت شده یا Virtual Hosting استفاده نمایید.
توجه داشته باشید که apache-ssl دارای فایلهای پیکربندی مخصوص به خودش ولی مشابه با فایلهای پیکربندی apache است که در مسیر /etc/apache-ssl/ موجود هستند.
کنترل سرویسدهنده آپاچی
در بسته دبیان آپاچی اسکریپتی به نام apachectl برای کنترل راهاندازی و توقف سرویسدهنده گنجانده شده است. این اسکریپت ممکن است در سایر توزیعها نیز وجود داشته باشد. از طریق این دستور و دستورات دیگر میتوانید سرویسدهنده آپاچی را کمترل نمایید:
# apachectl
usage: /usr/sbin/apachectl (start|stop|restart|fullstatus|status|graceful|con figtest|help)
-start :راه اندازی سرویسدهنده آپاچی
-stop: توقف سرویسدهنده آپاچی
-restart: راهاندازی مجدد . یا راهاندازی در صورت متوقف بودن سرویسدهنده
-fullstatus: نمایش یک صفحه وضعیت کلی از سرویسدهنده. به مرورگر lynx و ماژول mod_status نیاز میباشد
-status: نمایش یک خلاصه وضعیت از سرویسدهنده. به مرورگر lynx و ماژول mod_status نیاز میباشد.
-configtest: آزمایش فایلهای پیکربندی جهت نبود خطا پیش از بکارگیری آن در سرویسدهنده
در صورتی که در توزیع شما دستور apachectl وجود ندارد، میتوانید از این دستور استفاده نمایید:
# /etc/init.d/apache
Usage: /etc/init.d/apache {start|stop|reload|reload-modules|force-reload|restart}
فایل پیکربندی httpd.conf
تنظیمات اصلی سرویسدهنده آپاچی در این فایل قرار دارند. مانند تنظیمات نوع سرویسدهنده، محل فایلهای ثبت رخداد، نام کاربر اجرا کننده سرویسدهنده و...
- ServerType: این گزینه یا directive تعیین کننده چگونگی اجرای سرویسدهنده آپاچی شما بر روی ماشین است. در صورتی که سرویسدهنده به صورت Standalone اجرا میشود، برای اجرا یا توقف آن از اسکریپتهای ثانویه دیگری استفاده میشود و تنها کاربر ریشه میتواند سرویسدهنده را اجرا یا متوقف نماید. انتخاب دیگری که در این بخش قابل استفاده است، inetd است. در این صورت، تنها هنگامی که درخواستی به سرویسدهنده ارسال شود، اجرا خواهد شد و پس از اتمام تقاضا، سرویسدهنده تا دریافت درخواست بعدی متوقف خواهد شد. این حالت برای محیطهای توسعه نرمافزار مناسب است تا یک سرویسدهنده درگیر وب.
ServerType standalone
-Port : شماره درگاهی که سرویسدهنده شما به آن گوش خواهد داد. پیش گزیده آن درگاه شماره ۸۰ میباشد.
Port 80
- HostnameLookups : در صورتی که این گزینه بر روی On تعریف شده باشد، در فایلهای ثبت رخداد، بجای آدرس IP، نام واقعی Host سرویسگیرندهها درج خواهد شد. تنظیم آن بر روی On مفید است، مخصوصا هنگامی که بخواهید بدانید که بازدید کنندهای از چه سایتی است.
HostnameLookups Off
- مالکیت (User/Group) : این گزینه نقش بسیار مهمی بر روی امنیت سیستم شما خواهد داشت. سرویس وب بصورت ریشه اجرا شده و سپس سطح دسترسی خود را به یک کاربر و گروه خاص کاهش میدهد. این بخش تعیین کننده نام و گروهی است که در این مورد استفاده خواهد شد. در دبیان، هنگام نصب بسته آپاچی، کاربر و گروهی به نام www-data ایجاد و از آن به این منظور استفاده خواهد شد. دلیل استفاده از این کاربر و گروه جلوگیری از نفوذ به درون سیستم از طریق سرویسدهنده وب میباشد. حساب www-data دارای حقوق دسترسی بسیار پایینی است.
User www-data
Group www-data
- ServerAdmin : این گزینه حاوی آدرس پست الکترونیک شخص اداره کننده سرویسدهنده است که باید یک آدرس پست الکترونیک معتبر باشد تا امکان گزارش اشکالات یا درخواستها به آن فراهم شود.
- ServerRoot : این گزینه نشاندهنده مسیری است که فایلهای مربوط به سرویسدهنده، مانند فایلهای پیکربندی در آن قرار دارند. بطور پیشگزیده etc/apache/ میباشد.
- BindAddress : سرویسدهنده آپاچی امکان ارائه سرویس به بیش از یک آدرس IP یا دامین اینترنتی را داراست. این گزینه تعیین کننده آدرسهای IP یا نامهای دامنهای است که سرویسدهنده آپاچی وظیفه سرویسدهی به آنها را بر عهده دارد. این گزینه را میتوان همراه با Virtual Hosting بکار برد.
- Listen: این امکان را فراهم میسازد تا بتوان آپاچی را بر روی درگاهها و شمارههای IP متنوعی به کار گرفت. این گزینه بسیار شبیه به BindAddress میباشد.
- ثبت رخداد: ثبت رخدادها به دلایلی بسیار مهم است. این دلایل عبارتند از: پیدا کردن و رفع اشکال در سرویسدهنده، ضبط فعالیت سایتها و سرویسدهنده. در این بخش از فایل پیکربندی httpd.conf محل و مسیر فایلهای ثبت رخداد تنظیم میشود. مسیر پیشگزیده فایلهای ثبت رخداد آپاچی، مسیر var/log/apache/ است. دو فایل ثبت رخداد اصلی در آپاچی وجود دارد. error.log جهت ذخیره خطاهایی که در سرویسدهنده رخ میدهد (مانند خطاهای شماره ۵۰۰) و access.log که تمامی دسترسیهای صورت گرفته به سرویسدهنده در آن ذخیره خواهد شد. این فایلها را میتوانید با استفاده از یک ویرایشگر متنی ساده بررسی نمایید و یا با دستور زیر آنرا مانیتور نمایید:
# tail -f /var/log/apache/error.log
فایلهای ثبت رخداد apache-ssl در مسیر /var/log/apache-ssl/ قرار دارند.
- ServerName : این گزینه تعیین کننده این مطلب است که سرویسدهنده با چه نامی روی شبکه اینترنت شناخته میشود و شامل یک نام ثبت شده میباشد. این گزینه بصورت پیشگزیده غیر فعال بوده و شما باید آنرا بصورت دستی فعال نمایید.
- CacheNegotiatedDocs : این بخش حاوی چندین گزینه سیستمی است. گزینه نخست که میباشد، باعث خواهد شد تا سرویسدهنده Proxy صفحات سرویسدهنده را Cache نماید.
- Timeout: همیشه ممکن است ارتباطات در اینترنت به دلایلی مانند ترافیک، خرابیها و... دچار تاخیر گردند. گزینه Timeout تعیین کننده مدت زمانی است که یک درخواست قادر است به سرویسدهنده وارد شده و از آن خارج شود. (ثانیه). سرویسدهنده قادر است درخواستهایی را که از زمان مجاز عبور کردهاند، متوقف نماید.
Timeout 300
- KeepAlive : هنگامی که این گزینه بر روی On تعریف شده باشد، سرویسدهنده قادر خواهد بود تا چندین تراکنش را بر روی یک Connection اجرا نماید. این گزینه به طرز فزایندهای سرعت کار سرویسدهنده را افزایش خواهد داد، زیرا به ازای هر درخواست یک اتصال جداگانه ایجاد نخواهد شد.
KeepAlive On
- MaxKeepAliveRequests : این گزینه حداکثر درخواستهای ارسالی از سمت یک سرویسگیرنده را تعیین خواهد نمود.
- Server Pool : این بخش چگونگی اجرای دیمن آپاچی را تعیین میکند. گزینههای MinSpareServers و MaxSpareServers تعیین کننده تعداد پروسههای child سرویسدهنده آپاچی است. این گزینه برای بهبود Performance سرویسدهنده هنگام افزایشهای ناگهانی بار بسیار مفید است. اعداد پیشگزیده ۵ و ۱۰ سرویسدهنده child میباشد. گزینه StartServers نیز تعیین کننده تعداد سرویسدهندههای child در هنگام آغاز به کار آپاچی میباشد. در صورتی که مقدار StartServers کمتر از MinSpareServers تعیین شود، سرویسدهنده با مقدار تعیین شده در MinSpareServers راهاندازی خواهد شد.
MinSpareServers 5
MaxSpareServers 10
StartServers 5
- MaxClients : حداکثر تعداد سرویسگیرندههایی که میتوانند به طور همزمان به سرویسدهنده متصل شوند را تعیین میکند.
MaxClients 150
- DocumentRoot : مسیر اصلی قرار گیری فایلها و صفحات وب در سرویسدهنده آپاچی.
DocumentRoot /var/www
- AddCharset : تعیین کننده کاراکتر ستهای قابل پشتیبانی در آپاچی است که صفحات وب پردازش شده را تحت تاثیر قرار خواهد داد. باید AddCharset UTF-8 .utf8 برای پشتیبانی از utf8 فارسی در این بخش اضافه گردد:
AddCharset UTF-8 .utf8
- AddDefaultCharset : در صورتی که بر روی on تنظیم شده باشد، سرویسدهنده صفحات را بطور پیشگزیده با کاراکترست ISO-8859-1 پردازش خواهد نمود. برای پشتیبانی از utf8 باید بر روی off تنظیم شود.
- DirectoryIndex : فایلهایی که بصورت Index هر دایرکتوری شناخته خواهند شد، در این بخش تعریف میشوند. مانند index.html یا default.html. در برخی از نسخههای Apache در برخی از توزیعها باید گزینه index.php را بطور دستی اضافه نمایید.
DirectoryIndex index.html index.htm index.shtml index.cgi index.php
- UserDir : در صورتی که این گزینه فعال باشد، تمامی کاربران سیستم قادر خواهند بود تا صفحات وب مربوط به خود را بر روی سرویسدهنده داشته باشند که با آدرس http://localhost/~userid قابل دسترسی خواهد بود. localhost میتواند با آدرس IP یا نام دامنه تعویض گردد. کافی است تا هر کاربر یک پوشه public_html در دایرکتوری خانگی خود ایجاد نموده و صفحات وب مربوط به خود را در آنجا قرار دهد. برای استفاده از این قابلیت، ماژول UserDir باید در آپاچی فعال باشد:
LoadModule userdir_module /usr/lib/apache/1.3/mod_userdir.so
- Redirection and aliasing : این امکان شرایطی را فراهم میسازد تا بتوان فایلها و صفحات وب را در جایی غیر از جایی که سرویسگیرنده به آن اشاره مینماید ذخیره کرد. گزینه Redirect امکان هدایت یک آدرس URI خاص را به یک آدرس URL فراهم میسازد. مثلا ممکن است بر روی سرویسدهنده خود یک آدرس قدیمی داشته باشید که به آدرسی دیگری تغییر کرده باشد. با استفاده از این قابلیت قادر خواهید بود تا کاربرانی را که هنوز به آدرس قدیمی مراجعه مینمایند، بطور خودکار به آدرس جدید هدایت نمایید:
Redirect /data/ web site promotion click search at clickrast.com (http://www.clickrast.com/docs)/
Alias به فایلهایی که خارج از DocumentRoot سرویسدهنده قرار دارند، اشاره مینماید. به این معنی که در صورتی که نیاز داشته باشید تا فایلهای را که خارج از DocumentRoot سرویسدهنده قرار دارند از داخل سرویسدهنده آپاچی قابل دسترسی نمایید، از این کلمه کلیدی استفاده مینمایید:
Alias /doc/ /usr/share/doc/
گزینه ScriptAlias همانند Alias کار میکند با این تفاوت که تنظیم کننده موقعیت اصلی اسکریپتهای وب میباشد. مانند اسکریپتهای cgi:
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
- AddType : این گزینه برای اضافه کردن نوع فایل خاصی به فایلهای قابل شناسایی توسط سرویسدهنده میباشد. برای مثال در زیر تنظیم مربوط به فایلهای php را مشاهده مینمایید:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
- ErrorDocument : این گزینه جهت سفارشی سازی صفحات نمایش پیغامهای خطا بکار میرود. مانند نمایش یک صفحه HTML خاص و یا Redirect به آدرس وب خاص.
ErrorDocument 404 /missing.html
کنترل دسترسیها در آپاچی
سرویسدهنده آپاچی قادر به کنترل نحوه دسترسی به فایلها و دایرکتوریها از طریق درخواستهای ارسال شده به سرویسدهنده میباشد. Directiveهایی که در تنظیم میشوند، بر روی همان دایرکتوری تحت پوشش خود عمل مینمایند. کلمه کلیدی Options تعیین کننده ویژگیهایی است که در آن کاربر هنگام دسترسی به دایرکتوری مورد نظر قادر به استفاده از آنهاست. همچنین میتوانید تعیین کنید که دایرکتوری مورد نظر قادر به استفاده از فایلهای htaccess. باشد یا خیر. این امر توسط کلمه کلیدی AllowOverride صورت میگیرد.
<Directory /var/www/rest>
AllowOverride AuthConfig
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
</Limit>
<Limit PUT DELETE PATCH PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Order deny,allow
Deny from all
</Limit>
</Directory>
با استفاده از tagهای Limit قادر خواهید بود تا فرایندهای خاصی را بر روی دایرکتوری خاصی محدود نمایید. از کلمه کلیدی order جهت تعیین ترتیب اولویت گزینهها استفاده میشود. کلمات کلیدی Allow و Deny نیز جهت آزاد کردن یا محدود کردن فرایندها استفاده میشود.
برخی اوقات این امر اهمیت دارد تا دسترسی به دایرکتوری خاصی را محدود نمایید. ممکن است مایل باشید تا برای دسترسی به بخش خاصی، از کاربر درخواست کلمه و رمز عبور شود. به این قابلیت سرویسدهنده آپاچی کنترل دسترسی با استفاده از htaccess اطلاق میگردد. به این منظور ابتدا باید گزینه AccessFileName را در فایل پیکربندی httpd.conf فعال نمایید و یک فایل با همان نام در دایرکتوری مورد نظر که مایل به حفاظت از آن هستیدایجاد نمایید. توضیح اینکه گزینه AccessFileName بطور پیشگزیده در دبیان فعال میباشد.
AccessFileName .htaccess
سپس در فایل پیکربندی آپاچی باید کلمه کلیدی AllowOverride AuthConfig را همانگونه که در مثال بالا دیدید، برای دایرکتوری مورد نظرتان اضافه نمایید و در صورتی که این دایرکتوری در آن معرفی نشده است، باید آنرا مطابق مثال بالا در فایل پیکربندی آپاچی اضافه کنید. در زیر محتویات یک فایل htaccess. برای مثال نشان داده شده است:
AuthUserFile /var/www/rest/.htpasswd
AuthGroupFile /dev/null
AuthName "Authentication Required"
AuthType Basic
Require valid-user
کلمه کلیدی AuthUserFile نشان دهنده محل فایل حاوی کلمه عبور کاربر میباشد. AuthGroupFile نشان دهنده محل فایل گروه کابرانی است که میتوانند به این محل دسترسی پیدا کنند. AuthName نشاندهنده نام یا عنوان احراز هویت است. AuthType نیز نشانگر نوع احراز هویت است که میتواند از نوع Basic، Digest یا انواع مرتبط با بانکهای اطلاعاتی باشد. بخش Require نیز نوع درخواست سیستم احراز هویت را تعیین میکند و میتواند حاوی user و نام یک یا چند کاربر، valid-user در صورتی که فایل کلمه عبور حاوی تعداد زیادی نام کاربری است و group و نام گروههایی که نیاز به اجازه دسترسی به آنها وجود دارد باشد. برای مثال در مورد کاربران:
Require user alan armen
جهت ایجاد یک فایل کلمات عبور باید از دستور htpasswd استفاده نمایید:
# htpasswd -c .htpasswd alan
این دستور یک فایل کلمه عبور به نام htpasswd. و یک کاربر به نام alan ایجاد نموده و از شما درخواست خواهد کرد تا کلمه عبور آنرا نیز تعریف نمایید. از نظر امنیتی بکارگیری احراز هویت نوع Basic جهت امور حساس چندان مناسب نیست، زیرا با اینکه کلمات عبور در فایلهای حاوی آن با رمزنگاری MD5 ذخیره میشوند، تبادل نام کاربری و کلمه عبور بین سرویسدهنده و سرویسگیرنده با استفاده از متن ساده انجام میگیرد و در صورت وجود sniffer میتواند خوانده شود. در این گونه موارد باید از نوع Digest استفاده شود. برای استفاده از این قابلیت باید ماژول mod_auth_digest در سرویسدهنده فعال شود. به این منظور میتوانید از دستور زیر استفاده کنید:
# apache-modconf apache enable mod_auth_digest
سپس فایل htaccess. را مانند مثال زیر ویرایش نمایید:
AuthType Digest
AuthName "Private"
AuthDigestFile /var/www/rest/.htdigest
Require valid-user
و فایل htdigest. را نیز ایجاد نمایید:
# htdigest -c .htdigest auth alan
البته توجه داشته باید تبادل digest در برخی از مرورگرها پشتیبانی نمیشود، بنابراین برای حداکثر سازگاری بهتر است از SSL به همراه htaccess استفاده نمایید.
گروهها در فایلها htaccess هنگامی اهمیت پیدا میکنند که شما تعداد زیادی کاربر داشته باشید که هر یک باید به محلهای خاصی بر روی سرویسدهنده دسترسی داشته باشند. به این صورت میتوانید یک فایل مرکزی htpasswd ایجاد کرده و با گروهبندی کاربران، دسترسیهای آنها را به محلهای مناسب امکانپذیر نمایید. با استفاده از کلمات کلیدی AuthGroupFile که نشاندهنده فایل حاوی گروهها و نامهای کاربری است و Require group استفاده نمایید.
فایل گروه یک فایل متنی است که با نام گروه و یک کالن شروع شده و کاربران عضو گروه به دنبال هم در آن قرار میگیرند:
dev-group: alan armen
sup-group: nick jake
برای اینکه احراز هویت با استفاده از فایل گروه صورت گیرد، میتوان فایل htaccess. مثال بالا را به صورت زیر تغییر داد:
AuthUserFile /var/www/rest/.htpasswd
AuthGroupFile /var/groups
AuthName "Authentication Required"
AuthType Basic
Require group dev-group
هنگامی که از احراز هویت با استفاده از فایل گروه استفاده میکنید، آپاچی در حقیقت احراز هویت را در دو مرحله انجام میدهد. نخست بررسی میکند که آیا کاربر مورد نظر در گروه وجود دارد یا نه و دوم اینکه کلمه عبور ارسال شده صحیح است یا خیر. هر کدام از این دو مرحله که با شکست مواجه شود، دسترسی کاربرد به منبع مورد نظر مسدود خواهد شد. نکتهای که باید به آن توجه داشته باشید این است که فایل حاوی گروهها را در دایرکتوری که قرار است از آن حفاظت کند و یا در کل مسیرDocumentRoot آپاچی قرار ندهید، زیرا کاربران قادر خواهند بود آنرا دانلود نمایند.
Virtual Hosting در آپاچی
ویژگیهای Virtual Hosting آپاچی به منظور بکارگیری در سرویسدهندههای فضای اینترنتی استفاده میشود. به عنوان یک سرویسدهنده حانگی یا اداری کوچک، احتمالا شما نیازی نخواهید داشت تا از این قابلیت سرویسدهنده آپاچی استفاده نمایید. هنگامی که اینترنت را میبینید، هر سرویسدهنده وب عهدهدار ارائه سرویس جهت دامنههای متعددی است. این امکان را قابلیتی در Apache به عنوان Virtual Hosting فراهم میسازد. جهت فعال کردن این قابلیت شما باید از گزینه NameVirtualHost به همراه آدرس IP و یا درگاهی که مایل هستید Virtual Hosting روی آن فعال شود، استفاده نمایید. مثال زیر یک Virtual Hosting را نمایش میدهد:
NameVirtualHost 212.68.80.137
VirtualHost 212.68.80.137>
ServerName www.clickrast.com (http://www.clickrast.com/)
ServerAlias clickrast.com
ServerAdmin postmaster@clickrast.com
DocumentRoot /home/clickrast/public_html
</VirtualHost>
در صورتی که مایل هستید جهت هر آدرس IP یک دامنه جداگانه اختصاص دهید، نیازی به استفاده از گزینه NameVirtualHost نیست و در خط مربوط به VirtualHost نیز باید نام دامنه را بجای آدرس IP وارد نمایید.
قابلیت Virtual Hosting آپاچی این امکان را نیز فراهم میسازد تا بتوانید فایلهای ثبت رخداد سفارشی و خاص هر سایت نیز ایجاد نمایید:
ErrorLog logs/host.some_domain.com-error.log
CustomLog logs/host.some_domain.com-access.log common
فایل پیکربندی modules.conf
قابلیتهای مختلف سرویسدهنده آپاچی و پشتیبانی از زبانها و اسکریپتهای مختلف در آن از طریق قطعاتی بنام ماژول صورت میگیرد. فایل modules.conf جهت اضافه کردن و ویرایش ماژولهای فعال در سرویسدهنده میباشد. دستوری به نام apache-modconf وجود دارد که با استفاده از آن قادر هستید تا ماژولها را در سرویسدهنده دبیان خود مدیریت نمایید. البته بسیاری از بستههای نرمافزاری مانند php4 هنگام نصب این فایل را برای شما تنظیم میکنند:
# apache-modconf
Error: /usr/sbin/apache-modconf has been called with invalid parameters
Usage: /usr/sbin/apache-modconf apache|apache-perl|apache-ssl [enable <module_name>]
/usr/sbin/apache-modconf apache|apache-perl|apache-ssl [disable <module_name>] [quiet]
/usr/sbin/apache-modconf apache|apache-perl|apache-ssl [query <module_name]
توجه داشته باشید که این دستور و سایر دستورات مدیریتی آپاچی تنها توسط کاربر ریشه قابل اجرا میباشند