
Apache یک منبع آزاد، محبوب و محبوب HTTP Server است که در سیستم عامل های یونیکس مانند لینوکس و همچنین سیستم عامل ویندوز اجرا می شود. از زمان انتشار آن ۲۰ سال پیش، این محبوب ترین وب سرور بوده که چندین سایت اینترنتی را در اینترنت فعال کرده است.
در این پست ما توضیح خواهیم داد که چگونه نصب، پیکربندی و مدیریت سرور وب آپاچی HTTP در سرور CentOS 6.5 یا RHEL 7 با استفاده از خط فرمان داشته باشید.
- نصب سرویسدهنده وب آپاچی در توزیعهای لینوکس همانند نصب سایر بستههای نرمافزاری است. کافی است بستههای آنرا از روی دیسکهای نصب توزیع مورد استفاده خود بر روی سیستم نصب نمایید. کافی است دستور زیر را بصورت کاربر root جهت نصب آپاچی صادر نمایید:
sudo yum install httpd
در صورتی که نصب سرویسدهنده آپاچی با موفقیت انجام پذیرد، اکنون میتوانید با هدایت مرورگر خود به آدرس سرویسدهنده که همان آدرس IP یا DNS آن خواهد بود، صفحه test آپاچی را مشاهده نمایید. در صورتی که بر روی سرویسدهنده خود محیط X را ندارید، میتوانید برای آزمایش از مرورگرهای متنی مانند lynx استفاده نمایید.
سرویسدهنده آپاچی همچنین به صورت یک نسخه با پشتیبانی از SSL یا Secure Socket Layer نیز ارائه میشود که نصب آن همانند نسخه معمولی آپاچی بوده با این تفاوت که تبادل دادهها بین سرویسدهنده و سرویسگیرنده بصورت رمزنگاری شده انجام میشود. نسخه SSL دارای برخی ماژولها و Directive های اضافهتر نسبت به نسخه معمولی است. جهت نصب آن کافی است دستور زیر را تایپ نمایید:
sudo yum install openssl
باید در نظر داشته باشید که برای استفاده رسمی از قابلیتهای SSL باید یک Certificate مربوط به SSL را در سایتهایی که اینگونه خدمات را ارائه میدهند، ثبت نمایید تا قابلیت SSL سایت شما در مرورگرهای وب معتبر شناخته شود. در غیر اینصورت، تنها میتوانید از قابلیتهای ساده رمزنگاری SSL بر روی سرویسدهنده خود استفاده نمایید. مانند رمزنگاری سیستمهای مدیریتی مبتنی بر وب.
فایلهای پیکربندی آپاچی
فایلهای پیکربندی اصلی آپاچی که در مسیر /etc/httpd/conf/httpd.conf قرار دارند، بهطور عمومی عبارتند از:
- httpd.conf: تنظیمات اصلی سرویسدهنده
- modules.conf: تنظیمات مربوط به فعال و غیرفعالسازی ماژولهای آپاچی
- access.conf: میتواند حاوی تنظیمات دسترسی باشد.
- srm.conf: حاوی برخی تنظیمات دیگر آپاچی مانند DocumentRoot
نکتهای که باید به آن توجه داشته باشید این است که تمام این فایلهای پیکربندی در تمام توزیعها وجود ندارند و یا از آنها استفاده نمیشود. مثلا در دبیان تنها از httpd.conf و modules.conf استفاده میشود.
- با اینکه بستههای نرمافزاری آپاچی بسیاری از تنظیمات لازم برای آنرا برای شما انجام میدهند، هنوز تنظیمات زیادی وجود دارند که شما میتوانید با استفاده از آن از سرویسدهنده خود برای امور بیشتری مانند ارتباطات رمزنگاری شده، دسترسی حفاظت شده یا Virtual Hosting استفاده نمایید.
فایل پیکربندی 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/httpd/ میباشد.
- BindAddress : سرویسدهنده آپاچی امکان ارائه سرویس به بیش از یک آدرس IP یا دامین اینترنتی را داراست. این گزینه تعیین کننده آدرسهای IP یا نامهای دامنهای است که سرویسدهنده آپاچی وظیفه سرویسدهی به آنها را بر عهده دارد. این گزینه را میتوان همراه با Virtual Hosting بکار برد.
- Listen: این امکان را فراهم میسازد تا بتوان آپاچی را بر روی
- درگاهها و شمارههای IP متنوعی به کار گرفت. این گزینه بسیار شبیه به BindAddress میباشد.
- ثبت رخداد: ثبت رخدادها به دلایلی بسیار مهم است. این دلایل عبارتند از: پیدا کردن و رفع اشکال در سرویسدهنده، ضبط فعالیت سایتها و سرویسدهنده. در این بخش از فایل پیکربندی conf محل و مسیر فایلهای ثبت رخداد تنظیم میشود. مسیر پیشگزیده فایلهای ثبت رخداد آپاچی، مسیر var/log/httpd/ است. دو فایل ثبت رخداد اصلی در آپاچی وجود دارد. error.log جهت ذخیره خطاهایی که در سرویسدهنده رخ میدهد (مانند خطاهای شماره ۵۰۰) و access.log که تمامی دسترسیهای صورت گرفته به سرویسدهنده در آن ذخیره خواهد شد. این فایلها را میتوانید با استفاده از یک ویرایشگر متنی ساده بررسی نمایید و یا با دستور زیر آنرا مانیتور نمایید:
tail -f /var/log/httpd/error.log
- ServerName : این گزینه تعیین کننده این مطلب است که سرویسدهنده با چه نامی روی شبکه اینترنت شناخته میشود و شامل یک نام ثبت شده میباشد. این گزینه بصورت پیشگزیده غیر فعال بوده و شما باید آنرا بصورت دستی فعال نمایید. اگر DNS name معتبری برای هاست خود ایجاد نکرده باشید کار نمیکند.
- CacheNegotiatedDocs : این بخش حاوی چندین گزینه سیستمی است. گزینه نخست باعث خواهد شد تا سرویسدهنده Proxy صفحات سرویسدهنده را Cache نماید.
- Timeout: همیشه ممکن است ارتباطات در اینترنت به دلایلی مانند ترافیک، خرابیها و… دچار تاخیر گردند. گزینه Timeout تعیین کننده مدت زمانی است که یک درخواست قادر است به سرویسدهنده وارد شده و از آن خارج شود. (ثانیه). سرویسدهنده قادر است درخواستهایی را که از زمان مجاز عبور کردهاند، متوقف نماید.
Timeout 300
- KeepAlive : هنگامی که این گزینه بر روی On تعریف شده باشد، سرویسدهنده قادر خواهد بود تا چندین تراکنش را بر روی یک Connection اجرا نماید. این گزینه به طرز فزایندهای سرعت کار سرویسدهنده را افزایش خواهد داد، زیرا به ازای هر درخواست یک اتصال جداگانه ایجاد نخواهد شد.
KeepAlive On
- MaxKeepAliveRequests : این گزینه حداکثر درخواستهای ارسالی از سمت یک سرویسگیرنده را تعیین خواهد نمود.
- MaxClients : حداکثر تعداد سرویسگیرندههایی که میتوانند به طور همزمان به سرویسدهنده متصل شوند را تعیین میکند.
MaxClients 150
- Server Pool : این بخش چگونگی اجرای دامین آپاچی را تعیین میکند. گزینههایMinSpareServers (حداقل تعداد پروسههایی که میتواند بهصورت یدک نگه دارد) و MaxSpareServers (حداکثر تعداد پروسههایی که میتواند یدک نگه دارد) تعیین کننده تعداد پروسههای child سرویسدهنده آپاچی است. این گزینه برای بهبود Performance سرویسدهنده هنگام افزایشهای ناگهانی بار بسیار مفید است. اعداد پیشگزیده ۵ و ۱۰ سرویسدهنده child میباشد. گزینه StartServers نیز تعیین کننده تعداد سرویسدهندههای child در هنگام آغاز به کار آپاچی میباشد. در صورتی که مقدار StartServers کمتر از MinSpareServers تعیین شود، سرویسدهنده با مقدار تعیین شده در MinSpareServers راهاندازی خواهد شد.
MinSpareServers 5
MaxSpareServers 10
StartServers 5
- DocumentRoot : مسیر اصلی قرار گیری فایلها و صفحات وب در سرویسدهنده آپاچی.
DocumentRoot /var/www
- AddCharset : تعیین کننده کاراکتر ستهای قابل پشتیبانی در آپاچی است که صفحات وب پردازش شده را تحت تاثیر قرار خواهد داد. باید AddCharset UTF-8 .utf8 برای پشتیبانی از utf8 فارسی در این بخش اضافه گردد:
AddCharset UTF-8 .utf8
- AddDefaultCharset : در صورتی که بر روی on تنظیم شده باشد، سرویسدهنده صفحات را بطور پیشگزیده با کاراکترست ISO-8859-1 پردازش خواهد نمود. برای پشتیبانی از utf8 باید بر روی off تنظیم شود.
- DirectoryIndex : فایلهایی که بصورت 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
سپس با وارد کردن دستور زیر مطمئن می شویم که پس از ری استارت شدن سرور، مجددا سرویس وب سرور اتوماتیک اجرا بشود.
chkconfig httpd on
حالا باید با دستور زیر سرویس httpd را اجرا کنیم:
service httpd start
پس از این مراحل حالا نوبت به باز کردن پورت ۸۰ در فایروال IPtables است، برای اینکار لازم است دستورات زیر را به ترتیب در ترمینال وارد کنید:
iptables -I INPUT -p tcp --dport 80 -j ACCEPT service iptables save service iptables restart
هم اکنون می توانید با وارد کردن آدرس IP سرور محتوای مسیر پیشفرض DocumentRoot را نمایش خواهد داد.
مسیر پیش فرض DocumentRoot در وب سرور آپاچی به صورت زیر می باشد:
/var/www/html
شما می توانید فایل های خود را در این دایرکتوری آپلود کنید تا زمانی که آدرس IP سرور را در مرورگر وارد می کنید فایل های تعیین شده خودتان را مشاهده کنید.