تمامی سرویسدهندههای وب (Web Servers)، جهت استاندارد و یکسان بودن در نحوه ارسال، دریافت و پردازش دادهها، از یک پروتکل ساده موسوم به Hypertext Transfer Protocol یا HTTP استفاده میکنند. این پروتکل نرمافزارهای سرویسگیرنده وب را که به مرورگرهای وب (Web Browser) موسوم هستند، قادر میسازد تا بدون اینکه بدانند با چه سرویسدهنده وبی در حال ارتباط هستند، به تبادل داده بپردازند.
سرویسدهنده وب آپاچی نخستین بار جهت اصلاح و وصله کردن سرویسدهنده وب NCSA ایجاد شد و طی سالها توسعه، به موقعیت کنونی خود به عنوان یک سرویسدهنده وب بسیار قابل اطمینان و پر استفادهترین سرویسدهنده وب جهان با آمار استفاده حدود ۷۰ درصد (http://www.netcraft.com)، دست یافته است و به نوبه خود یکی از موفقترین پروژههای نرمافزارهای بازمتن نیز میباشد.
نصب سرویسدهنده آپاچی
نصب سرویسدهنده وب آپاچی در توزیعهای لینوکس همانند نصب سایر بستههای نرمافزاری است. کافی است بستههای آنرا از روی دیسکهای نصب توزیع مورد استفاده خود بر روی سیستم نصب نمایید. در دبیان گنو/لینوکس کافی است دستور زیر را بصورت کاربر ریشه جهت نصب آپاچی صادر نمایید:
# apt-get install apache
روش دیگر نصب سرویسدهنده وب آپاچی دریافت و کامپایل آن بطور کامل از کد منبع میباشد. جدیدترین نسخههای Apache را میتوانید از وب سایت پروژه آن در آدرس 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|configtest|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/ http://www.technotux.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
منبع:http://www.technotux.org