یکی از مهمترین کاربردهای لینوکس به عنوان سرور، ارائه سرویسهای مربوط به وب است. به طوری که سهم بسیار زیادی از بازار سرویسدهندگان وب و هاستها به آن تعلق داشته و مایکروسافت با ویندوزهای سرور همواره به دنبال رقابت با آن و کسب سهم بیشتری از خدمات هاستینگ است. با این حال، طبق پیشبینیها به نظر نمی رسد که تا چند سال آینده، مایکروسافت بتواند سهمی حتی مساوی با لینوکس در سرورهای وب بهدست آورد. ترکیب سیستمهای اپن سورس و قدرتمندی مانند Apache (نرمافزار وب سرور لینوکس که مایکروسافت با IIS با آن رقابت میکند)، سرور پایگاه داده MySQL (معادل SQL Server) و زبان داینامیک سرور PHP (معادل ASP) پلتفرمي را به وجود آورده که بهاختصار LAMP نامیده ميشود و در زمینه ارائه خدمات وب کمنظیر است تا جایی که مایکروسافت به دنبال پشتیبانی از آنها روی ویندوز و ایجاد یک WAMP است. با اینکه در این مقاله نمیخواهیم یک LAMP روشن کنیم، اما به توضیح و بررسی نحوه پیکربندی یک وب سرور در لینوکس میپردازیم. فرض بر آن است که یک کامپیوتر با یک سیستم عامل نصب شده لینوکس آماده است و ما به تبیین و توضیح چگونگی نصب و پیکربندی وب سرور روی آن میپردازیم. برای اتصال سیستم به اینترنت، بهترین گزینه یک اتصال128 مگابيت در ثانيه یا بیشتر است، اما در صورت عدم دسترسی به این سرعت، انجام کار با سرويسهاي کندتر نيز امکانپذير خواهد بود، اگرچه بهيقين پاسخی که از سیستم دریافت خواهید کرد، فقط برای مقاصد آزمایشی قابل استفاده خواهد بود. همچنین برای شروع باید نرمافزار آپاچی (httpd) را با تمام ملحقاتش آماده کرده یا از نصب بودن آنها روی سیستم اطمینان حاصل کنید. پیکربندی سرور وب آپاچی (httpd) در این مقاله از وب سرور HTTP آپاچی (نسخههای 1,3 یا 2,0) استفاده خواهیم کرد. همانند تمام وب سرورهای پیشرفته، از آپاچی میتوان برای هاستینگ یک سایت منفرد روی سیستم استفاده کرده یا از آن به عنوان سرور دامنههاي(Domain Server)چندگانه استفاده کرد. ارائه سرویس برای سایتهای چندگانه روی یک سرور، به دو روش انجام ميگيرد: 1- با استفاده از Virtual Hostها؛ در این حالت برای سرویسدهی چندین سایت از یک IP برای چندین Domain استفاده میشود. به این نوع سرویسدهی Name Based هم گفته میشود. 2- با استفاده از Virtual Hostها باIPهای چندگانه؛ در این حالت برای هر Domain، یک IP خاص استفاده میشود که به آن IP Based نیز میگویند.همچنین، میتوان در آپاچی در هر Domain، چندین SubDomain مختلف متعلق به کاربران متعدد داشت که نام آنها به فرض برای http://www.domain.com/~user1,user1 خواهد بود. در صورتی که دامینی در سیستم پیکربندی نکردهاید، این آدرس از طریق IP آدرس بهصورت http://XXX.XXX.XXX.XXX/~user1 قــابــل دسترسی است. در این مقاله، بیشترین کار ما با فایل تنظیمات آپاچی است، زيرا مهمترین امر تغییر پیکربندی پیشفرض نرمافزار و اعمال تغییرات دلخواه در آن است. اعمال این تغییرات از راههای مختلف امکان پذیر است که ویرایش مستقیم فایل متنی پیکربندی، سادهترین آنها و مورد استفاده ما در اینجا است. ابزارهای گرافیکی مختلفی نیز برای اعمال تغییرات روی آپاچی وجود دارند که با یک جستوجوی کوتاه در وب میتوانید با آنها آشنا شوید. تنظیمات و اطلاعات پیکربندی آپاچی در دایرکتوریetc/httpd/conf/httpd.conf/ ذخیره میشوند. با استفاده از تنظیمات پیشفرض سیستم، دایرکتوری که صفحات وب از آن Serve میشوند، بسته به توزیع، درsrv/www/htdocs//home/httpd/html/،/var/www/html/ یا ... خواهند بود. با استفاده از این تنظیمات صفحه اصلی سایت فایل index.html در نظر گرفته میشود. در جدول 1 فهرستی از فایلهای مهم آپاچی به تفکیک توزیع لینوکس آورده شده است. جدول 1فهرستي از فایل های مهم Apache در توزیعهای مختلف روال کار به گونهای است که پس از اعمال تغییرات در پیکربندی، باید نرمافزار را اجرا یا restart کرد. برای اجرای نرمافزار کافی است از اسکریپتهای مربوطه استفادهکنید. اسکریپتهای مذکور با استفاده از آوردن دایرکتیوهای start، stop، status و restart در ادامه دایمون بهصورت زیر قابل اجرا هستند :etc/rc.d/init.d/httpd restart/ برای اجرای خودکار این اسکریپتها هنگام بوت سیستم، میتوانید با استفاده از دستور زیر آنها را به فرآيند اضافه کنید: chkconfig --add httpd بهعلاوه، میتوان با استفاده از دستور کنترل آپاچی، يعنيpachectl، نیز نرمافزار را کنترل کرده و کارهایی از قبیل اجرا، پایان و اجرای دوباره را به نرمافزار ارسال کرد. با این روش فقط کافی است از دستور : apachectl directive یا apache2ctl directive استفاده کرد که در آنها directive یکی از موارد جدول 2 خواهد بود. برای پیکربندی هاستهای مجازی، باید در فایلهای پیکربندی تغییراتی ایجاد کنيم. ممکن است این تنظیمات در هر توزیع متفاوت باشد و به گونهای کاملاً متفاوت ذخیره شوند. در حالت کلی و در توزیعهای Fedora، SuSE و مشابه آنها باید تغییرات را در فایل پیکربندی اصلی ایجاد کرد. بـرای پیـکربنـدی یـک هـاست مـجـازی Named Based باید کدی مشابه فهرست 1 در فایل پیکربندی درج کرد. همانطور که گفته شد، پیکربندی هاستهای مجازی این اجازه را می دهند که Domain های مختلف روی یک سرور اجرا شوند. جدول 2- دایرکتیوهای فرمان کنترل Apache در فهرست 1، سرور را طوری تنظیم کــردهایــــم کــــه هـــم درخـواســـتهــای http://www.your-domain.comوyour-domain.com پاسخ یکسان دهد. برای یک هاست مجازی، میتوان بیش از یک IP آدرس استفاده کرد. براي مثال، اگر وب سرور، همزمان فايروال يا دروازه شبکه است، ميتوانيد IP خارجي اينترنت خود را به همراه IP مربوط به شبکه داخلي خود در فايل پيکربندي استفاده کنيد. فهرست 2 مثالي در اين زمينه را نشان ميدهد. NameVirtualHost XXX.XXX.XXX.XXX - آدرس IP <VirtualHost XXX.XXX.XXX.XXX> ServerName http://www.your-domain.com - CNAME عبارتی که در نرم افزار دی ان اس بایند پیکربندی شده است ServerAlias your-domain.com - امکان ارائه سرویس به آدرس دامین بدون پیشوند ServerAdmin user1@your-domain.com DocumentRoot /home/user1/public_html ErrorLog logs/your-domain.com-error_log TransferLog logs/your-domain.com-access_log </VirtualHost> فهرست 1- تنظیمات مربوط به یک هاست مجازی Named based NameVirtualHost XXX.XXX.XXX.XXX - IP آدرس خارجی اینترنت NameVirtualHost 192.168.XXX.XXX - IP آدرس مربوط به شبکه محلی <VirtualHost XXX.XXX.XXX.XXX 192.168.XXX.XXX> ... .. فهرست 2- استفاده از IP Address های چندگانه در آپاچی پس از اعمال تغییرات مورد نظر، باید Apache را Restart کنيم تا تنظیمات جدید اعمال شوند. پس از اجرای دوباره نرمافزار با پیکربندی جدید هاستهای مجازی، وب سایت اصلی و پیش فرض var/www/html/ غیرفعال خواهدشد. در این صورت، باید سایت پیش فرض را بهصورت یک هاست مجازی تعریف کرد که برای آن روالی مشابه آنچه در بالا گفته شد، باید طی شود. گاهی اوقات یک وب سایت از بیش از یک URL استفاده میکند. در این حالت، یک راه ساده برای ارجاع تمام آدرسها به یک هاست منفرد استفاده از Redirect در آپاچی است. فرض کنید میخواهیم دو آدرس http://www.your-domain.com و http://your-domain.com را برای سایت خود استفاده کنيم. فهرست3 کد مربوط را نشان ميدهد. <VirtualHost XXX.XXX.XXX.XXX> ServerName your-domain.com ServerAlias other-domain.com ServerAlias http://www.other-domain.com Redirect permanent / http://www.your-domain.com.com/ </VirtualHost> ... .. فهرست 3- Redirect کردن URL به URL دیگر همانطور که گفته شد، میتوان از مدل هاستهای مجازی IP Based نیز در آپاچی استفاده کرد. هرچند مدل Name Based بهدليل هزینه و مسائل دیگر در میان سرویسدهندگان معمولتر است، اما برای پیکربندی سرور در این حالت میتوان از کدی مشابه فهرست چهار استفاده کرد. نکتهای که باید به آن اشاره کرد، اين است که بلوک <*VirtualHost > دایرکتوری پیشفرض برای تمام آدرسهای IP تعریف شده است. توجه کنید که در این حالت، ممکن است سرور برای آدرسهای//: https کار نکند.برای انجام تغییرات در فایلهای پیکربندی و تغییر تنظیمات سرور علاوه بر تغییر مستقیم فایلهای مربوطه، میتوان از ابزارهای گرافیکی نیز استفاده کرد. نمونهای از این ابزارها که در توزیع Fedora استفاده میشود، در شکل1آورده شده است. این ابزار در دایرکتوریusr/bin/system-config-httpd/قابل دسترسی است. شكل 1- ابزار گرافیکی پیکربندی آپاچی در فدورا استفاده از PHP برای استفاده از php روی آپاچی، باید بستههاي php و perl روی سیستم نصب شده باشد. میتوانید این بستهها را با استفاده از apt-get یا RPM (بسته به توزیع لینوکس مورد استفاده) نصب کرده یا از نصب بودن آنها اطمینان حاصل کنید. پس از نصب بستههای نرمافزاری، دومین مرحله، اضافه کردن فایلهای php به فایلهای اجرایی پیش فرض است. برای این کار با اضافهکردن عبارت index.php در فایل etc/httpd/conf/httpd.conf/ بهصورت زیر: به آپاچی میگوییم که فایل index.php را نیز بهعنوان فایلهای پیش فرض در نظرگرفته و در صورت وجود آن در دایرکتوری هر سایت، صفحه اول سایت را با استفاده از این فایل رندر کند. NameVirtualHost * - Indicates all IP addresses <VirtualHost *> ServerAdmin user0@default-domain.com DocumentRoot /home/user0/public_html </VirtualHost> <VirtualHost XXX.XXX.XXX.101> ServerAdmin user1@domain-1.com DocumentRoot /home/user1/public_html </VirtualHost> <VirtualHost XXX.XXX.XXX.102> ServerAdmin user1@domain-2.com DocumentRoot /home/user2/public_html </VirtualHost> فهرست 4- پیکربندی یک هاست مجازی IP Based DirectoryIndex index.html index.htm index.php پس از اعمال تغییرات ذکرشده، باید فایل پیکربندی php را تنظیم کنیم. فایل پیکربندی php در توزیعهای ردهت در دایرکتوری etc/php.in/ و در Ubuntu در etc/php5/apache2/php.ini/ ذخیره میشود. قسمتی از محتویات این فایل در فهرست 5 آورده شده است.پس از اعمال تغییرات در تنظیمات php، باید آپاچی را restart کنید تا تنظیمات جدید به سیستم اعمال شوند. برای آزمایش سرور php میتوانید یک فایل php مشابه فهرست 6 در دایرکتوری home/user1/public_html/test.php/ ایجاد کرده و سپس با یک مرورگر آن را با آدرس http://localhost/~user1/test.php فراخوانی کنيد.در صورت مشاهده صحیح صفحه مذکور، سرور php آماده استفاده بوده و کار پیکربندی آن پایان یافته است. PHP: engine = On......display_errors = Offinclude_path = ".:/php/includes"......memory_limit = 32M ; Default is typically 8MB which is too low.......[MySQL]......mysql.default_host = superserver ; Hostname of the computermysql.default_user = dbuser...فهرست 5 - قسمتی از محتویات فایل پیکربندی php [/B][/LEFT] [LEFT]<?php phpinfo();?>فهرست 6 - یک فایل php ساده[/LEFT] Load Balancingسرورهادر صورتی که وب سرور خود را در یک محیط عملی و واقعی استفاده خواهید کرد، یکی از مهمترین مواردی که با آن مواجه خواهید شد، افزایش حجم ترافیک و بار روی سرورها و شبکه محلیتان است. در این حالت باید از یک راهبرد مناسب برای حفظ تعادل بارِ روی سرورها استفاده کرده تا علاوه بر حفظ کردن حالت عملیاتی سرورها، کیفیت خدمات مناسبی را نیز داشته باشید. گزینههای مختلفی برای پیادهسازی Load Balancing در سیستم وجود دارند که از جمله آنها، میتوان به موارد زیر اشاره کرد :1- DNS Round Robin: در این متد از DNS برای ارجاع کاربر بازدیدکننده به یکی از سرورهایی که در یک فهرست ذخیره شدهاند، استفاده میشود. این متد، بار ورودی را بین سرورهای فهرست فراهم شده تقسیم میکند.2- استفاده از یک سرور مجازی لینوکس برای ایجاد یک کلاستر Load Balance3- اجرای یک پروکسی معکوس: در این متد، با استفاده از یک اتصال خارجی اینترنت، ترافیک http، smtp، imap و pop3 به سرورهای مختلف در شبکه داخلی مسیردهی میشوند4- استفاده از ماجول mod_proxy: آپاچی که پردازش کدهای داینامیک در صفحات را به سرور دیگری منتقل کرده و از این طریق بار ترافیکی را بین چندین سرور تقسیم میکند.بررسی و توضیح هر کدام از این موارد در این مقاله نميگنجد، اما به یاد داشته باشید بهترین راهحل برای این کار استفاده از سرورهای مجازی در لینوکس است.[CENTER][IMG]http://www.pic.iran-forum.ir/images/m175iy75swx8a1kyr1oi.jpg[/IMG][/CENTER] [B][CENTER]جدول 3- لينك هاي سودمند براي اطلاعات بيشتر[/CENTER][/B] [B][COLOR=#FF1493]قدم بعدی[/COLOR][/B]در این مقاله اولین و ضروریترین کارهایی را که برای ایجاد یک وبسرور لازم است، مورد بررسی قرار دادیم. چگونگی اجرای آپاچی، تغییر در محتوا و تنظیمات پیکربندی، استفاده از هاستهای مجازی Name Based و IP Based، تنظیم PHP برای استفاده روی Apache و متدهای تنظیم بار روی سرورها از مواردی بودند که مورد بررسی قرار گرفتند. اما به يقين یک وب سرور تمام عیار به چیزی بیش از این نیازدارد. پس از پیکربندی سیستم با آپاچی و ارائه خدمات به درخواستهای http لازم است تا دیگر مجموعههای مربوط را نیز پیکربندی کنید. تنظیم سرور FTP، تعیین حق دسترسی کاربران، تنظیم پیکربندی DNS با استفاده از Bind و مدیریت دایمونهای زیر مجموعه و ... از جمله مواردی هستند که باید به عنوان مراحل بعدی در کاملکردن وب سرور خود در نظر بگیرید. با این حال چند مرحله دیگر تا ایجاد یک سرور تمام عیار فاصله ندارید. [CENTER][B][COLOR=#9400D3]چرا لينوكس؟[/COLOR][/B][/CENTER] بسیاری از کارشناسان لینوکس را بهعنوان بهترین گزینه برای وب هاستینگ به حساب میآورند. خصوصیاتی مانند قابلیت اطمینان، امنیت بالا، کاربرد آسان و قیمت بسیار پایینِ تهیه و پیکربندی سیستم باعث ایجاد چنین تصوری شده است.[B][COLOR=#FF1493]مزایای یک سرور لینوکس پایداری بال[/COLOR][/B]اسرورهای لینوکس به عنوان سرورهایی شناخته میشوند که برای زمان زیاد و بدون بروز اشکالات فنی به کار خود ادامه میدهند. به عبارت ديگر به سرورهايی با Down Time بسیار پایین معروف هستند. این خصیصه سرورهای لینوکس، بهخصوص در مقام مقایسه با سرورهای مایکروسافت که به دفعات متعدد به reboot شدن نیاز دارند، قابلیتی بسیار خوب محسوب شده و یک امتیاز به شمار میآید.[B][COLOR=#FF1493] امنیت بینظیر[/COLOR][/B]از لحاظ مسائل امنیتی و قابلیت آسیبپذیری سیستم نصبشده سرورهای لینوکس در اولویت هستند و تقریباً همه توزیعها و سرورهای لینوکس در بهترین وضعیت امنیتی در حال انجام کار هستند. این در حالی است که ویندوز برای انجام خدمات وب انتخاب بعدي کارشناسان IT خواهد بود.[CENTER][IMG]http://www.pic.iran-forum.ir/images/yp8ijkd00k15lrwbubv.jpg[/IMG][/CENTER] [B][COLOR=#FF1493] هزینه بسیار پایین[/COLOR][/B]مزیت دیگری که میتوان برای لینوکس تصور کرد، هزینه پایین راهاندازی کامل یک وب سرور لینوکس در مقابل معادل مایکروسافتیاش است. از آنجا که بيشتر خدمات و نرمافزارهای مربوط به لینوکس اپنسورس هستند، هزینه ناچیزی در پی خواهند داشت و این علاوه بر کاهش هزینه خدمات هاستینگ، هزینه کمتری نیز بر مشتریان نهایی وب سایتها تحمیل خواهد کرد. در مقابل، شرکتهایی که از خدمات هاستینگ ویندوز بهره می برند، برای تأمین هزینهها، ناچارند درصدی را بهعنوان هزینه خدمات به تعرفه خدمات کلی خود در وب سایت اصافه کنند.[B][COLOR=#FF1493] سازگاری بالا[/COLOR][/B]انــواع بـسـیـار زیــادی از فایــلهـا و فـنــاوريهــای بــرنامـهنـویـســی وب در لینوکس قابل استفادهاند. بهطور معمول، فایلهایcgi، .html، .htm، .pl .php، .shtml، .asp. (با استفاده از plug-in مناسب)xml و دیگر انواع از جمله ForntPage Extensions از طریق لینوکس قابل سرویسدهی هستند.[COLOR=#FF1493] قابلیت جابهجایی و مقیاس پذیری خوب[/COLOR]یک سایت طراحیشده برای اجرا روی لینوکس به راحتی قابلانتقال و اجرا روی یک وب سرور ویندوز است. در حالی که یک سایت طراحی شده برای سرور ویندوز امکان استفاده روی لینوکس را ندارد. این امر، انعطاف بالایی در سایت های تحت سرویس لینوکس ایجادکرده و پس از رشد و توسعه خدمات، امکان توسعه سایتها به سرورهای ویندوز نیز امکان پذیر است.[CENTER][IMG]http://www.pic.iran-forum.ir/images/3iba0jxhsy8guag5pxpu.jpg[/IMG][/CENTER] [B][COLOR=#FF1493]محبوبیت و پشتیبانی بهتر[/COLOR][/B]سـالیـان متـمـادی است کـه سـرورهـای یونیکس/ لینوکس بسیار بیشتر از سرورهای ویندوز برای ارائه خدمات وب مورد استفاده قرار میگیرند. بنابراين، این سیستمها امتحان خود را در تمام شرایط ممکن پس دادهاند و به نوعی بلوغ در ارائه خدمات وب دست یافتهاند. بهعلاوه، استفاده بسیار زیاد از آنها، امکان یافتن اطلاعات، رفع نقصهای احتمالی و پشتیبانی فنی سیستم را بسیار راحت و بی دردسر کرده است.[B][COLOR=#FF1493] منبع باز بودن[/COLOR][/B]سرورهای وب لینوکس، از مزیتی سود میبرند که هیچ سرور دیگری از آن برخوردار نیست. فراهم بودن کد نرمافزارها و امکان سفارشیسازی کل مجموعه سرور، رفع سریع باگها و نواقص سیستم بدون نیاز به انتظار برای رفع شدن این نقصها از طرف شرکت سازنده (سرویس پک های مایکروسافت) و پشتیبانی خیل عظیمی از توسعهدهندگان، استفادهکنندگان و مشارکتکنندگان مبتدي در رفع نقص سیستم و اشتراک اطلاعات بی پایان آنها از طریق جامعه اپنسورس.[B][COLOR=#FF1493]معایب سرور های لینوکس[/COLOR][/B]هیچ چیز در دنیا کامل نیست و هر چیزی که مزایایی دارد، معایبی نیز دارد. یکی از بزرگترین معایبهاست هایلینوکس، عدم توانایی آنها در استفاده از نرم افزارهای ویندوز و رویه های تبدیل کد است. زيراکدنویسی برای ایجاد سایتهای داینامیک با استفاده از پلتفرمهای تحت پوشش ویندوز و net. بسیار آسان بوده و برای ایجاد یک سایت ASP، زمان و انرژی به مراتب کمتری را باید مصرف کنید. البته، بستههاي آماده هاستینگی چون joomla ، mambo و... را که در حال تبدیل شدن به بستههای محبوبی برای استفاده در ساختار اصلی سایتهای php در لینوکس هستند، نیز نباید از یاد برد و به نوعی مشابه DotNetNuke در محیط ویژوال استودیو و هاست ویندوز – داتنت محسوب میشوند. با این حال، تا رسیدن آنها به بلوغ و تکامل راه زیادی باقی است. یکی دیگر از مسائلی که بهعنوان نقطه ضعف هاستینگهای لینوکس باید به آن اشاره کرد، پیکربندی سیستم هاست و تفاوت انواع آنها است. زيرا خیلی از شرکتهای هاست، بعضی از خدمات خاص را (با توجه به ماجولار بودن آنها) روی لینوکس ارائه نمیکنند و از این طریق امنیت و کیفیت خدمات سایت کاربران به مخاطره میافتد. هر چند لینوکس سیستم امنی است، اما خطا در پیکربندی یا ماجولهاي استفاده شده روی سرور میتواند مشکل ساز باشد. پس قبل از استفاده از هاستهای لینوکس، از استفاده از خدمات امنیتی پایه، فایروال، Load Balancing روی سروها و محافظت از حملههاي DoS یا Denial of Service روی سرورها اطمینان حاصل کنید.