کامپیوتر و اُپن سورس(Computer & Open Source)

آموزش دروس رشته کامپیوتر - نرمافزار اشنایی باسخت افزار سیستم عامل لینوکس شبکه برنامه نویسی معرفی نرم افزار

کامپیوتر و اُپن سورس(Computer & Open Source)

آموزش دروس رشته کامپیوتر - نرمافزار اشنایی باسخت افزار سیستم عامل لینوکس شبکه برنامه نویسی معرفی نرم افزار

Shell چیست؟

به احتمال زیاد تا کنون بیشتر یا فقط با محیط های با رابط گرافیکی(GUI) کار کرده اید ، اما رابط کاربر دیگری که لینوکس و سایر سیستم عامل های شبه یونیکس یا برپایه ی یونیکس آن را دارند رابط خط فرمان یا Command Line Interface است که به اختصار CLI می نامند.قدرت حقیقی لینوکس و یونیکس در این رابط نهفته است و این رابط خط فرمان است که به مدت ۳۰ سال است که یونیکس را به عنوان قدرت مند ترین سیستم عامل مطرح کرد و اکنون این قدرت نهفته در تمام سیستم های شبیه یا برپایه ی یونیکس مانند لینوکس وجود دارد. زمانی می توان با یک سیستم عامل راحتر کار کرد که امکان کار با خط فرمان در آن فراهم شده باشد و در لینوکس این مهم صورت گرفته.

پوسته یا شل(shell) یک رابط است با ظاهری مانند آنچه در MS-DOS آن را دیده اید . البته در اصل پوسته (shell) یک رابط است میان انسان و هسته ی سیستم عامل که زبان انسان ها را به زبان ماشین تبدیل می کند تا هسته (Kernel) سیستم عامل آن را بفهمد . می تواندر یک تجسم غیر رسمی گفت که میزکار های ویندوز(windows) و مکینتاش (Macintosh OS) نیز یک پوسته ی گرافیکی هستند که رابط میان انسان و هسته ی این سیستم عامل هاست و زبان انسان را به زبان ماشین که برای هسته قابل فهم باشد ترجمه می کند.

در طول مدت بوجود آمدن یونیکس تا انتشار نهایی لینوکس پوسته های بسیاری منتشر شده و پوسته یک سیر تکاملی را پشت سر گزارده ، ما در بخش بعد ( همین مقاله ) سعی خواهیم کرد تا شما را با این سیر تحولی آشنا کنیم و در مقالات بعد به نهوه ی کار با این پوسته یا خط فرمان از مبتدی تا سطوح بالا تر خواهیم پرداخت.

انواع پوسته :

در این بخش به معرفی چند نمونمه ی معروف پوسته های مختلف خواهیم پرداخت البته در لینوکس می توان از تمام این پوسته ها استفاده کرد و در اغلب توزیع های کامل تمام این پوسته ها یافت می شوند اما پوسته ی پیش فرض اغلب ( اغلب نه تمام لینوکس ها ) پوسته ی bash می باشد ، دلیل این انتخاب قدرت و به روز بودن این پوسته و علاوه بر این ها انتشار این پوسته بر اساس مجوز GNU/GPL می باشد . ما رد این جا به ترتیب پوسته های Bourn shell و C shell و Korn shell و Bourn again shell و tch shell را مورد بررسی قرار خواهیم داد.

Bourne Shell یا sh

در اصل این پوسته در ازمایشگاه های بل توسط استیون بورن ( Stiven Bourne) برای سیستم عامل AT&T UNIX نوشته شد البته در لینوکس از این پوسته چندان استفاده نمی شود و در سایر نسخه های یونیکس مانند FreeBSD نیز این پوسته با یک نسخه به نام POSIX جایگزین شده .POSIX از ویرایشگر خط فرمان ، تاریخچه ی خط فرمان (که نه در sh بود نه در سایرCLI ها مانند DOS) و همین طور اسامی مستعار یا aliase ها به طور پیش فرض پشتیبانی می کرد.

C shell یا Csh

این پوسته که اغلب در BSD ها استفاده می شود توسط گروه توسعه دهندگان نرم افزار دانشگاه برکلی که از محدودیت های Bourne shell به ستوه آمده بودند ایجاد شد. دلیل نام گذاری این پوسته به C گرامر یا Syntax این پوسته است که به زبان برنامه نویسی C بسیار شباهت دارد و این موضوع خود باعث دشواری در نوشتن برنامه های پوسته یا Shell Programs می شود .(این برنامه ها درون خود پوسته اجرا می شوند برای اجرا حتمابه پوسته یا شل مخصوص به خود احتیاج دارند در واقع پوسته این برنامه ها را تفسیر می کند.) در این پوسته سیستم کنترل فعالیت هایا Job Controling و تاریخچه ی خط فرمان به صورت پیشرفته و کامل تر وجود دارد . البته در حال حاضر در FreeBSD نسخه های پیشرفته Csh با tcsh جایگزین شده که tcsh را در قسمت های بعد مورد بررسی قرار داده ایم. البته در لینوکس می توان ار هر دوی این پوسته ها استفاده کرد.

Korn shell یا ksh یا pdksh

شرکت AT&T پوسته ی ksh را در سال ۱۹۸۶ منتشر کرد ، این پوسته که توسط دیوید کورن (David Korn)نوشته شد ، پاسخی بود برای انتشار C shell .این پوسته مانند C shell از کنترل فعالیت (Job Controlling) ، تاریخچه ی خط فرمان (Command line History) و اسامی مستعار پشتیبانی می کرد و نسبت به Bourne shell بسیار کاربر پسند تر بود .در این نسخه برنامه نویسی نیز بسیار راحتر شده بود و همین طور ابزار های آن نیز بسیار بیشتر شده بودند.
 pdksh نیز یک Korn shell است با این تفاوت که یک نسخه ی Public domain می باشد که از pd ابتدای آن نیز می توان متوجه این موضوع شد.

Bourne Again shell یا bash

بش یا Bourne again shell یک پوسته ی سازگار و شبیه (ونه برپایه ی ) sh یا Bourne shell است که توسط توسعه دهندگان بنیاد نرم افزار آزاد ( FSF ) توسعه داده شد . همان طور که قبلا هم اشاره کردیم bash پوسته ی پیش فرض اغلب لینوکس ها است. این پوسته شبیه به پوسته ی ksh است با ابزار ها و قابلیت های بیشتر . از جمله غابلیت های جدید این پوسته راهنمای درونی یا Built-in Help آن است همین طور ویرایش مستقیم خط فرمان یا Intuitive Command Line Editing و یا ویرایش تاریخچه ی خط فرمان و جستجو با کلید های جهت دار یا Arrow keys و یا متغییر های محیطی ( Environment Variables) بسیار زیاد آن .البته این پوسته در نسخه های تجاری یونیکس موجود نیست و دلیل آن هم مجوز بسیار عالی GNU/GPL است .

tcsh shel

ین پوسته یک پوسته ی پیشرفته بر اساس پوسته ی C shell است .کلمه ی t در ابتدای نام آن اول نام سیستم عامل TENEX است که بر روی DEC PDP-۱۰ اجرا می شود. در این پوسته به C shell قابلیت های بیشتری اضافه شده مانند ویرایش تاریخچه به سبک bash و یا پرسش های قبل اعمال تغییرات ماند پرسش قبل از پاک کردن یک شاخه( Folder ).البته همان طور که قبلا اشاره کردم FreeBSD های پیشرفته از این پوسته به عنوان پوسته ی پیش فرض استفاده می کنند.

کدام پوسته

همان طور که قبلا اشاره کردیم اغلب لینوکس ها از bash به عنوان پوسته ی پیش فرض استفاده می کنند و البته لینوکس های کم حجم مثلا در حجم یک فلاپی از پوسته های کم حجم تر استفاده می کنند. از آن جایی که کار با bash بسیار آسان است و مانند کار کردن برنامه نویسی برای آن نیز راحت تر است اغلب لینوکس کار ها این پوسته را می پسندند و بنابراین اغلب اسکریپت ها ی موجود در برنامه های نصب مربوط به لینوکس هم از بر اساس این پوسته نوشته می شوند ، بنابر این برای آنکه بتوانید از کار کردن با پوسته ی خط فرمان لذت ببرید و به راحتی از دستوراتی که در سایت ها و مستندات مختلف می بینید استفاده کنید بهتر است از bash استفاده کنید . البته دلیل دیگر برای استفتده از bash همانا مجوز آن یعنی GNU/GPL است کهبرای کاربران لینوکس قوت قلبیست که از پوسته ای که تحت مجوز بنیاد نرم افزار آزاد منتشر شده است استفاده کنند.
 البته در نهایت این تصمیم با شماست که از کدام پوسته استفاده کنید و ما فقط یک پیشنهاد به شما دادیم و البته تمام مطالب این سایت بر اساس پوسته ی bash ارائه شده است.
 لازم به ذکر است که برای تعویض پوسته در صورتی که پوسته در کامپیوتر شما نصب باشد کافیست نام پوسته را تایپ کنید مثلا برای رفتن به bash از csh کافیست تا در مقابل اعلان فرمان تایپ کنیدbash تا از این پس با پوسته ی bash کار کنید.

از Openoffice.org به صورت Online استفاده کنید!

آخرین نسخه از Openoffice.org هم اکنون از طریق مرورگر وب و تنها با یک کلیک موس، بدون نیاز به download کردن یا حتی نصب آن با سودمندی بالا و موردپسند کاربر قابل دسترسی است. این سرویس به خاطر کاربرپسند بودن پیشنهاد می شود.

این سرویس جدید که توسط سایت Ulteo مهیا شده است، مزایای بسیاری را برای کاربران با قابلیتهای مناسب ایجاد می کند و در حال حاضر نسخه بتای آن توسط سیستم عاملهای ویندوز، لینوکس و Mac OS در دسترس می باشد.
انجمن OpenOffice.org یک تیم بین المللی از داوطلبین و حامیان مالی است که کار گسترش، پشتیبانی و توسعه راهبری open-source office را با بهره وری بالا انجام می دهند.تکنولوژی نرم افزاری openoffice.org همچنین برای توسعه دهندگان، مجتمع کننده های سیستمها و غیره برای استفاده در الحاقات openoffice.org و یا برنامه های کاربردی خود قابل استفاده است.OpenOffice.org از قالب مستندات باز در برنامه های کاربردی Office که به خوبی قالب فایل های برنامه هایی مثل Microsoft Office کار می کنند پشتیبانی می کند و همچنین روی بسترهای پردازشی اصلی با بیش از 70 زبان موجود می باشد.
نرم افزار OpenOffice.org بر اساس مجوز عمومی LGPL ارائه می شود و حتی ممکن است برای اهداف شخصی یا تجاری هم استفاده نشود.

OpenOffice.org توسط تعداد زیادی از شرکتها از جمله شرکت sun Microsystems تصدیق شده و مورد حمایت واقع شده است.

آدرس منبع:

http://www.ulteo.com/home/en/news/2007/12/11?autolang=en

نصب ساده MySQL , Apache و PHP از کد منبع در لینوکس

وب سرور Apache , پایگاه داده MySQL و پردازشگر زبان اسکریپت نویسی PHP یکی از محبوب ترین و کاربردی ترین مجموعه ها برای طراحی و پیاده سازی وب سایت با صفحات دینامیک و پویا هستند .از ویژگی های این سه ابزار می توان به استواری بالا , قابلیت انعطاف زیاد , سطح بالایی از امنیت و قابل اجرا بر روی تعداد زیادی platform اشاره کرد .
در این مقاله سعی شده است که روش ساده نصب Apache , MySQL و PHP شرح داده شود . روشی که در این مقاله توضیح داده خواهد شد روشی عمومی است و در صورتی که شما مایل باشید که از حداکثر توانایی های این سه نرم افزار قدرتمند استفاده کنید بهترین راه استفاده از Documentation بسیار غنی این سه پروژه متن باز می باشد.

دریافت کدهای منبع

اولین کاری که باید انجام داد دریافت کدهای منبع این سه نرم افزار برای کامپایل از پایه است . این سه نرم افزار به فرمت های باینری کامپایل شده و اماده نصب مانند RPM و DEB نیز وجود دارند ولی نصب از روی بسته های باینری توصیه نمی شود . توصیه ما این است که برای عملکرد بهتر حتما این سه نرم افزار را از پایه برای سیستم خود کامپایل کنید. بنابراین مطمئن شوید که حتما کدهای منبع این مجموعه را download می کنید.
برای download کردن کدهای منبع به لینک های زیر رجوع کنید . شماره نسخه ای که مشاهده می کنید نسخه هایی هستند که در هنگام تهیه این مقاله موجود بوده اند .

Apache
current version : 2.2.08
URL :
http://httpd.apache.org/download.cgi

MySQL
current version : 4.1.12
URL :
http://www.mysql.com/downloads/mysql-4.1.html

PHP
current version : 5.0.4
URL :
http://www.php.net/downloads.php

 حتما کدهای منبع این سه نرم افزار را دریافت نمایید.

نصب کردن با کدهای منبع

اولین کاری که باید انجام دهیم این است که کدهای منبع را از حالت فشرده خارج سازیم . برای این منظور از سه دستور زیر استفاده کنید.

tar -xzvf httpd-2.0.54.tar.gz
tar -xzvf mysql-4.1.12.tar.gz
tar -xzvf php-5.0.4.tar.gz

از این مرحله به بعد بهتر است که با حساب کاربری root کار را ادامه دهید.برای این کار از دستور su استفاده کنید.

کامپایل Apache

با استفاده از دستور زیر وارد دایرکتوری کد منبع Apache شوید که در مرحله قبل با استفاده از دستور tar ایجاد شده بود.

cd httpd-2.0.54

سپس دایرکتوری زیر را با استفاده از دستور زیر ایجاد کنید.

mkdir /usr/local/apache2

این دایرکتوری محل نصب Apache بعد از کامپایل می باشد.می توانید هر مسیر دیگری را نیز برای این منظور داشته باشید . این مسیر را باید در دستور بعدی به اسکریپت configure معرفی کنید. در صورت ایجاد مسیر دیگری نیازی به ایجاد دایرکتوری مذکور در دستور بالا را نخواهید اشت.سپس اسکریپت configure را به صورت زیر اجرا کنید.

configure --prefix=/usr/local/apache2 --enable-mods-shared=most/.

این دستور باعث می شود که Apache پس از کامپایل در مسیر /usr/local/apache2 نصب شود. همچنین ورودی --enable-mods-shared=most اعلام می کند که بیشتر ماژول های قابل load اپاچی نصب خواهند شد.ورودی های بسیار زیادی را می توان به configure داد ولی برای نصب به حالت عمومی همین تعداد کافی می باشد.بعد از اجرای بدون خطای configure دستور زیر را اجرا کنید.

make

بعد از اجرای بدون خطای این دستور Apache کامپایل شده است. برای نصب در مسیر مربوط دستور زیر را اجرا کنید.

make install

هم اکنون Apache در مسیر مربوط نصب شده است . برای عملکرد صحیحApache به خصوص با PHP باید تغییراتی در فایل httpd.conf ایجاد کنیم.ابتدافایل زیر را با یک ویرایشگر مانند vim باز کنید.

vim /usr/local/apache2/conf/httpd.conf

به ترتیب قسمت های LoadModule , DirectoryIndex و AddType را پیدا کرده و به صورت زیر ویرایش کنید . در صورت پیدا نکردن اضافه کنید.

LoadModule php5_module modules/libphp5.so

DirectoryIndex index.html index.html.var index.php

AddType application/x-httpd-php .php

کار مربوط به Apache تمام شده است . فایل httpd.conf را ذخیره کرده و ببندید.

کامپایل MySQL

با استفاده از دستور cd وارد دایرکتوری کد منبع MySQL شوید.

cd mysql-4.1.12

سپس مانند مرحله قبل دایرکتوری زیر را ایجاد کنید . مانند مرحله قبل می توانید این دایرکتوری را ایجاد نکنید و MySQL را در مسیر دیگری نصب کنید.

mkdir /usr/local/mysql

سپس اسکریپت configure را به صورت زیر اجرا کنید.

configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --disable-maintainer-mode --with-mysqld-user=mysql --enable-large-files-without-debug

در صورت عدم خطا با استفاده از دستور make عمل کامپایل را اغاز کنید.

make

عمل کامپایل MySQL ممکن است کمی طولانی باشد.بسته به سرعت پردازنده شما بین 15 دقیقه تا یک ساعت می باشد.پس از کامپایل موفق و بدون خطا با استفاده از دستور زیر MySQL را در مسیر مربوطه نصب نمایید.

make install

نصب MySQL تمام شده است . در ادامه دستورات زیر موجب اجرای صحیح این پایگاه داده خواهد شد.در ابتدا گروهی به نام mysql می سازیم و سپس کاربری با همین نام می سازیم و به ان مربوط می سازیم.

usr/sbin/groupadd mysql/

usr/sbin/useradd -g mysql mysql/

و سپس فایل های پایگاه داده را با استفاده از دستور زیر نصب می کنیم.

scripts/mysql_install_db/.

و با دو دستور زیر مالک و گروه دو دایرکتوری مذکور را تنظیم می کنیم.

chown -R root:mysql /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql/data

اخرین کاری که برای نصب MySQL بایستی انجام دادویرایش فایل ld.so.conf می باشد.برای این کار ابتدا فایل زیر را باز کنید.

vim /etc/ld.so.conf

و خط زیر را در انتهای این فایل اضافه کنید.

usr/local/mysql/lib/mysql/

اکنون تمام مراحل نصب و تنظیم MySQL به پایان رسیده است . شما اکنون می توانید ان را با کاربر mysql که خود ساخته اید به صورت زیر اجرا کنید.

usr/local/mysql/bin/mysqld_safe --user=mysql/

و با دستور زیر می توانید برای کاربر ریشه MySQL کلمه عبور تنظیم کنید که new_password کلمه عبوری است که شما تنظیم خواهید کرد.

usr/local/mysql/bin/mysqladmin -u root password new_password/

کامپایل PHP

ابتدا وارد دایرکتوری کد منبع PHP شوید.

cd php-5.0.4

سپس مانند مراحل قبل دایرکتوری نصب PHP را به صورت زیر ایجاد کنید.

mkdir /usr/local/php

و بعد از ان اسکریپت configure را به صورت زیر اجرا کنید.

configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql

بعد از اجرای بدون خطای configure برای کامپایل php دستور زیر را اجرا کنید.

make

اگر نتیجه دستور make با خطایی همراه نبود دستور زیر را برای نصب PHP در مسیر مربوط اجرا کنید.

make install

پس از اجرای این دستور PHP نصب شده است . مانند مراحل قبل بایستی یک سری تنظیمات انجام داد.ابتدا فایل php.ini را به صورت زیر در مسیر زیر کپی کنید.

cp php.ini-recommended /usr/local/php/lib/php.ini

سپس این فایل را باز کرده و ویرایش نمایید.

doc_root="/usr/local/apache2/htdocs/"

سپس file_uploads را در این فایل پیدا کنید. این گزینه را هم می توانید در حالت o­n و هم در حالت Off قرار دهید. این مورد بستگی به کاربرد شما دارد.ولی بهتر است به دلایل امنیتی ان را در حالت Off قرار دهید.

file_uploads=Off

اکنون مراحل نصب این سه نرم افزار به پایان رسیده است . می توانید با خیال راحت از انها استفاده نمایید.

یک تست کوتاه

اکنون MySQL شما در حال اجراست . برای اجرای وب سرور Apache دستور زیر را اجرا کنید.

usr/local/apache2/bin/apachectl start/

با اجرای این دستور وب سرور Apache شروع به کار می کند. اکنون می خواهیم یک فایل ساده PHP بنویسیم و از صحت کارکرد نرم افزار هایی که نصب کردیم اطمینان حاصل کنیم. بنابراین ابتدا وارد دایرکتوری زیر شوید.

cd /usr/local/apache2/htdocs

سپس با یک ویرایشگر فایلی به نام test.php در این دایرکتوری ایجاد کنید.

vim test.php

و خطوط زیر را در ان بنویسید . در این کد PHP ما فقط از یک تابع PHP به نام phpinfo استفاده کردیم.

php?>
;()phpinfo
>?

فایل را ذخیره کرده وببندید . در این مرحله مرورگر وب خود را باز کرده و در قسمت نشانی , نشانی زیر را بنویسید .

localhost/test.php

شما بایستی یک سری اطلاعات به صورت یک سری جدول در مورد PHP , APache و MySQL و ... بر روی صفحه نمایش ببینید . در غیر این صورت مشکلی به وجود امده است . برای پیدا کردن مشکل به Log file های MySQL و Apache رجوع کنید .

اجرای Apache و MySQL به طور خودکار

مشکلی که هم اکنون وجود دارد اینست که ما Apache و MySQL را به صورت دستی راه اندازی کردیم . اکنون در این قسمت به این مورد می پردازیم که چگونه می توان کاری کرد که این دو سرویس هنگام بوت سیستم خود به خود شروع به کار کنند. برای این منظور مراحل زیر پیش روی شماست.
ابتدا دوباره وارد دایرکتوری کد منبع MySQL شوید.

cd mysql-4.1.12

و سپس فایل زیر را در مسیر مربوطه به صورت زیر کپی نمایید.

cp support-files/mysql.server /etc/init.d/mysql

دستورات زیر لینک هایی برای شروع خودکار MySQL برای runlevel های 3 و 5 ایجاد می کند.

cd /etc/rc3.d

ln -s ../init.d/mysql S85mysql

ln -s ../init.d/mysql K85mysql

cd /etc/rc5.d

ln -s ../init.d/mysql S85mysql

ln -s ../init.d/mysql K85mysql

cd ../init.d

chmod 755 mysql

حال مراحل مشابهی را برای Apache با دستورات زیر طی می کنیم.

cd /usr/local/apache2/bin

cp apachectl /etc/init.d/httpd

و مانند مرحله قبل لینک هایی برای شروع Apache برای runlevel های 3 و 5 ایجاد می کنیم.

cd /etc/rc3.d

ln -s ../init.d/httpd S85httpd

ln -s ../init.d/httpd K85httpd

cd /etc/rc5.d

ln -s ../init.d/httpd S85httpd

ln -s ../init.d/httpd K85httpd

اکنون همه چیز تنظیم شده است . اگر سیستم خود را reboot نمایید خواهید دید که deamon های mysqld و httpd به صورت خودکار شروع به اجرا می کنند.
در اینجا این مقاله به پایان می رسد. امیدوارم که مورد فایده واقع شود.

آدرس منبع:

http://www.hostlibrary.com/installing_apache_mysql_php_on_linux 
http://www.linuxhelp.net/guides/lamp