نصب Apache2 در RedHat و CentOS

نصب Apache2 در RedHat و CentOS

 Apache معادل اپن سورسی IIS است که قابل استفاده در تمامی سیستم های عامل مانند ویندوز، لینوکس، بی اس دی ها، مکینتاش و سولاریس می باشد. اکثر به همراه دو نرم افزار MySQL و PHP استفاده می شود که اگر این سه نرم افزار را در لینوکس نصب کنیم LAMP که مخفف Linux Apache MySQL PHP است گفته می شود. Apache بعنوان یک سرویس درخواست های ارسالی بین کلاینت و سرور مبتنی بر پروتکل های HTTPS,HTTP  را پاسخ می دهد. پورت 80 پیش فرض پروتکل HTTP و پورت 443 پیش فرض پورت HTTPS است. در این پست چگونگی نصب وب سرور را می خوانیم و همچنین می توانید از این پست نصب MySQL را بخوانید.

نصب در توزیع های مبتنی بر RedHat :

yum install httpd

 و برای start کردن سرویس httpd در توزیع های مبتنی بر RedHat از دستور های زیر استفاده کنید.

chkconfig  httpd on

etc/init.d/httpd start/

 

برای تست اینکه آیا وب سرور نصب و start شده است می توانید از دوروش استفاده کنید. اول اینکه با دستور netstat چک کنید که آیا پورت 80 باز است یا نه؟ دستور زیر اجرا کنید و خروجی را مانند شکل زیر ببنید.

 netstat -tulpn | grep :80

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

etc/init.d/httpd status/

محل دایرکتوری ها و فایل ها :

در توزیع های مبتنی بر RedHat دایرکتوری html در زیر دایرکتوری var/www/  استفاده می شود. این دایرکتوری محل قرار گرفتن فایل هایی مانند فایل های html,php از وب سایت است. فایل پیکربندی Apache به نام httpd.conf که در توزیع های مبتنی بر RedHat در مسیر etc/httpd/conf/  وجود دارد.

less /etc/httpd/conf/httpd.conf

وقتی که وب سرور Apache را نصب می کنید فرایند یا Daemon ی به نام httpd کنترل وب سرور را در اختیار می گیرد و برای پاسخ به هر درخواست از سوی کلاینت ها از روی این فرایند یک فرایند فرزند ایجاد شده و پاسخ به در خواست ها را می دهد. البته می توانید طوری وب سرور را تنظیم کنید که به ازای چندین در خواست برای اتصال به وب سرور یک فرایند فرزند پاسخ گوی در خواست ها باشد. پس از نصب Apache یک کاربر و یک گروه به نام apache ساخته می شود. بطور پیش فرض تنها کاربر root دسترسی r/w را روی فایل های درون دایرکتوری var/www/html/ دارد و اگر بخواهید دیگر کاربران هم بتوانند روی فایل ها کار کنند.  دستور زیر را برای نمایش اطلاعات این کاربر و گروه اجرا کنید :

grep  “^apache” /etc/passwd /etc/group

فایل پیکربندی :

فایل پیکربندی وب سرور به نام httpd.conf و در زیر دایرکتوری etc/httpd/conf/ قرار دارد. فایل از سه بخش اصلی تشکیل شده است :

  • Directives ها یا دستورالعمل هایی که وظیفه کنترل عملکرد وب سرور را دارند که global environment هم گفته می شوند.
  • Directives هایی که پارامتر های اصلی یا پیش فرض را نشان می دهند. این تنظیمات به غیر از تنظیمات Virtual Host ها هستند.
  • Directivesها یا دستور العمل های تنظیمات Virtual Host ها

از مهمترین پارامتر ها می توان به موارد زیر اشاره کرد، خطوطی که با # شروع می شوند نشان دهنده توضیحات هستند و حتی شاید ابتدای پارامتر ها هم # باشد که برای فعال کردن آن باید # را از ابتدای آن پاک کنید.

  • ServerRoot : که شاخه اصلی قرار گیری فایل های وب سرور در زیر این دایکتوری است و بصورت پیش فرض etc/httpd/ است. به هیچ عنوان در انتهای مسیر از / استفاده نکنید.
  • DocumentRoot : محل قرارگیری فایل ها و صفحات وب را تعیین می کند که بورت پیش فرض var/www/html/ است.
  • Timeout : مدت زمان دریافت درخواست و ارسال پاسخ را نشان می دهد. پس از اینکه درخواست اتصال کلاینت قبول می شود، کلاینت به اندازه این پارامتر بر حسب ثانیه اگر بی کار باشد اتصالش قطع می شود و وب سرور قادر است درخواست هایی که از این زمان عبور کرده اند را قطع کند.
  • KeepAlive : همانطور که گفته شد، هر فرزند از فرایند httpd وظیفه پاسخ گویی به در خواست ها و اتصال های کلاینت ها را دارد. مقدار پیش فرض این گزینه off است که در صورت تغییر به on هر فرزند می تواند پاسخ گوی چندین درخواست باشد. on کردن این گزینه باعث بالا رفتن کارایی می شود.
  • MaxKeepAliveRequests : بیشترین (حداکثر) تعداد درخواست ها  قابل قبول برای یک اتصال از سمت یک کلاینت. بالا بردن مقدار این گزینه باعث افزایش کارایی می شود.
  • KeepAliveTimeout : مقداری بر حسب ثانیه که مدت زمان انتظار برای دریافت درخواست بعدی از همان کلاینت و روی همان اتصال را تعیین می کند.
  • StartServers : تعداد فرایند هایی که زمان start شدن apache ایجاد می شوند. (فرایند های فرزند که مسئول پاسخ گویی به درخواست ها هستند)
  • MaxSpareServer و MinSpareServer : تعیین کننده تعداد فرایند های فرزند هستند. اعداد پیش فرض 5 و 10 هستند که یعنی باید حداکثر 5 فرزند از Apache و حداکثر 10 فرزند از Apache وجود داشته باشد. درصورتی که مقدار StartServer از مقدار MinSpareServer کمتر باشد، Apache از مقدار MinSpareServer استفاده می شود.
  • Port : شماره پورت پیش فرض که 80 است را تعیین می کند. اگر بخواهید صفحه ای را ببنید باید بصورت معمول بطور مثال آدرس www.example.com:80 را نوشت، ولی چون پورت پیش فرض 80 است می توان بصورت www.example.com هم نوشت.
  • Listen : وب سرور می تواند روی چندین پورت ارائه خدمات کند. اعداد این پورت ها جلوی این پارامتر و با فاصله از هم جدا می شوند. بطور مثال اگر پورتی با شماره 4655 تعیین کرد باید آدرس آنرا بصورت www.example.com:4655 نوشت.
  • ServerAdmin : مقدارش email مدیر است تا گزارش ها و خطاها به این ایمیل فرستاده شود.
  • ServerName : تعیین کننده نامی است که وب سرور با آن درشبکه شناخته می شود. مقدار آن بطور مثال می تواند بصورت ServerName www.example.com:80 باشد که دیگر کاربران یا از روی خود ماشین وب سرور با نوستن آدرس ServerName www.example.com:80 می توان به وب سرور دسترسی داشت. البته در این مورد باید یک رکورد در DNS نوشت که آدرس www.example.com را به آدرس وب سرور ترجمه کند. همچنین می تواند بصورت یک آدرس IP باشد.
  • AddDefaultCharset : تعیین کننده کارکتر ست پیش فرض که برای زبان پارسی باید UTF-8 باشد.
  • User/Group : گزینه ای بسیار مهم و تعیین کنند کاربر/گروهی که Apache تحت آن اجرا می شود. همانطور که گفته شد پس از نصب Apache کاربر و گروهی به نام apache ساخته می شود و همین کاربرو گروه مقدار پیش فرض همین پارامتر هستند.

User apache
Group apache

  • HostnameLookups : مقدار پیش فرض آن off است. ولی اگر مقدارش را on کنیم. بجای ثبت آدرس IP کلاینتی که به وب سرور اتصال یا درخواست فرستاده، نام واقعی یا Hostname آن ثبت خواهد شد.
  • MaxClients : مقدارش تعیین کننده حداکثر تعداد کلاینت هایی است که بصورت همزمان می توانند به وب سرور دسترسی داشته باشند.
  • LogLevel :نوع Log ی که نوشته می شود را کنترل می کند. Apache رویداد ها را توسط syslogd ثبت می کند.

اجرای اولین گام :

اگر بخواهید عملکرد وب سرور را ببنید کافیست یکی از آدرس های 127.0.01 یا localhost را در مرورگر سیستم عاملتان بنویسید تا صفحه ی زیر را ببنید.

اگر صفحه بالا نشان داده نشد باید بررسی کنید که آیا Apache فعال است یا نه؟ برای اینکار دستور زیر را اجرا کنید.

etc/init.d/httpd  status/

یا اگر مقدار پارامتر ServerName را تغییر دهید می توانید با نوشتن آن IP یا نام در مرورگر به وب سرور دسترسی داشته باشید. توجه داشته باشد که سیستم های دیگر درون شبکه قادر نیستند با آدرس های 127.0.01 یا localhost به وب سرور روی شبکه دسترسی داشه باشند پس باید مقدار این پارامتر را برابر ادرس وب سرور قرار دهید. برای این کار فایل را باز کنید و پارامتر ServerName را پیدا کنید. کارکتر # را از ابتدای آن پاک کنید و مقدار آن را به آدرس وب سرورتان بطور مثال 192.168.1.102 تغییر دهید.

ServerName 192.168.1.102

بعد از تغییرات بالا باید سرویس را restart کنیم. از دستور زیر استفاده کنید.

etc/init.d/httpd restart/

حالا اگر از خود سیستم وب سرور یا از دیگر ماشین ها در مرورگر آدرس 192.168.1.102:80 را بنویسد باید همان صفحه ی بالا را ببنید. اما اگر نتوانستید از دیگر سیستم ها وب سرور را ببنید و صفحه ی بالا نشان داده نشد ممکن است مشکل از فایروال باشد. باید هم در وب سرور و هم در کلاینت ها فایروال را طوری تنظیمم کنید که اجازه ارسال و دریافت بسته های http داده شود. برای تنظیم فایروال در توزیع های مبتنی بر RedHat دستور زیر را در خط فرمان اجرا کنید.(این تنظیمات در هردوی وب سرور و کلاینت انجام می شود)

system-config-firewall

و مطابق با شکل زیر ابتدا گزینه WWW(HTTP) را انتخاب کنید و سپس از منوی بالا روی Apply کلیک و سپس روی Yes کلیک کنید.