<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های علی کنگرانی</title>
        <link>https://virgool.io/feed/@xo4ever</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-04-15 10:25:47</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/1569356/avatar/Ue9wxV.jpeg?height=120&amp;width=120</url>
            <title>علی کنگرانی</title>
            <link>https://virgool.io/@xo4ever</link>
        </image>

                    <item>
                <title>کلن Swap :)</title>
                <link>https://virgool.io/@xo4ever/%DA%A9%D9%84%D9%86-swap-br3u0w8fdwul</link>
                <description>فضای swap چیست‌؟از اونجایی که مموری سیستم همیشه محدوده، گاهی اوقات سیستم نیاز به مموری بیشتری داره اما RAM دیگه جا نداره. این جور مواقع شما می تونید یک بخشی از دیسک سیستم رو مشخص کنید که دیتا به صورت موقت روش نوشته می شه تا زمانی که RAM خالی بشه و بتونه پردازش کنه. سرعت swap خیلی پایین تر از مموریه، اما مزیتی که داره اینه که نمیزاره سیستم کرش کنه (کند می شه اما کرش نمی شکنه).چجوری فضای swap سیستم رو ببینیم‌؟شما می تونید از یکی از راه‌های زیر وضعیت swap سیستمتون رو ببینید.$ free -g$ cat /proc/meminfo | grep -i swapچجوری فضای swap روی سیستم ایجاد کنیم‌؟با طی کردن مراحل زیر می تونید فضای swap سیستمتون رو ایجاد کنید.۱. ایجاد پارتیشن swap به شکل زیر (بر روی دیسک دلخاهتون):$ fdisk /dev/vdb۲. ایجاد یک پارتیشن جدید بر روی دیسکی که انتخاب کردید:۳. شما می تونید با وارد کردن حرف n پارتیشن جدیدتون رو ایجاد کنید:۴. نوع پارتیشن رو primary انتخاب کنید:۵. شماره پارتیشن رو انتخاب کنید:۶. انتخاب کنید،‌شروع پارتیشن از چه سکتوری باشد:۷. حجمی که می خاین این پارتیشن داشته باشه رو وارد کنید:۸. به شکل زیر پارتیشن شما ساخته می شود.۹. حالا لازمه نوع این پارتیشن رو مشخص کنید:۱۰. با وارد کردن حرف L می تونید لیست فایل سیستم هایی که می تونید داشته انتخاب کنید رو مشاهده کنید:۱۱. نوع پارتیشنی که اینجا به درد ما می خوره swap هستش که با شماره ۸۲ می شه انتخابش کنید:۱۲. تغییراتی که وارد کردیم رو با وارد کردن حرف w بر روی دیسک بنویسید و خارج شوید:۱۳. با وارد کرد دستور زیر لازم است که سیستم عامل رو از ایحاد یک همچین پارتیشنی آگاه کنید:$ partprobe۱۴. ارتباط سیستم با این پارتیشن رو به عنوان swap برقرار کنید:$ mkswap /dev/vdb1۱۵. حالا swap سیستم رو روشن کنید:$ swapon -a۱۶. الان اگه چک کنید می بینید که سیستم شما swap دار شده:$ cat /proc/meminfo | grep -i swap۱۷. برای اینکه تو هر مرحله ای که سیستم شما ریبوت می شه، سیستم این پارتیشن رو به عنوان swap بشناسه، لازمه که در فایل /etc/fstab خط زیر را وارد کنید:نکته: توجه داشته باشید که UUID پارتیشن خودتونو باید وارد کنید.</description>
                <category>علی کنگرانی</category>
                <author>علی کنگرانی</author>
                <pubDate>Tue, 29 Mar 2022 17:23:37 +0430</pubDate>
            </item>
                    <item>
                <title>کلن Raid :)</title>
                <link>https://virgool.io/@xo4ever/%DA%A9%D9%84%D9%86-raid-jqbzq6jjoo7a</link>
                <description> کلن Raid چیه و به چه دردی می خورد ؟به زبان ساده، Raid که مخفف (Redundant Array of Independent Disks) هستش، یک تکنولوژی برای مدیریت اطلاعات روی چند دیسک هستش. با توجه به نیازی که وجود داره و حساسیت اطلاعات، ممکنه لازم باشه که اطلاعات سیستم در چند جا ذخیره بشه که در صورت از بین رفتن یکی از دیسک‌ها، اطلاعات همچنان در دسترس باشد. خوبه که بدونیم هدف Raid فقط جلوگیری از نابودی اطلاعات نیست و می تونیم ازش برای بالا بردن سرعت خوندن نوشتن بر روی دیسک‌ها  و پخش متوازن اطلاعات بر روی دیسک‌ها هم استفاده کنیم.Raid در لول های (levels) مختلفی پیکربندی می‌شه که این زیر پرکاربرد ترین هاشونو با هم بررسی می‌کنیم.لول صفر: در این لول، اطالاعات روی تمامی دیسک‌ها به صورت یکنواخت و متوازن نوشته می شوند. در این حالت در صورتی که یکی از دیسک‌ها به مشکل بخورن، به هیچ عنوان امکان بازیابی وجود ندارد. این مدل از Raid تنها برای بالا بردن سرعت استفاده می شود.لول ۱: در این لول، اطلاعات به صورت یکسان در دو جا نوشته می شه (از هر بیت که بر روی یه دیسک نوشته می‌شه، یک کپی روی یه دیسک دیگه نوشته می‌شه). در صورتی که لازم دارین اطلاعات رو جوری ذخیره کنید که در صورت بروز مشکل برای یکی از دیسک‌ها همچنان اطلاعات در دسترس باشد، این حالت از Raid، یکی از بهترین گزینه ها برای شماست. این موضوع رو هم در نظر داشته باشید که چون اطلاعات باید در دو جا نوشته بشن، عملکرد سیستم کمی پایین میاد.لول ۵: در این لول، اطلاعات به صورت نوبتی و متوازن بر روی تمامی دیسک‌ها نوشته می شن. حالا فرقش با لول صفر اینه که در این لول، یک دیسک به عنوان parity در نظر گرفته می شه که داخلش یک سری اطلاعات از دیتای موجود در دیسک‌های دیگه وجود داره. این دیسک به شما این امکان را می دهد که در صورتی که یکی از دیسک‌ها به طور کامل از بین برود، اطلاعات همچنان در دسترس باشند. در این حالت، عملکرد سیستم بسیار بهتر از لول ۱ هستش اما نه به خوبی لول صفر.برای پیاده سازی این لول حداقل ۳ دیسک نیاز است.لول ۱+۰: در این لول که بسیار هم مرسوم هست، شما دیسک‌هاتون رو به دو گروه تقسیم می کنیدو بین این دو گروه Raid لول صفر ایجاد می شود که یعنی دیتا به صورت نوبتی و متوازن به سمت گروه‌ها می رود. اما داخل هر گروه Raid ۱ خاهیم داشت، یعنی وقتی اطلاعات به سمت یک گروه می‌ره، اونجا روی ۲ دیسک نوشته می شه. به این شکل اطلاعات هم در دو جا نوشته میشن و هم سرعت بسیار خوبی خاهد داشت.چجوری روی سیستم Raid داشته باشیم‌ ؟برای پیکربندی Raid شما می تونید از ۲ راه کلی استفاده کنید:Raid سخت افزاری: این حالت بهترین عملکرد رو برای شما داره چون سیستم عامل سرور به هیچ شکلی از نظر پردازشی در گیر نیست. اما در نظر داشته باشین که سخت افزار مورد نیاز برای این کار هزینه زیادی دارد.Raid نرم افزاری: ساده ترین حالت، استفاده از یک نرم افزار برای پیکربندی Raid بر روی سیستم هستش. در این حالت بخشی از توان سیستم در اختیار این نرم افزار قرار می گیرد و باعث کاهش عملکرد سیستم می شود.در ادامه این مقاله، می بینیم که چطور با استفاد از یک نرم افزار متن باز، می‌تونیم روی سیستمتون Raid داشته باشیم.مرحله ۱: وضعیت دیسک‌های موجود روی سیستم رو بررسی کنید. در اینجا ما از ۵ دیسک استفاده کردیم که هرکدوم ۵ پارتیشن دارن. با استفاده از نرم افزار LVM، از تمامی پارتیشن‌ها یک دیسک فیزیکی ساختیم که در شکل زیر می تونید تمامی دیسک‌های فیزیکی موجود بر روی سیستم رو مشاهده کنید.$ pvsاز هر دیسک یک پارتیشن را انتخاب کردیم و در یک گروه قرار دادیم.نکته: اگر دقت کنید در اینجا ما بدون استفاده از هیچ نرم افزار مخصوصی یک Raid صفر روی دیسک‌ها ایجاد کردیم.(دیتا رو روی هر ۵ دیسک پخش کردیم)$ vgsدر نهایت ما ۲۰ دیسک منطقی ایجاد کردیم که برای پیکربندی Raid بتونیم ازشون استفاده کنیم.$ lvsمرحله ۲: در این مقاله ما از نرم افزار mdadm استفاده می کنیم. چون کار باهاش آسونه، متن بازه و به صورت رایگان در اختیار همه هستش. برای شروع کار با این نرم افزار، اول لازمه که اون روی سیستم نصبش کنید.$ apt-get install mdadmمرحله ۳: بدون نیاز به انجام هیچ کار اضافه‌ای، می تونید پیکربندی Raid سیستمتون رو شروع کنید.برای ایجاد Raid صفر می تونید از دستور زیر استفاده کنید$ sudo mdadm --create --verbose /dev/md2 --level=0 --raid-devices=2 /dev/group2/lvol-8 /dev/group5/lvol-20برای ایجاد Raid یک می تونید از دستور زیر استفاده کنید$ sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/group1/lvol-1 /dev/group5/lvol-5برای ایجاد Raid پنج می تونید از دستور زیر استفاده کنید.$ sudo mdadm -- create -- verbose /dev/md2 --level=5 --raid-devices=3 /dev/group2/lvol-6 /dev/group5/lvol-7 /dev/group5/lvol-17مرحله ۴: به شکل زیر می تونید ریز اطلاعات Raid هایی که ایجاد کردین رو مشاهده کنید.$ mdadm --query --detail /dev/md0مرحله ۴: حالا به شکل زیر یک دایرکتوری جدید می تونید ایجاد کنید که فضای ساخت شده رو بهش اختصاص بدیم.در نظر داشته باشید که می تونید فضا رو به هر جایی که دوست دارید اختصاص بدین و لازم نیست که حتما یک دایرکتوری جدید ایجاد کنید. (در اینجا ما ۳ دایرکتوری جدید ایجاد کردیم)$ mkdri /mnt/Helloمرحله ۵: در این مرحله لازمه فایل سیستم فضایی که ایجاد کردین رو مشخص کنید.$ mkfs.ext4 /dev/md0مرحله ۵: در این مرحله می تونید به راحتی فضای ایجاد شده رو به سیستم مونت کنید و ازش استفاده کنید.$ mount /dev/md0 /mnt/Helloمرحله ۶: می تونید به شکل زیر فضایی که به سیستم اضافه کردین رو مشاهده کنید.نکته: توجه کنید که در Raid صفر (md2) ما دقیقا ۱۰ گیگابایت فضا در اختیار داریم(۵+۵=۱۰). در Raid یک (md0) ما فقط ۵ گیگ فضا داریم (۵+۵=۵). در Raid پنج (md1) ما ۱۰ گیگابایت فضا داریم (۵+۵+۵=۱۰).$ df -hمرحله ۷: اگر دوست داشته باشید می تونید به شکل زیر وضعیت تمامی دیسک‌های متصل به سیستم رو ببینید.$ lsblk</description>
                <category>علی کنگرانی</category>
                <author>علی کنگرانی</author>
                <pubDate>Tue, 29 Mar 2022 17:08:52 +0430</pubDate>
            </item>
                    <item>
                <title>کلن پروسه (Process)</title>
                <link>https://virgool.io/@xo4ever/%DA%A9%D9%84%D9%86-%D9%BE%D8%B1%D9%88%D8%B3%D9%87-process-dsfc633t9lea</link>
                <description>پروسه چیست؟به بخش های مختلف یک برنامه در حال اجرا یک پروسه می گن. زمانی که یک برنامه بر روی سیستم اجرا می شه، ممکنه یک یا چند پروسه ایجاد کنه. این پروسه های می تونن دستوراتی باشن که برنامه باید اجرا کنه، از یک فایلی بخاد دیتا بخونه، از کاربر بخاد یک ورودی بگیره و یا …به طو رکلی یک پروسه در دو فضا می تونه اجرا بشه:فضای فعلی (Foreground): این جور پروسه ها از طریق یک ترمینال اجرا و کنترل می شن. یه زبان ساده بخایم بگیم، یک کاربری باید این پروسه ها رو اجرا کنه و به صورت اتوماتیک اجرا نمی شن.پس زمینه (Background): پروسه هایی که در پس زمینه سیستم اجرا می شن. این جور پروسه ها معمولا جروی از توابع و سرویس های سیستم عامل هستن همچنین هیچ ورودی از کاربر نمی گیرد.ارواح سیستم (Deamons): این پروسه ها در زمان بالا اومدن سیستم اجرا می شن و تا زمانی که سیستم خاموش نشه، در حال اجرا می مونن. اینو در نظر داشته باشین که کاربرا می تونن تمامی پروسه ها رو کنترل کنن.خوبه بدونیم که یک پروسه همیشه در چهار حالت کلی هستش:در حال اجرا (Running): در این حالت، پروسه یا در حال اجرا هستش و یا منتظر پردازنده هستش که اجراش کنه.در انتظار (Waiting): تو این حالت، پروسه منتظر یک منبع و یا یک اتفاقی هستش که اجرا بشه. پروسه ها در این حالت به دو دسته کلی تقسیم می شن، قابل قطع ‌(Interruptible) و غیر قابل قطع (Uninterruptible). پروسه های قابل قطع رو می شه با فرستادن سیگنال متوقف کرد اما پروسه های غیر قابل قطع به طور مستقیم با سخت افزار در ارتباط هستن و نمی شه قطعشون کرد.متوقف شده (Stopped): پروسه توسط یک سیگنال متوقف شده.زامبی (Zombie): زمانی که پروسه متوقف شده اما یک تسکی هنوز بهش وصله. پروسه باید تموم مرده باشه اما هنوز گیره.نحوه مدیریت پروسه ها در سیستم عامل لینوکس:با استفاده از دستور زیر،‌ شما می تونید تمام پروسه های فعالی که به کاربر مربوط هستن رو ببینید.$ ps auدر لینوکس هر پروسه یک ID خاص داره که با اون می شه کنترل و دنبالش کرد.برای پیدا کردن شناسه هر پروسه (Process ID)، می تونید از ابزار زیر استفاده کنید.$ pidof systemdتوجه داشته باشید که در اکثر سیستم ها، وظیفه مدیریت پروسه ها به عهده Systemd هستش و خود این ابزار اولین پروسه ای هستش که اجرا می شه. اما میبینید که تو سیستم تستی ما init اولین پروسه هستش و قبل از Systemd بالا اومده.$ pidof initبرای انجام تست های این مقاله ما از دستور sleep استفاده می کنیم که تا یه پروسه رو بدون انجام هیچ کاری برای یه مدتی اجرا می کنه. چون هدف یاد گیری کارهایی هستش که می تونیم با یک پروسه انجام بدیم.زمانی که شما یک دستور رو در ترمینال می زنید، به طور کلی در فضای Foreground اجرا می شه. اگر بخاین که پروسه رو در فضای Background اجرا کنید، می تونید با وارد کردن &amp; در آخر هر دستور، اون رو در Background اجرا کنید.برای دیدن تمام پروسه هایی که در فضای Background وجود دارند می تونید از دستور jobs استفاده کنید.$ sleep 100 &amp;$ jobsاگر دوست داشته باشین که پروسه رو به فضای فعلی بیارید می تونید از طریق دستور زیر این کار رو انجام بدین.$ fg %1با وارد کردن control + z می تونید یک پروسه در حال اجرا رو متوقف کنید و به فضای Background ببرید.با دستور زیر می تونید یک پروسه ای که در فضای Background متوقف هستش رو می تونید همونجا اجرا کنید.برای دیدن اطلاعات تمامی پروسه هایی که بر روی سیستم در حال اجرا هست می تونید از دستور زیر استفاده کنید.این دستور به صورت لایو وضعیت تمام پروسه هاتونو نشون می ده.$ topشما می تونید با استفاده از دستور زیر شماره id یک پروسه رو به دست بیارید.$ pgrep sleepبا استفاده از دستور زیر می تونید id یک پروسه که در فضای یک کاربر دیگه در حال اجرا هستش رو ببیند.$ pgrep -u root bashبا استفاده از دستور زیر می تونید سیگنال متوقف شدن رو برای یک پروسه ارسال کنید.$ kill -9 4794به صورت زیر می تونید لیست سیگنال هایی رو که می تونید به یک پروسه ارسال کرد رو ببینید.$ kill -l</description>
                <category>علی کنگرانی</category>
                <author>علی کنگرانی</author>
                <pubDate>Tue, 29 Mar 2022 16:35:55 +0430</pubDate>
            </item>
                    <item>
                <title>کار با Package Manager در لینوکس</title>
                <link>https://virgool.io/@xo4ever/%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-package-manager-%D8%AF%D8%B1-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-aucf2qcxdkgj</link>
                <description>کلن Package Manager چیه؟برای نصب یک نرم افزار بر روی سیستم های لینوکسی شما به طور کلی دو راه دارید: ۱. اینه که می تونید source نرم افزار رو دانلود کنید و اون رو به صورت دستی روی سیستم نصب کنید. در این حالت بازمه که شما بتونید نرم افزار رو کامپایل کنید، پیکربندی های لازم رو انجام بدین، فایل های لازم رو سر جای خودشون قرار بدین و dependency های لازم رو نصب کنید (بعضی نرم افزار ها برای اجرا به نرم افزارهای دیگه نیاز دارن که بهشون dependency میگن). راه دوم هم اینه که از یک Package Manager استفاده کنید که همه ی این کارها رو به صورت اتوماتیک انجا میده. در این حالت زمانی که شما اقدام به نصب یک برنامه می کنید، Package Manager در ریپازیتوری هایی که داره، دنبال این برنامه می گرده، بعد dependency های مربوطش رو که در حال حاضر بر روی سیستم شما نصب نیستن رو مشخص می کنه و کار دانلود و نصب رو شروع می کنه و در نهایت پیکر بندی های لازم رو انجام میده. تو شکل زیر می تونید فرایند کار این ابزار ها رو ببینید.همه‌ی Package Manager ها هم به صورت گرافیکی وجود دارن و هم به صورت ترمینالی. ابزارهای مورد نیاز برای این کار به صورت پیش فرض بر روی تمامی توزیع های لینوکس وجود دارن. توجه داشته باشید که هر توزیع ابزار مورد نیاز خودش رو داره هخ ریپازیتوری های خاص خودشون رو دارن.نحوه استفاده از Package Manager در سیستم های لینوکسی:در این مقاله ما نحوه کار با ابزار های مدیریت بسته سیستم های Debian رو بررسی می کنیم.پر کاربردترین ابزارهایی که در این توزیع لینوکس وجود دارن، apt و apt-get هستن.کار با هردوشون تا حد بسیار زیادی یکسان هستش. اگه بخایم به ساده ترین شکل تفاوتشون رو توضیح بدیم باید گفت که بعضی از قابلیت ها بین apt-get  و apt-cache تقسیم شده بودن که کار با این ابزارها رو کمی سخت کرده بودن، به همین دلیل Debian ابزار apt رو معرفی کرد که کار باهاش ساده تره و می شه خیلی کارها رو با خودش انجام داد و نیازی به یه ابزار دیگه نداریم. به خاطر همین دلایلی که گفتیم، ما در این مقاله کار با apt رو توضیح می دیم اما شما می تونید از هر ابزاری که دوست دارید استفاده کنید (توجه داشته باشید که ما در لینوکس واسه انجام هیچ کاری فقط یک راه نداریم)در ابتدا، شما می تونید با وارد کردن دستور زیر تمامی کارهایی رو که می شه با این ابزار انجام داد رو ببینید.$ apt --help(تفاوت بین update  و upgrade رو خوبه بدونید.)فرق بین update و upgrade اینه که، در زمانی که شما از گزینه update استفاده می کنید، ابزار شما لیست ریپازیتوری ها شو به روز می کنه و به شما نشون می ده که آخرین نسخه پکیج هایی که در حال حاضر نصب دارین چی هست و اینکه آیا آپدیتی وجود داره یا نه. اما زمانی که upgrade رو بزنید، ابزار علاوه بر اینکه نشون میده آخرین نسخه پکیج ها چین، برای هر چیزی که امکانش باشه عملیات به روز رسانی رو انجام میده.$ apt update$ apt upgradeبه شکل زیر می تونید در ریپازیتوری های سیستم دنبال یک نرم افزار بگردین که اگه وجود داشته باشه مثل تصویر زیر به شما اطلاعاتش رو میده.$ apt search htopاگه اطلاعات بیشتری در مورد یک برنامه لازم دارید،‌می تونید از دستور زیر استفاده کنید.$ apt show htopبرای نصب برنامه می تونید در راحت ترین حالت ممکن فقط به شکل زیر عمل کنید. خود ابزار تمام کارهای لازم برای نصبشو انجام میده.$ apt install htopمی تونید ببینید که برنامه ما نصب شده و بدون هیچ کار اضافه ای می تونیم ازش استفاده کنیم.$ htopاگه دوست داشتین یه برنامه ای رو از روی سیستم حذف کنید، می تونید به شکل زیر عمل کنید.$ apt remove htopهمونطور که انتظار میره، اگه دوباره تلاش کنید که برنامه رو اجرا کنید، می بینید که وجود نداره.$ htopآدرس ریپازیتوری ها رو می تویند از مسیر زیر پیدا کنید.$ vi /etc/apt/sources.listبخش هایی که رنگی نشون داده شدن، درواقع هموت آدرس ریپازیتوری هایی هستن که ابزار ازشون استفاده می کنه.این آدرس ها رو می تونید از روی صفحه وب هم ببینید. در اینجا می تونید بهتر متوجه بشید که این ابزار ها دقیقا چیکار می کنن. پکیج هارو خودشون ندارن و فقط بلدن چجوری سریع با این ریپازیتوری ها کار کنن و یه لیست از اطلاعاتی که توش دارن رو نگه می دارن. خلاصه همه کارهایی که این ابزارها انجا می دن رو ما هم میتونیم دستی انجام بده اما خوب کی میره این همه راهو!؟به شکل زیر می تونید لیست تمام پکیج هایی که در ریپازیتوری ابزار وجود دارن رو ببینید (به ترتیب اسم).$ apt listبا استفاده از دستور زیر هم می تونید تمام نسخه های موجود (در این ریپازیتوری) از یک برنامه رو ببینید.$ apt list -a nginx</description>
                <category>علی کنگرانی</category>
                <author>علی کنگرانی</author>
                <pubDate>Tue, 29 Mar 2022 16:15:27 +0430</pubDate>
            </item>
                    <item>
                <title>کار با LVM</title>
                <link>https://virgool.io/@xo4ever/%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-lvm-dpcoqt5zsx5z</link>
                <description> کلن LVM چیه و به چه دردی می خوره ؟مدیریت فضای ذخیره سازی روی سرورهای لینوکسی از مهم ترین کار هایی هستش که باید انجام داد. به عنوان یک ادمین لینوکس،‌این موضوع می تونه تبدیل به یک کابوس و یا یک نقطه قوت برای شما بشه. LVM که مخفف Logical Volume Manager هستش، یک ابزار بسیار قدرت منده که به شما اجازه می ده به راحت ترین حالت ممکن دیسک های سیستمتون رو مدیریت کنید. با استفاده از LVM شما می تونید دیسک هاتونو بدون نیاز به ریبوت کردن سیستم حذف کنید، تغییر اندازه بدین و یا یک دیسک جدید به سیستم معرفی کنید. همچنین شما می تونید برای یک پارتیشن، از بیش از یک دیسک (بدون در نظر گرفتن محدودیت حجم هر کدام) استفاده کنید. برای مدیریت I/O دیسک هاتون هم می تونید از LVM استفاده کنید، به صورتی که اطلاعات بر روی تمامی دیسک ها به صورت یکسان نوشته شوند (RAID-0).تو عکس زیر می تونید ساختار کلی LVM رو ببینید که جلوتر در مورد بخش های مختلفش صحبت می کنیم.چجوری می شه روی سیستم از LVM استفاده کرد ‌؟در زمان استفاده از LVM، اگر معنی چند کلمه رو بدونید، خیلی راحت تر می تونید باهاش ارتباط برقرار کنید:نکته: این اجزا فقط برای مدیریت راحت تر دیسک به وجود اومدن که در زمان کار کردن باهاشون کاملا اینو متوجه می شید.دیسک فیزیکی (Physical Volume): زمانی که شما دیسک رو به سیستم وصل می کنید و کارها پارتیشن بندیش رو انجام می دید، ما از هر پارتیشن یک دیسک فیزیکی (pv) می سازیم و اینا کوچیک ترین بخشی از دیسک می شن که ماهاشون کار خاهیم کرد.گروه دیسک ها (Volume Group): می تونیم از هر چنتا دیسک فیزیکی (pv) که می خایم استفاده کنیم و یک گروه دیسک (vg) بسازیمدیسک منطقی (LogicalVolume): این بخش در واقع همون فضای مجازی ماست که به ما اجازه می ده با استفاده از گروه های دیسکی،‌ دیسک های منطقی بسازیم. اینجا ما می تونیم فایل سیستم تعریف کنیم، اندازه دیسک رو بدون هیچ مشکلی کم و زیاد کنیم و با mount کردنشون به سیستم از اونها استفاده کنیم.شما می تونید به شکل زیر،‌ از LVM برای مدیریت فضای ذخیره سازی سرورتون استفاده کنید:۱. اول از همه لازمه که LVM رو نصب کنید:$ yum install lvm2۲. دیسکتونو به سیستم وصل کنید. به شکل زیر می تونید ببینید که سیستم دیسک رو شناخته یا نه:$ lsblk۳. اینجا ما کار های پارتیشن بندی این دیسک رو شروع می کنیم.$ fdisk [target directory]۴. به شکل زیر یک پارتیشن جدید ایجاد کنید.در اینجا ما ۴ پارتیشن primary ایجاد می کنیم اما شما با توجه به نیازتون هر چند پارتیشنی که دوست دارین درست کنید (حواستون به پارتیشن های primary  و extended باشه)۵. حالا، با وارد کردن حرف t، نوع پارتیشن ها رو مشخص کنید. می تونید با وارد کردن حرف L انواع مختلفی که می تونید برای پارتیشن ها داشته باشید رو ببینید. در اینجا با وارد کردن شماره پارتیشن و حروف 8e، نوع پارتیشن رو LVM بزارین.۶. این کار رو برای تمامی پارتیشن ها تکرار کنید۷. برای اینکه ببینید چیکار کردین،‌ می تونید با وارد کردن حرف p تمامی پارتیشن های موجود بر روی این دیسک رو ببینید.۸. در نهایت با وارد کردن حرف w تغییراتی که ایجاد کردین رو روی دیسک اعمال کنید.حالا وقت اینه که شوع کنیم با LVM کار کردن۹. با استفاده از دستور زیر از پارتیشن هایی که درست کردین، دیسک فیزیکی (pv) ایجاد کنید.$ pvcreate [target directory]۱۰. این کار رو برای تمامی پارتیشن ها تکرار کنید۱۱. با استفاده از دستور زیر می تونید وضعیت دیسک های فیزیکیتون رو ببینید:$ pvscan۱۲. با استفاده از دستور زیر می تونید اطلاعات بیشتری در مورد هر دیسک فیزیکی داشته باشید:$ pvdisplay [target directory]۱۳. با استفاده از دستور زیر می تونید از دیسک های فیزیکی (pv) که ساختید، گروه های دیسکی (vg) بسازید:$ vgcreate [Name of the group] [target directorie(s)]$ vgcreate Group1 /dev/vdb1 /dev/vdb2در اینجا می تونید به هر شکلی که دوست دارین، هر چنتایی که می خاین گروه دیسکی (vg) ایجاد کنیدتوجه کنید که محدودیتی تو تعداد دیسک های فیزیکی که در گروه قرار میدین وجود نداره و هر حتا می تونید برای هر دیسک فیریکی (pv)، یک گروه دیسکی (vg) ایجاد کنید.۱۴. با استفاده از دستور زیر می تونید وضعیت گروه های دیسکی‌(vg) سیستم رو ببینید:$ vgscan۱۵. به شکل زیر می تونید با وارد کردن نام گروه دیسکی (pv)، اطلاعات بیشتری رو در موردش ببینید:$ vgdisplay [name of the volume group]$ vgdisplay Group1۱۶. اگر یک بار دیگر دستور زیر را وارد کنید،‌می تونید ببینید که هر کدام از دیسک های فیزیکیتون عضو چه گروهی هستن:$ pvscan۱۷. حالا می تونیم با استفاده از گروه هایی که ایجاد کردیم، دیسک های منطقی بسازیم. این کار رو می تونید به شکل زیر انجام بدین:$ lvcreate --size [lv size] --name [lv name] [the vg which the lv will  be created from]$ lvcreate —size 7G —name LV_First_xo Group1شما می تونید با توجه به ظرفیت گروه های دیسکیتون، هر چنتا دیسک منطقی که می خاین رو بسازین.۱۸. با استفاده از دستور زیر می تونید وضعیت دیسک های منطقیتون رو ببینید:$ lvscan(این دستور هم اطلاعت دیسک های منطقیتون رو نشون می ده)۱۹. به شکل زیر می تونید اطلاعات بیشتری در مورد یک دیسک منطقی به دست بیارید:$lvdisplay [name of the lv]
$lvdisplay /dev/Group1/LV_First_xo۲۰. برای اینکه ببینید این دیسک ها کجا در سیستم قرار دارن، می تونید به شکل زیر عمل کنید:$ ls /dev/Group*۲۱. برای استفاده از این دیسک های منطقی، لازمه که فایل سیستم اونها رو مشخص کنیم:$ mkfs.ext4 /dev/Group1/LV_First_xo۲۲.این کار رو برای همه ی دیسک های منطقیتون انجام بدین.۲۲. حالا می تونید دیسک های منطقیتون رو به هرجایی که می خاین mount کنید.(می تونید هم یک دایرکتوری جدید ایجاد کنید)۲۳. به شکل زیر می تونید برای هر دیسک منطقی، یک دایرکتوری ایجاد کنید و دیسک را به آن mount کنید:۲۴. با وارد کردن دستور زیر می تونید وضعیت فضای فعلی سیستمتون رو ببینید:$ df -h</description>
                <category>علی کنگرانی</category>
                <author>علی کنگرانی</author>
                <pubDate>Tue, 29 Mar 2022 15:52:56 +0430</pubDate>
            </item>
                    <item>
                <title>لاگ فایل‌ها در لینوکس</title>
                <link>https://virgool.io/@xo4ever/%D9%84%D8%A7%DA%AF-%D9%81%D8%A7%DB%8C%D9%84-%D9%87%D8%A7-%D8%AF%D8%B1-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-c8qclxlda8zh</link>
                <description>لاگ چیه و به چه دردی می خوره ؟لینوکس یک سری اطلاعات از اتفاقاتی که در سیستم می افته رو نگه می داره. می شه مشخص کرد که به چه اتفاقاتی اهمیت بده و اطلاعاتشون رو نگه داره. ادمین سیستم می تونه برای بررسی دلیل وقایع مختلف و یا اینکه به طور کلی متوجه بشه چه اتفاقی توی سیستم افتاده از این اطلاعات استفاده کنه. این اتفاقات می تونن مربوط به عملکرد سیستم، برنامه و یا موضوعات امنیتی باشه. به طور خلاصه می شه گفت که با خوندن فایل های لاگ هم می توندی مشکلاتی که پیش اومده رو حل کنید و هم از مشکلاتی که ممکنه پیش بیاد جلوگیری کنید.چجوری لاگ ها رو تو لینوکس بررسی کنیم؟لینوکس تمام لاگ های سیستم رو به صورت متمرکز در دایرکتوری زیر نگه می داره:/var/logخوبه بدونید که تو لینکس لاگ ها به چهار دسته کلی تقسیم می شن:۱. لاگ های سرویس ها: تمام اتفاقاتی که برای سرویس ها می افته مثل اینکه درست اجرا شدن یا خطا دادن و اینکه چه خطایی دادن رو می تونید تو این دسته قرار بدین.۲. لاگ های اتفاقات: تغیر دسترسی ها، خطا های سخت افزاری دسترسی هایی که به سیستم ایجاد می شه از جمله مواردی هستن که تو این دسته از لاگ ها قرار دارن.۳. لاگ های سیستم: اینکه چه دستورات و توابعی ایجاد شدن،‌ از جمله چیز هایی هستن که می تونین ت واین دسته قرارشون بدین۴. لاگ های برنامه ها: این دسته از لاگ ها توسط خود برنامه ثبت می شن و روی سیستم ذخیره می شن.در این مقاله سیزده جای مهم رو می بینیم که به عنوان یه ادمین لینوکس خوبه ازشون اطلاع داشته باشید:۱. تمام اطلاعات مربوط به پروسه بوت شدن سیستم در این بخش وجود داره.# cat /var/log/boot.logتوجه داشته باشین که با توجه به مهندسی سیستمتون ممکنه این فایل وجود نداشته باشه. برای مثال سیستم شما اگه روی یک پلتفرم ابری بالا اومده باشده، لاگ های مربوط به بوت شدنش توی فایل زیر هستن.# cat /var/log/cloud-init.log۲. پیام های کلی سیستم در این بخش وجود داره.سیستم های Redhatیی:# cat /var/log/messagesسیستم های debianیی:# cat /var/log/syslog۳. لاگ های مربوط به درایور های قطعات سیستم در این بخش ذخیره می شن.# cat /var/log/dmesg۳. لاگ های مربوط به لاگین های (چه موفق و چه غیر موفق) در این بخش ذخیره می شن. همچنین روش لاگین هم ثبت میشه که می تونه فیزیکی، از روی شبکه، ssh و .. بوده باشه.سیستم های Redhatیی:# cat /var/log/secureسیستم های debianیی:# cat /var/log/auth.log۴. در این بخش می تونید تاریخچه کارهایی که package manager سیستم انجام داده رو ببینید.سیستم های Redhatیی:# cat /var/log/yum.logسیستم های debianیی:# cat /var/log/apt/history.log۵. تمام پیام ها، اخطارها و خطاهای کرنل لینوکس در این بخش ذخیره می شه.# cat /var/log/kern.log۶. سیستم های Debianیی از dpkg به عنوان Package Manager استفاده می کنن که می تونید از فایل زیر لاگ های مربوط بهش رو ببینید.# cat /var/log/dpkg.log</description>
                <category>علی کنگرانی</category>
                <author>علی کنگرانی</author>
                <pubDate>Tue, 29 Mar 2022 15:24:48 +0430</pubDate>
            </item>
                    <item>
                <title>کرنل لینوکس</title>
                <link>https://virgool.io/@xo4ever/%DA%A9%D8%B1%D9%86%D9%84-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-xtxemjqtveuk</link>
                <description>کرنل چیه ؟کرنل اصلی ترین بخش سیستم عامله و روی تمام قسمت های سخت افزار دسترسی کامل داره. در واقع یک بخشی از سیستم عامله که همیشه روی رم سیستم وجود داره و هر کاری که نرم افزارها با سخت افزار دارن رو کرنل انجام میده.مهندسی های مختلف کرنل چه جورین؟معماری Monolothic Architectureتو این مدل از طراحی کرنل، سیستم عامل کل در یک جا اجرا می شه و تمام سرویس ها و کارهایی که انجام میده رو توی یک کرنل اجرا می کنه. کل کرنل به عنوان یک پروسه بر روی مموری اجرا می شه. این مدل از طراحی کارایی سیستم رو خیلی بالا می بره اما انعطاف زیادی در زمان تغییر ویژگی های کرنل و یا اضافه کردن/حذف کردن اون ها نداره.مثال :ویندوز ۱-۲–۳-۹۵-۹۸-MEتمامی توزیع های لینوکساندروید (اندروید یک نسخه خاصی از لینوکسه)معماری Microkernel Architectureدر اینجا کرنل یک سری ارتباطات پایه ای رو با سخت افزار داره و یک مکانیزم کلی برای ارتباط بین پروسه ای داره‌ (یا خدا!).تمام بخش های دیگه سیستم عامل خارج از کرنل اجرا می شن. این نوع از طراحی انعطاف بیشتری در زمان تغییر ویژگی های کرنل دارد اما ارتباط های بین پروسه ای زیاد میشه و یکم روی بازده سیستم تاثیر می زاره.مثال:MachOKL4CodezeroFiasco.OCPikeOSHybridkernel Architectureاین مدل از طراحی یه چیزی بین Microkernel و Monolothic هه. هم بازدش بالاست و هم در زمان اعمال تغییرات تو کرنل منعطفه.مثال:ویندوز NT، ۲۰۰۰، XP، Vista، ۷، ۸، ۸.۱، ۱۰آی او اسمکینتاشمعماری Nanokernel Architectureتو این مدل کل کد روی رم لود می شه و بعد اجرا می شه. حالا اگه بخای یه برنامه دیگه ران بشه لازمه که کد برنامه قبلیه از روی سیستم آن لود بشه و کد برنامه بعدی لود بشه.مثال:کنسول های بازیدستگاه های ایمبد (embed) شدهمهندسیه کرنل لینوکس به چه شکله‌؟یکی از بزرگترین برگ برنده های لینوکس همین معماری Monolothic کرنلشه. باعث شده سرعت خیلی زیادی داشته باشه. همچنین خیلی هم سبک تر روی سیستم کار می کنه. تو کرنل لینوکس بعضی ماژول ها استاتیکن و بعضیا داینامیک.حالا فرقشون چیه؟ماژول های استاتیک از قبل با خود کرنل کامپایل می شن و بخشی از خود هسته سیستم عاملن. این ماژولارو نمی شه تغییر بدی و اگه لازم باشه باید از اول کرنلو درست کنی.ماژول های داینامیک رو می شه به راحتی لود و آن لود کرد و هرجایی که دوست داشتی می تونی به سیستم اضافشون کنی و یا از روی کرنل برشون داری.قبل از هر کاری نکات زیر رو در نظر داشته باشید:۱. مراحل و کامندهایی که تو این مقاله اومدن قرار نیست حتما بر روی سیستم شما کار کنند.۲. با توجه به توزیع و کانفیگ سیستم شما ممکنه نیاز باشه یک پکیج خاصی رو نصب کنید و یا یک فایلی رو ادیت کنید۳. در زمان برخورد با خطا، اول از همه خطا را بیابید (لینوکس همیشه خیلی شیک میگه مشکلش چیه)، دوم خطا را گوگل کنید. به یاد داشته باشید شما اولین کسی نیستید که با خطا مواجه شده و یه راه حلی براش پیدا کرده. از تجربیات بقیه استفاده کنید و راه حل هاشنون رو بخونید.برای درست کردن یک نسخه شخصی کرنل باید مراحل زیر روی طی کنید:۱. اول از همه لازمه ابزارهایی که واسه این کار لازمرو دانلود کنید:$ yum groupinstall “Development Tools”$ yum install ncurses-devel۲. حالا باید تشریف ببرید تو سایت kernel.org و سورس کرنلی که می خاینو دانلود کنید.۱. لینک رو از روی سایت کپی کنید۲. با دستور زیر فایل رو بر روی سیستمتون دانلود کنید$ wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.15.tar.xz۳. فایلی که دانلود کردید رو به صورت زیر از حالت فشرده خارج کنید$ tar -xf linux-5.15.tar.xz۴. به شکل زیر وارد دایرکتوری بشید$ cd linux-5.15۵. از روی سیستمی که روش هستین کانفیگ کرنل فعلی که می دونیم داره درست کار می کنه رو در این دایرکتوری کپی کنید$ cp /boot/config-$(uname -r) .config۶. حالا وقتشه که ماژول هایی که می خایمو روی کرنل لود کنیم و اونایی که لازم نداریمو حذف کنیم. حواستون باشه که ممکنه یکی از بخش های حیاتی کرنلو حذف کنید که همه زحماتمون به باد میره. می تونیم خیلی شیک به چیزی دست نزنیم و به کانفیگی که کپی کردیم اکتفا کنیم.$ make menuconfig۷. بخش هیجان انگیز ماجرا که میشه کامپایل کردن کرنل و ساخت یک ایمیج فشرده از کرنلمون:$ make -j 30۸. حالا ماژول های کرنلو نصب می کنیم$ make modules_install۹. کرنل ما آمادست و برای نصبش روی این سیستم می شه از دستور زیر استفاده کنید.$ make install۱۰. برای اینکه سیستم این کرنل رو در زمان بوت شدن بشناسه و ازش استفاده کنه باید در بوت منیجر سیستم تغیراتی اعمال کنیم که این زیر نشون دادیم.$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg$ sudo grubby --set-default /boot/vmlinuz-5.6.9با استفاده از دستروات زیر می تونید از درست بودن تغییراتی که اعمال کردید اطمینان پیدا کنید.$ grubby --info=ALL | more$ grubby --default-index$ grubby --default-kernelحالا می تونید سیستمتون رو ریبوت کنید و از توی بایوس سیستم عامل جدیدتون رو انتخاب کنید.</description>
                <category>علی کنگرانی</category>
                <author>علی کنگرانی</author>
                <pubDate>Tue, 29 Mar 2022 15:15:36 +0430</pubDate>
            </item>
                    <item>
                <title>دایرکتوری‌های لینوکس</title>
                <link>https://virgool.io/@xo4ever/%D8%AF%D8%A7%DB%8C%D8%B1%DA%A9%D8%AA%D9%88%D8%B1%DB%8C-%D9%87%D8%A7%DB%8C-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-furiphijfs89</link>
                <description>در لینوکس ساختار بسیار جالب و منظمی وجود دارد که تو این مقاله یه نگاهی بهشون می کنیم.۱. / : همه چیز و همه کس بر روی سیستم زیر مجموعه این دایرکتوری هستن. روت دایرکتوری مادر سیستم شماست.۲.دایرکتوری /bin/: تمامی برنامه های حیاتی سیستم که لازمه در زمان بالا اومدن سیستم (در هر حالتی) تو این دایرکتوری قرار دارن. مثل خود ترمینال شما (یک برنامه هست که معمولا از bash استفاده می شه).۳. دایرکتوری /boot/: فایل هایی که سیستم شما در زمان بوت شدن به آنها نیاز دارد در این دایرکتوری قرار دارن. مثل فایل بوت لودر grub (فقط حواستون باشه که فایل های کانفیگش اینجا نیستن و فقط خود برنامه این جاست)۴.دایرکتوری /dev/: همونطور که قبل یاد گرفتیم، تو لینوکس به همه چیز به چشم یک فایل نگاه میشه حتی اجزایی که به صورت سخت افزاری به سیستم وصل می شن. اما در نظر داشته باشید که این فایل ها مثل فایل های معمولی نیستن و فقط بر روی سیستم شما به دید یک فایل به آنها دیده میشه. مثلا یکی از معروف ترین بخش های این دایرکتوری /dev/sda هستش که اولین دیسک سیستمه.۵.دایرکتوری /etc/: فایل کانفیگ همه ی برنامه ها در لینوکس اینجان. پس به همین سادگی از این به بعد هر جا لازم بود کانفیگ برنامه ای رو دست کاری کنید، بدونید که باید توی این دایرکتوری دنبالش بگردین.۶.دایرکتوری /home/: خونه همه کاربرا اینجاست. هر کاربری واسه خودش یه فولدر توی این دایرکتوری داره که فایلای خودشو می تونه از این را ببینه و هر کاربری فقط دسترسی به فایلای خودشو داره.۷.دایرکتوری /lib/: تمام کتابخونه هایی که برنامه های سیستم بهشون نیاز دارد رو می تونید از اینجا پیدا کنید.۸.دایرکتوری /media/: تمام دستگاه های مدیایی (Media Devices) که وصل می شن به سیستم رو می تونید اینجا ببینید. مثلا اگه یه سی دی به سیستم وصل کنید،‌ می تونید اینجا ببینیدش.۹.دایرکتوری /mnt/: قدیما کاربرای لینوکس هر چیزی رو که لازم بود به سیستم Mount کنن رو به این دایرکتوری Mount می کردن. اما اینو در نظر داشته باشین که شما می تونید هر چیزی رو به هر جایی از سیستم که دوست داشتید Mount کنید و هیچ مشکلی پیش نمی آد.۱۰.دایرکتوری /opt/: بعضی برنامه های third party که از ساختار فایل سیستم لینوکس پیروی نمی کنن فایلاشونو میریزن اینجا.۱۱.دایرکتوری /proc/: تو این دایرکتوری یه سری فایل های خاصو می بینید که برای پروسه های سیستم ایجاد شدن (در نظر داشته باشید که همه ی پروسه ها در این دایرکتوری یه فایل دارن).۱۱.دایرکتوری /root/: اینجا خونه کاربر روته (جای این که توی دایرکتوری /home/ باشه،‌خودش واسه خودش یه خونه داره)۱۳.دایرکتوری /sbin/: این دایرکتوری هم مثل /bin/ می مونه و برنامه های خیلی حیاتی سیستم رو توی خودش داره، با این فرق که اینجا برنامه هایی هستن که برای اجرا نیاز به دسترسی روت دارن.۱۲.دایرکتوری /srv/: اطلاعاتی که سرویس های سیستم ایجاد می کنن اینجا ذخیره می شن. مثلا اگه شما یه وب سرور داشته باشین  (آپاچی)، دیتایی که ایجاد می کنه رو اینجا می زارین (اگه دوست داشته باشین البته).۱۳.دایرکتوری /tmp/: اطلاعات موقت سیستم اینجا هستن و در زمان خاموش روشن شدن سیستم هرچی اینجا باشه پاک میشه.۱۴.دایرکتوری /usr/: برنامه ها و فایل هایی که قرار توسط کاربر ها استفاده بشن اینجان (نه برنامه هایی که سیستم قراره ازشون استفاده کنه) همچنین کتابخونه های هر کدام از این برنامه ها هم اینجان.۱۵.دایرکتوری /var/: تمام لاگ های سیستم و خلاصه درد و دل برنامه ها توی این دایرکتوریه.</description>
                <category>علی کنگرانی</category>
                <author>علی کنگرانی</author>
                <pubDate>Tue, 29 Mar 2022 15:00:13 +0430</pubDate>
            </item>
                    <item>
                <title>Installing A package From source</title>
                <link>https://virgool.io/@xo4ever/installing-a-package-from-source-ugilpy9qg4os</link>
                <description>نصب برنامه از کد منبع:به طور کلی در سیستم های لینوکسی ما از ابزار های مدیریت پکیج برای نصب برنامه ها استفاده می کنیم. اما ممکنه پکیجی که می خایم نصب کنیم تو ریپازیتوری های سیستم موجود نباشه یا به هر دلیلی دوست داشته باشیم همه ی مراحل نصب رو خودمون دستی انجام بدیم. برای انجام این کار لازمه مراحل زیر رو طی کنیم:۱. دانلود کد منبع (source code) برنامه۲. دانلود و نصب ابزارای مورد نیاز برای ویرایش و کامپایل کردن کد برنامه. با توجه به توزیعی از لینوکس که استفاده می کنیم و کدی که برنامه با آن نوشته شده، ابزار های مختلفی نیاز هستش. برای مثال نمی تونیم برای کامپایل کردن یک برنامه که با زبان پایتون نوشته شده از کامپایلر gcc که برای زبان برنامه نویسی c هستش، استفاده کنیم.۳. اگر لازم هستش، یک کاربر جدید برای این برنامه ایجاد می کنیم.۴. تنظیماتی رو که دوست داریم در کد برنامه اعملا می کنیم. یا به اصطلاح config می کنیم.۵. کد رو کامپایل می کنیم و نصب رو انجام می دیم.۶. برنامه رو به عنوان یک سرویس روی سیستم تعریف می کنیم.۷. با استفاده از نرم افزاری که باهاش سرویس ها رو مدیریت می کنیم‌ (systemd مثلا!) این سرویس رو اجرا می کنیم.۸. از برنامه استفاده می کنیم.در این مقاله ما وب سرور Nginx رو از کد منبع نصب می کنیم که بتونیم تمام مراحل بالا رو با هم ببینیم.۱. بر روی سیستم تست ما که ubuntu 20.04 LTS هستش، ما به پکیج های زیر نیاز داریم که باید نصبشون کنیم.# apt install build-essential libpcre3-dev zlib1g-dev libssl-dev  libatomic-ops-dev libxml2-dev libxslt1-dev libgeoip1 libgeoip-dev  libgd-dev google-perftools libgoogle-perftools-dev libperl-dev۲. کد منبع وب سرور رو از روی سایتش دانلود می کنیم.# wget -c http://nginx.org/download/nginx-1.15.8.tar.gzهمونطور که می بینید فایلی که دانلود کردیم آرشیو شده. لازمه به شکل زیر از این حالت خارجش کنیم که باهاش کار کنیم.# tar xf nginx-1.15.8.tar.gzبه شکل زیر وارد دایرکتوری که کد منبع برنامه توش هستش می شیم.# cd nginx-1.15.8۳. قبل از اینکه کار های پیکربندی برنامه رو شروع کنیم، یک کاربر برای این برنامه ایجاد می کنیم به نام nginx.نکته: توجه کنید که این کاربر فقط برای این برنامه ایجاد شده و امکان لاگین نداره.# sudo useradd -s /sbin/nologin nginx۴. اینجا بخش حساس قضیس. باید پیکربندی برنامه رو انجام بدیم. اینکه چه ماژول هایی رو لود کنیم و برنامه با چه ویژگی هایی نصب بشه. این بخش به دانش خیلی زیادی نیاز داره که از بحث این مقاله خارجه.# sudo ./configure --user=nginx --group=nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --with-select_module --with-poll_module --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_xslt_module=dynamic --with-http_image_filter_module --with-http_image_filter_module=dynamic --with-http_geoip_module --with-http_geoip_module=dynamic --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-http_perl_module --with-http_perl_module=dynamic --with-mail --with-mail=dynamic --with-mail_ssl_module --with-stream --with-stream=dynamic --with-stream_ssl_module --with-stream_realip_module --with-stream_geoip_module --with stream_geoip_module=dynamic --with-stream_ssl_preread_module --with-google_perftools_module --with-cpp_test_module --with-compat --with-pcre --with-pcre-jit --with-zlib-asm=CPU --with-libatomic --with-debug --with-ld-opt=&amp;quot-Wl,-E&amp;quotاین پروسه باید بدون خطا و به شکل زیر تموم بشه.۵. تو این مرحله باید کد برنامه رو با توجه به پیکربندی که تو مرحله قبل مشخص کردیم کامپایل و نصب کنیم.# make &amp;&amp; sudo make installدر آخر با یه صحنه ای مثل شکل زیر باید برخورد کنید. اگر به خطا خوردید، بررسی کنیم تا حل بشه.۶. حالا لازمه این برنامه رو به عنوان یه سرویس روی سیستم تعریف کنیم که بشه مدیریتش کرد. برای این کار باید فایل زیر رو ایجاد کنیم و محتوای مشخص شده رو توش بزاریم.# vi /lib/systemd/system/nginx.serviceمتن زیر رو وارد این فایل می کنیم.[Unit]   Description=The Nginx 1.15.8 service After=syslog.target network.target remote-fs.target nss-lookup.target [Service] Type=forking  PIDFile=/usr/local/nginx/logs/nginx.pid ExecStartPre=/usr/sbin/nginx -t ExecStart=/usr/sbin/nginx ExecReload=/usr/sbin/nginx -s reload ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.targetدر ادامه Systemctl رو یک بار reload می کنیم که این سرویس جدید رو بشناسه و تغییراتی که ایجاد کردیم اعمال بشه.# systemctl daemon-reload۷. برنامه رو با استفاده از Systemctl روشن می کنیم.# systemctl start nginxبه شکل زیر می تونمی ببینیم که این برنامه ایجاد شده و در حال اجراست.# systemctl status nginx</description>
                <category>علی کنگرانی</category>
                <author>علی کنگرانی</author>
                <pubDate>Tue, 29 Mar 2022 14:05:04 +0430</pubDate>
            </item>
                    <item>
                <title>سرویس FTP در لینوکس</title>
                <link>https://virgool.io/@xo4ever/%D8%B3%D8%B1%D9%88%DB%8C%D8%B3-ftp-%D8%AF%D8%B1-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-gm0smq52p6u6</link>
                <description>سرویس FTP چیه ؟راه های زیادی برای جابجایی فایل بین سرور ها. استفاده از پروتوکل FTP یکی از راه های بهینه برای انجام این کار هستش. این نکته رو در نظر داشته باشید که از اونجایی که FTP یه پروتوکل استاندارد هستش، هیچ وابستگی به سیستم عامل خاصی ندارد. سادگی و سرعت بالایی که این پروتکل داره، باعث شده کاربرای خیلی زیادی رو به خودش جذب کنه. در نتیجه همه این حرف ها، به عنوان یه ادمین لینوکس شما باید بتونید یک سرور FTP رو بالا بیارید و باهاش فایل جابجا کنید.کار با FTP در سیستم عای لینوکسی:زمانی که کاربر به سرور FTP متصل میشه دو کار کلی میتونه انجام بده، یکی از اونها اجرای تعدادی دستور هستش و کار دیگه جابجایی اطلاعاته. به طور پیش فرض FTP از پورت ۲۱ برای اتصال برای اجرای دستورات و پورت ۲۰ برای جابجایی اطالاعات استفاده می کنه.برای شروع کار با این سرویس ما می تونیم از ابزار های زیادی استفاده کنیم اما ابزار زیر از نظر عملکردی بسیار خوب هستش و یکی از پر مصرف ترین ها هستش. به شکل زیر میتونید این بسته رو روی سیستم نصب کنید.# apt install vsftpdدر ابتدا باید سرویس رو فعال کنیم.#systemctl enable vsftpd
همچنین سرویس به شکل زیر باید استارت بشه.# systemctl start vsftpdدر نهایت می تونید وضعیت سرویس FTP رو بررسی کنید که باید به شکل زیر باشه.# systemctl status vsftpdاز مسیر زیر وارد فایل تنظیمات FTP بشید.# vi /etc/vsftpd.confتنظیماتی که از اینجا به بعد گفته می شن رو در صورت نیاز می تونید روی سرورتون اعمال کنید.در صورت فعال کردن این گزینه، به کاربر ها اجازه نوشتن روی سیستم رو میدین (در واقع می تونن فایل ایجاد کنن).write_enable=YESبا فعال کردن مورد اول، هر کاربری فقط می تونه با نام کاربر مشخص خودش وارد سرور بشه و نام کاربری anonymous غیر فعال میشه. در صورت فعال کردن گزینه دوم، کاربر هایی که روی سرور تعریف شدن هم می تونن به این سرویس دسترسی داشته باشن.anonymous_enable=NO
local_enable=YESمی تویند به هیچ کاربری اجازه دسترسی به فایل های خارج از خونه خودش (home) رو ندید. برای این کار باید گزینه زیر رو فعال کنید.chroot_local_user=YESبعد از فعال کردن گزینه بالا باید یک دایرکتوری برای کاربر ایجاد کنید که به عنوان خونش (home) عمل می کنه.user_sub_token=$USER
local_root=/home/$USER/ftpدر نظر داشته باشید که می تونید فقط به یه سری کاربر خاص اجازه دسترسی به سرور رو بدین. برای این کار باید گزینه زیر رو فعال کنید. به این شکل یه لیست از کاربرایی که مجاز به استفاده از این سرویس هستن رو مشخص می کنید (فقط جای لیست رو اینجا مشخص می کنید).نکته: از این قابلیت می تونید برای گرفتن دسترسی تعدادی از کاربر های عم استفاده کنید. به شکلی که دسترسی برای همه باز باشه و فقط برای تعداد مشخصی بسته بشه.userlist_enable=YSE
userlist_file=/etc/vsftpd.user_list
#userlist_deny=NOبه شکل زیر می تونید رنج (range) پورت های قابل استفاده در حالت Passive رو مشخص کنید. به طور کلی FTP در حالت Active کار می کنه که کاربر به پورت ۲۱ متصل می شه و سرور از طریق پورت ۲۰ به کاربر متصل می شه و انتقال اطالاعات انجام میشه. اما در حالت Passive کاربر به پورت ۲۱ متصل میشه و بعد از پاسخ سرور، به یه پورت نامشخص دیگه برای انتقال اطلاعات متصل میشه که این زیر می تونید رنج (range) اون پورت های نامشخص رو مشخص کنید.pasv_min_port=30000 
 pasv_max_port=31000در آخر، فایل تنظیمات شما باید به شکل زیر باشه (بدون در نظر گرفتن مواردی که comment شدن).# listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
user_sub_token=$USER
local_root=/home/$USER/ftp
pasv_min_port=30000
pasv_max_port=31000
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NOبعد از وارد کردن تغییرات روی تنظیمات FTP، باید به شکل زیر سرویسش رو ریست (reset) کنید.# systemctl restart vsftpdبعد از ریست (reset) هم می تونید به شکل زیر وضعیت سرویس رو بررسی کنید.# systemctl status vsftpdتو این مرحله باید پورت های لازم رو روی فایروال سیستم باز کنید. در اینجا ما از ufw به عنوان فایروال استفاده می کنیم و به شکل زیر پورت ۲۱ رو روی سیستم باز می کنیم.# ufw allow 21/tcpهمونطور که می دونید ما به پورت ۲۰ هم نیاز داریم که به شکل زیر باید بازش کنیم.# ufw allow 20/tcpهمچنین باید پورت های مشخص شده برای حالت passive رو هم روی فایروال باز کنید.‍‍‍# ufw allow 3000:31000/tcpنکته: قبل از روشن کردن فایروال پورت ۲۲ رو باز کنید که دسترسی ssh رو داشته باشید.# ufw allow OpenSSHحالا می تونید فایروال سیستم رو روشن کنید که قوانین روی سیستم اعمال بشن.# ufw enable
به شکل زیر میم تویند وضعیت فایروال سیستم رو ببینید.# ufw statusدر این مرحله باید کاربر های سرویس رو ایجاد کنید. یه رمز عبور خوب براش مشخص کنید و اگه دوست دارید اطلاعات دیگه کاربر رو هم می تویند تعریف کنید.# adduser arvanftpبه شکل زیر دایرکتوری خونه (home) کاربر رو بسازید.# mkdir -p /home/arvanftp/ftpبه شکل زیر به کاربر اجازه خوندن و اجرا کردن دستور در دایرکتوری خونش (home) رو بدین.#chmod 550 /home/arvanftp/ftpهمچنین باید به شکل زیر دسترسی نوشتن رو روی یه فایل به کاربر بدین که بتونه فایل آپلود کنه.# chmod 750 /home/arvanftp/ftp/uploadمالکیت این دایرکتوری رو به خود کاربر بدین.# chown -R arvanftp: /home/arvanftp/ftpبه شکل زیر می تونید یه shell کاربر رو محدود کنید به طوری که دسترسی بجز استفاده از سرویس ftp رو نده. برای مثال کاربر اجازه ssh زدن به سیستم رو نخواهد داشت.#echo -e ‘#!/bin/sh\necho “This account is limited to FTP access  only.”’ | sudo tee -a /bin/ftponlyبه استفاده از دستور زیر اجازه اجرا شدن رو به فایل زیر بدین.# chmod a+x /bin/ftponlyحالا باید فایلی که ایجاد کردید رو به عنوان shell های مجاز سیستم تعریف کنید.# echo “/bin/ftponly” | sudo tee -a /etc/shellsدر آخر باید shell کاربر رو تغییر بدین که رو حالت پیش فرض نباشه.#usermod arvanftp -s /bin/ftponlyحالا باید کاربری رو که ایجاد کردین رو به لیست کاربرای مجاز اضافه کنید.# echo &amp;quotarvanftp&amp;quot | tee -a /etc/vsftpd.user_listبرای امتحان کردن سرویس، فایل زیر رو روی سرور ایجاد کنید.# vi /home/arvanftp/ftp/upload/ItWorks.txtاز روی یک سیستم دیگه به شکل زیر به سرور ftp متصل بشید. در اینجا باید نام کاربری و رمز عبور رو وارد کنید (آی‌پی که در تصویر اومده برای سرور تستی بوده و بعد از نوشتن این داکیومنت سرور حذف شده. شما باید آی‌پی خودتونو بزنید).ftp &lt;Ip Address&gt;به شکل زیر می تونید لیست دستورات مجاز رو ببینید.ftp&gt; helpبرای مثال به شکل زیر می تونید ببینید که در چه مسیری هستید.ftp&gt; pwdهمچنین می تونید فایل های موجود در مسیر فعلیتون رو مشاهده کنید.ftp&gt;  lsبه شکل زیر می تونید تو سرور جابجا بشید.ftp&gt; cd uploadدر آخر برای تست سرور می تونید فایل رو به شکل زیر دانلود کنید.ftp&gt;  get &lt;File name&gt;به شکل زیر می تونید از سرور ftp خارج بشید.ftp&gt; exitهمونطور که میبینید فایل دانلود شده و می توینم ازش نهایت استفاده رو بکنیم :).# cat ItWorks.txt</description>
                <category>علی کنگرانی</category>
                <author>علی کنگرانی</author>
                <pubDate>Tue, 29 Mar 2022 13:20:03 +0430</pubDate>
            </item>
                    <item>
                <title>کلن فایروال در لینوکس :)</title>
                <link>https://virgool.io/@xo4ever/%DA%A9%D9%84%D9%86-%D9%81%D8%A7%DB%8C%D8%B1%D9%88%D8%A7%D9%84-%D8%AF%D8%B1-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-w8kxu32syshv</link>
                <description>فایروال چیه و به چه دردی می خوره؟برای اینکه ماهیت این سرویس رو درک کنید با یه مثال توضیحش می دیم. اگه سرورتون رو یک خونه در نظر بگیریم، لازمه که ورودی و خروجی هاشو مدیریت کنیم و اجازه ندیم از هرکسی از هر جایی که دوست داشت بیاد و بره. اینم در نظر داشته باشید که خونه شما ۶۵۵۳۵ ورودی و خروجی داره (تمام سیستم ها ۶۵۵۳۵ پورت دارن). وضیفه فایروال مدیریت پورت های سیستم هستش. شما با استفاده از این سرویس می تونید مشخص کنید که چه پورت هایی باز و چه پورت هایی بسته باشن و اگر هم قرار پورتی باز باشه، می تونید مشخص کنید که فقط برای آدرس خاصی باز باشه.فایروال چه انواعی داره؟به طور کلی فایروال ها در دو دسته سخت افزاری و نرم افزاری قرار دارن. از نظر منطقی هر دو یک کار رو انجام می دن اما در جاهای خیلی حساس که قراره فایروالشون خیلی درگیر باشه، از فایروال سخت افزاری استفاده می کنن و بار مدیریت دسترسی ها رو از روی سرور بر می دارن. فایروال در لینوکسدر لینوکس ما یک سرویس پایه به نام netfilter داریم که در سطح کرنل کار مدیریت پورت های سیستم رو روی استک شبکه (Network Stack). کار با این ابزار به این سادگی ها نیست و دردسر های زیادی داره. به همین دلیل برنامه های نوشته شده که به عنوان رابط بین کاربر و این ماژول عمل می کنن. مهم ترین و پر کاربردترین فایروال های لینوکسی این زیر اومدن.در ادامه این مقاله هر کدوم رو به صورت جدا بررسی می کنیم.نکته: هیچ کدوم از این فایروال ها مخصوص توزیع خاصی نیستن و بر روی تمام توزیع های لینوکس کار می کنن.۱.توضیح IpTables۲. توضیح FirewallD۳.توضیح UFWتوضیح اینکه IpTables چیه و چجوری کار می کنه؟پیر تمام فایروال های لینوکسی همین ابزار هستش. بر پایه netfilter کار می کنه و بسیار قدرتمنده. به طور کلی شرکت های سرویس دهنده در سطح بزرگ از این ابزار استفاده می کنن چون انعطاف و قدرتی رو که این ابزار به کاربر می ده رو هیچ ابزار دیگه ای نمیده. لازمه اینو بدونید که با این ابزار کارهای زیادی می شه انجام داد و فقط محدود به مدیریت دسترسی های شبکه سیستم نیستش. کار باهاش ساده نیست اما اگه ساختارش رو یاد بگیرید می تونید خیلی خوب باهاش ارتباط برقرار کنید. این زیر معماری IpTables رو بررسی می کنیم:به طور کلی خوبه بدونید که IpTables یک سری Table داره و تو هرTables یک سری Chain داره که تو هر Chain یه سری Rule داره. حالا اینایی که گفتیم یعنی چی؟توضیح Table: یک جدول هستش که با توجه به کاری که شما می خاین انجام بدین قوانین رو دسته بندی می کنه. به طور پیش فرض این جدول ۴ زنجیر داره (Chain) که به شکل زیر هستن:۱. توضیح Filter: تمام پکت های ورودی و خروجی سیستم باید از این جدول عبور کنن که مشخص بشه اجازه ورود یا خروج دارن یا نه. تو این مقاله ما فقط با همین بخش کار داریم.۲. توضیح NAT: برای مشخص کردن مسیر ها و قوانین در یک شبکه NAT استفاده می شه.۳.توضیح  Mangle: اگه می خاین هدر پکت های سیستم رو تغییر بدین باید تو این جدول قوانینتون رو تعریف کنید.۴. توضیح Raw: این جدول واسه اینه که یک سری پکت ها رو ازا هر قانونی خارج کنید (مصونیت قضایی داشته باشن).توضیح Chain: زنجیر درواقع یک تعدادی قانون هستن که در جای مشترکی قرار اعمال بشن (مثل Input، output، Forward و …). تو این مقاله ما فقط با زنجیر های Input و output کار داریم.توضیح Rule: بعد از اینکه پکت به سیستم می رسه و مشخص می شه باید تو کدوم جدول بره و بعد از چه زنجیری استفاده بشه، باید مشخص بشه که چه کاری باید باهاش کرد. قانون مشخص می کنه که با یه پکت باید چه کاری انجام بدیم. یه طور کلی یه قانون می تونه چهار کار با یه پکت بکنه:۱. توضیح Accept: در این حالت فایروال قبول می کنه که پکت وارد سیستم بشه.۲.توضیح Drop: بدون برگردوندن هیچ خطایی، پکت وارد سیستم نمی شه.۳.توضیح Return: پکت بر می گرده به زنجیری که ازش اومده (باید قانون مناسبش رو یه جای دیگه پیدا کنه).۴.توضیح Reject: پکت رد می شه و یه خطا به جایی که ازش اومده ارسال می شه.کار با IpTablesبرای شروع کار با این ابزار لازمه که روی سیستم نصبش کنید. در چند سال اخیر، IpTables به طور پیش فرض روی تمام توزیع های لینوکس نصب هستش.قوانین IpTables در هر بار ریبوت سیستم پاک می شن. برای دایمی کردن قوانین فایروال بسته زیر رو نصب کنید (جلوتر با هم می خونیم که چجوری می شه این کار رو کرد).# apt install iptables-persistentبرای دیدن تمام قوانین موجود روی فایروال می تونید از دستور زیر استفاده کنید.# iptables -L -vفرمت کلی قوانین در IpTables به شکل زیر هستش:# iptables [option] &lt;chain&gt; -i &lt;interface&gt; -p &lt;protocol&gt; -s &lt;source address&gt; --dport &lt;port number.&gt;  -j &lt;target&gt;توضیح اینکه Option چیه؟ مشخص می کنیم که می خایم این قانون رو چی کار کنیم.شماره ۱:  append  -A-- قانون رو به انتهار زنجیر اضافه می کنه.شماره ۲: -I --insert قانون رو در یک جای مشخصی از زنجیر اضافه می کنه.شماره۳: -L --list تمام قوانین زنجیر رو نشون می ده.شماره ۳: delete -D-- یک قانون مشخص رو حذف می کنه.شماره ۴:  flush -F-- تمام قوانین زنجیر رو حذف می کنه.توضیح Chain ؟ این رو کامل بالا توضیح دادیم (امیدوارم فراموش نکرده باشین).توضیح Interface ؟ اینجا مشخص می کنید که ترافیک کدوم کارت شبکه رو می خاین فیلتر کنید.توضیحProtocol ؟ پروتوکلی که شامل این قانون می شه رو مشخص می کنید.توضیحSource Address ؟ آی پی مبدا رو مشخص می کنیدتوضیح Port Number ؟ شماره پورت مورد نظرتونتوضیح Target ؟ همون ۴ کار کلی هستش که قانون می تونه انجام بده (Accept، Drop، Return و Reject)به عنوان یه مثال ساده و بسیار کاربردی، به شکل زیر می تونید پورت ۲۲ رو که برای سرویس ssh استفاده می شه رو روی سیستم باز کنید (توجه داشته باشید که می تونید بجای ACCEPT هر کدوم از چهار Target رو قرار بدیم).# iptables -A INPUT -p tcp --dport 22 -j ACCEPTبه همین صورت می تونید هر پورتی رو که لازم دارید روی سیستم باز کنید‌(توجه داشته باشید که پورت رو در مسیر ورودی باز کردیم) و در این حالت از هر آدرسی می تونن این پورت رو ببینن.# iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# iptables -A INPUT -p tcp --dport 161 -j ACCEPT
# iptables -A INPUT -p tcp --dport 23 -j ACCEPTبرای تمام قوانین فایروال می تونید از دستور زیر استفاده کنید. همونطور که می بینید، همه ی قوانینی که نوشتیم در جدولی که مشخص کردیم قرار دارن.# iptables -L -vنکته: وقتی یه درخواست وارد IpTables می شه، قوانین از بالا به پایین روش خونده میشن تا یکی از اونها با اون درخواست match بشه. پس اینو در نظر داشته باشید که اگه مثلا تو قانون اول ssh رو کلا بسته باشید و در قانون دوم ssh رو برای یه آی پی خاص باز گزاشته باشید، هیچ کسی نمی تونه به این سیستم ssh بزنه چون تمام درخواست ها با قانون اول match میشن و به قانون دوم نمی رسن.برای دایمی کردن قوانین IpTables باید در ابتدا اونها رو در فایر زیر ذخیره کنید. با استفاده از دستور زیر این کار رو انجام می دیم.# iptables-save &gt; /etc/iptables/rules.v4به شکل زیر مشخص می کنیم که در زمانی که کارت شبکه سیستم بالا میاد این قوانین رو روی فایروال بنویسه.نکته: روش های زیادی برای این کار وجود دارد اما میشه گفت این کار یکی از حرفه ای ترین ها هستش.# vi /etc/network/if-prep-up.d/firewallمتن زیر رو در این فایل وارد کنید‌(به شکل اسکریپت).#!/bin/bash
Iptables-restore &lt; /etc/iptables/rules.v4کار با FirewallD یا همون Dynamic Firewall:این ابزار به عنوان یه جایگزین برای IpTables اومد ولی واقعیت این هستش که با وجود قدرتمند بودن و سادگی کار باهاش به هیچ وجه نمیشه گفت که یه جایگزین کامل برای IpTables هست. اما همونطور که گفتیم،‌این ابزار بسیار قدرتمند و کار راه اندازه که در ادامه کار باهاش رو می بینیم.برای شروع کار با FirewallD اول لازمه که روی سیستمتون نصبش کنید.# apt install firewalldمثل هر سرویس دیگه اول لازمه که این برنامرو فعال کنید.#systemctl enable firewalldبه شکل زیر سرویسشو استارت کنید.#systemctl start firewalldبرای دیدن وضعیت این سرویس می تونید به شکل زیر عمل کنید.# systemctl status firewalldبرای دیدن وضعیت قوانین فایروال می تونید به شکل زیر عمل کنید#firewall-cmd --stateبرای اضافه کردن یه پورت جدید،‌ می تونید به شکل زیر عمل کنید.نکته: در FirewallD قوانین در دسته های مختلفی قرار دارن که به اونها zone می گیم. این zone ها در واقع میزاد اعتمادی که شما به یه شبکه دارید رو مشخص می کنن. مثلا قوانینی که روی شبکه اینترنت یه کافه وضع می کنید باید خیلی سخت گیرانه تر از قوانین شبکه خونتون باشن. این کار رو FirewallD با zone هاش انجام میده.# firewall-cmd --add-port=23/tcp --zone=public --permanentتوجه داشته باشید که اگه از سویچ permanent-- استفاده نکنید، قانون شما بر روی فایروال دایمی نمیشه.به شکل زیر هم می تونید یه پورت رو باز کنید. در اینجا ما پورت کاربردی ۲۲ رو به صورت دایمی باز کردیم.# firewall-cmd --add-port=22/tcp --permanentخود FirewallD این قابلیت رو هم به شما می ده که پورت ها رو بر اساس سرویس اضافه کنید (خودش پورت های لازم برای درست کار کردن سرویس ها مهم رو میدونه).# firewall-cmd --add-service=http --zone=public --permanentبعد از نوشتن یه قانون، برای اینکه در همون لحظه اعمال بشه باید دستور زیر رو بزنید.در غیر این صورت باید یک بار سیستم رو ریبوت کنید.# firewall-cmd --reloadبه شکل زیر می تونید تمام سرویس های این سیستم که یه پورتی باز دارن رو ببینید.#firewall-cmd --list-servicesبه شکل زیر می تونید یه سرویس رو از روی فایروال حذف کنید.توجه داشته باشید که شما فقط پورت هایی رو که فایروال برای این سرویس باز گزاشته رو می بندید.# firewall-cmd --remove-service=http --zone=public --permanentبه شکل زیر هم می تونید یه پورت باز رو ببندید (مثلا اینجا ما پورت ۲۳ رو که برای سرویس ftp هستش رو بستیم).#firewall-cmd - -remove-port=23/tcp - -zone=public - -permanentمثل هر تغییر دیگه، لازمه یه بار فایروال رو ریلود (reload) کنید که تغییرات در همین لحظه روی سیستم اعمال بشن.# firewall-cmd --reloadهمونطور که می بینید، دیگه پورت مربوط به سرویس http (۸۰) روی سیستم باز نیست.#firewall-cmd --list-servicesبه شکل زیر می تونید تمام اطلاعات مربوط به فایروال سیستم رو ببینید.# firewall-cmd --list-allکار با UFW:نام UFW مخفف Uncompiled Fire Wall هستش و مختص توزیع Ubuntu نیستش. این یه اشتباه بسیار رایجه که بعضی ها فکر می کنن این فایروال فقط برای سیستم های debianهه. این فایروال به عنوان یه رابط برای IpTables عمل می کنه و می شه خیلی کارا رو باهاش به سادگی انجام داد.برای شروع کار با فایروال UFW لازمه که اول روی سیستم نصبش کنید.# apt install ufwمثل هر سرویس دیگه، اول لازمه که فعالش کنید.#systemctl enable ufwبه شکل زیر باید استارتش کنید.# systemctl start ufwدر صورت نیاز، می تونید به شکل زیر وضعیت این سرویس رو ببینید.#systemctl status ufwیکی از کارهای مرسوم اینه که اول کل ترافیک ورودی سیستم رو باهاش ببندیم. به شکل زیر می تونید این کار رو انجام بدید.# ufw default deny incomingبا استفاده از دستور زیر می تونید ترافیک خروجی سیستم رو باز کنید.# ufw default allow outgoingبرای باز کردن پورت های لازم یه سرویس می تونید به شکل زیر عمل کنید.در اینجا ما پورت ۲۲ که مربوط به سرویس ssh هستش رو باز کردیم.#ufw allow sshاگر لازم باشه می تونید بدون توجه به سرویس خاصی یه پورت رو به صورت جدا روی سیستم باز کنید.# ufw allow 23برای اعمال قوانینی که وضع کردید لازمه که دستور زیر رو وارد کنید. به این صورت در همین لحظه قوانین روی سیستم اعمال می شن (توجه داشته باشید که از اونجایی که ما به این سرور ssh زدیم، به ما هشدار میده که ممکنه این ارتباز به خاطر قوانین فایروال قطع بشه).# ufw enableبه شکل زیر می تونید دسترسی به یه پورت رو برای یه آی پی و یا به رنج آی پی محدود کنید (از هر آی پی دیگه ای به این پورت درخواست بیاد رد میشه).# ufw allow from 192.168.1.0/24 to any port httpsبه شکل زیر می تونید تمام قوانین فایروال سیستم رو به صورت خطی ببینید.# ufw status numberedبه شکل زیر می تونید یک قانون خاص روی فایروال رو حذف کنید.# ufw delete 5همونطور که می بینید، دیگه پورت ۲۳ روی فایروال باز نیست.# ufw status numberedبرای ریست کردن فایروال می تونید از دستور زیر استفاده کنید# ufw reset</description>
                <category>علی کنگرانی</category>
                <author>علی کنگرانی</author>
                <pubDate>Tue, 29 Mar 2022 12:27:03 +0430</pubDate>
            </item>
                    <item>
                <title>ویرایشگر‌ها در لینوکس</title>
                <link>https://virgool.io/@xo4ever/%D9%88%DB%8C%D8%B1%D8%A7%DB%8C%D8%B4%DA%AF%D8%B1-%D9%87%D8%A7-%D8%AF%D8%B1-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-vzz7dmxonj3f</link>
                <description>کلن Editor چیست و به چه دردی می خورد؟همانطور که می دونید، در لینوکس به همه چیز به عنوان یک فایل نگاه می شه. شما می تونید به راحتی با استفاده از یک ویرایشگر تمامی فایل ها رو که شامل تنظیمات سیستم، فایل های کانفیگ سرویس ها، ماژول های کرنل و … میشن رو تغییر بدین. همچنین می تونید با تمامی ویرایشگر ها یک فایل جدید بسازید. یادمون نره که برای نوشتن تمامی برنامه ها (به هر زبانی) به یک ویرایشگر نیاز داریم.چنتا از Editorهای معروف:توضیح Nano: یکی از قدیمی ترین ویرایشگر های لینوکسی که طرفدارهای خودشو داره. اما با اومدن ابزارهای جدید،‌خیلی کمتر ازش استفاده میشه. تمام قابلیت هایی رو که از یه ویرایشگر معمولی میشه انتظار داشت رو داره و جالبه. این زیر می تونید یه تصویر کلی ازش رو ببینید.توضیح Sublime: ویرایشگر مناسب برنامه نویس ها،‌ باید چیزی بیشتر از قابلیت های پایه داشته باشه. مثل پلاگین های مختلف، قابلیت استفاده از api ها، کتابخونه ها و خیلی چیز های دیگه. این ابزار به خوبی می تونه نیاز های یک برنامه نویس رو بر آورده کنه اما این رو هم در نظر بگیرید که برای استفاده مداوم از این ابزار،لازمه که لایسنسش رو بخرید.توضیح Gedit: یک ابزار بسیار کار راه انداز که تو محیط گرافیکی میشه ازش استفاده کرد. یک نسخه بهتر از notepad ویندوز هستش و کار باهاش بسیار راحته.توضیح Vscode: می شه گفت بهترین ویرایشگر موجود در دنیا در حال حاضر این ابزار هستش. برای هر کاری و هر زبانی پلاگین داره، استفاده ازش برای همه رایگانه و متن باز هستش. بسیار قدرتمند، سریع و سبکه به طوری که می تونید به راحتی میلیون‌ها خط کد رو روش باز کنید و به راحتی ویرایش کنید.توضیح Emac: یکی از ابزار های قدیمی و قدرتمنده که طرفدارای سرسخت خودش رو داره اما امروزه گزینه های بهتری بجاش وجود داره که کار باهاشون خیلی ساده تر هستش.توضیح Vi/Vim: می شه گفت کمتر کسی هست که با لینوکس کار کرده باشه ولی از این ابزار استفاده نکرده باشه. سبک، کار راه انداز و قدرتمند. می شه گفت این ساده ترین حالتی هستش که می شه این ابزار رو توصیف کرد. تو این مقاله، در حد قابل قبولی کار باهاش رو یاد می گیریم.توضیح Vi/Vim در سیستم های لینوکسی :این ویرایشگر به طور پیش فرض روی تمامی توزیع های لینوکس وجود داره و میشه گفت بین تمامی توزیع های لینوکس،لازم به گفته که Vi محبوب ترین و پر کاربرد ترین ویرایشگر موجود هستش. کار با این ویرایشگر بسیار سادست و به راحت می شه باهاش ارتباط بر قرار کرد. اما نزارید سادگیش شما رو گول بزنه، این ابزار بسیار قدرتمنده و عملا کاری نیست که به عنوان یک ادمین لینکوکس ازش بخاین و نتونه انجام بده. ابزار Vim (Vi Improved) نسخه بهتر شده Vi هستش و یکم زرق و برق بیشتری وارد ماجرا کرده. شما با هر دو می تونید کار کنید و هیچ مشکلی پیش نخاهد اومد.شروع کار با Vi Editor:این ابزار در سه حالت کلی می تونه کار کنه:۱. دستور (Command): در این حالت پیش فرض هستش و در زمانی که یک فایل رو با استفاده از این ابزار باز می کنید در همین حالت قرار می گیرین. تو این حالت می تونید در فایل جابجا بشید، جست و جو کنید، از فایل خارج بشین و … توجه داشته باشید که کامند ها به بزرگی و کوچکی حروف حساس هستن.۲. ورودی (Insert): در این حالت شما می تونید متن جدیدی رو به فایل اضافه کنید. برای وارد شدن به این حالت لازم است که حرف i را وارد کنید.جابجایی:می تونید هم از چهار جهت کیبورد استفاده کنید و هم از حروف زیر:حرف j: یک خط میاد پایینحرفk: یک خط می ره بالاحرفl: یک حرف به چپحرفh: یک حرف به چپحرفw: یک کلمه به راستحرفb: یک کلمه به چپحرفe: میره آخر کلمه فعلی$: میره آخر خط^: میره اول خطبا وارد کردن دستور زیر می تونید شماره خط ها رو ببینید:وارد کردن :set nuحواستون باشه ‘:’ رو وارد کنیدحذف کردن:حرف X: یک حرف رو پاک می کنه (اگه به همراه یه عدد مثل 7xx واردش کنید، ۷ حرف پشت هم رو پاک می کنه)dd: یک خط رو پاک می کنه (اگه به همراه یه عدد مثل 7dd واردش کنید، ۷ خط پشت هم رو پاک می کنه)کپی کردن:ترکیب yw: کلمه فعلی رو کپی می کنهترکیب yy: خط فعلی رو کپی می کنه (اگه همراه یه عدد مثل 7yy واردش کنید، 7 بعدی رو کپی می کنه)حرف p: هرچی رو کپی کرده، بعد نشانگر پیست (paste) می کنهحرف P: هرچی رو کپی کرده، قبل نشانگر پیست (paste) می کنهدر زمان خروج:حرف e: زمانی که خراب کاری کرده باشین و بخاین فایل رو به حالت اولیه برگردونین می تونید از این دستور استفاده کنید.ترکیب wq: با این دستور، تمام کار هایی که کردین رو ی فایل نوشته می شه و بعد خارج میشهحرف q: با این دستور بدون انجام کار اضافه ای از فایل خارج میشه: با وارد کردن این دستور بدون توجه به هیچ چیزی از فایل خارج میشه (توجه داشته باشید که آخر هر دستوری ! بزارید،q!اون دستور رو به زور انجام میده و توجهی به تاثیراتش نداره)</description>
                <category>علی کنگرانی</category>
                <author>علی کنگرانی</author>
                <pubDate>Mon, 28 Mar 2022 18:25:53 +0430</pubDate>
            </item>
                    <item>
                <title>کلن دیسک :)</title>
                <link>https://virgool.io/@xo4ever/%DA%A9%D9%84%D9%86-%D8%AF%DB%8C%D8%B3%DA%A9-zu6fizlyg3bs</link>
                <description>دیسک چیست؟بخشی از سخت افزار کامپیوتر که می شه روش اطلاعات رو ذخیره کرد. استفاده از دیتایی که روی دیسک ذخیره می شه به سرعت دیتایی که روی مموری هستش نیست. اما اینو باید در نظر داشته باشیم که اطلاعاتی که روی دیسک هست تا زمانی که ما تصمیم بگیریم همونجا می مونن ولی مموری با هر بار ریبوت سیستم کل اطلاعاتش پاک می شه.مدل های مختلف دیسک:دیسک ها با توجه به نوع عملکرد به دو دسته تقسیم می شن:دیسک آهن ربایی:تو این مدل از دیسکا، با قطع و وصل کردن جریان مغناطیسی بین دو قطب دیسک، اطلاعات ذخیره می شه.کاربر می تونه بدون اینکه مشکلی پیش بیاد، هر چند بار که می خاد روی این دیسک ها بنویسه و پاک کنه.مثال: فلاپی (floppy disk)، هارد دیسک (Hard disks)تو عکس زیر یک نمای خیلی کلی از یک دیسک مغاطیسی چرخشی می بینیم.دیسک نوری:تو دیسک های نوری، با استفاده از یک لیزر، یک سری سوراخ های میکروسکپی روی دیسک ایجاد می شن‌ (در زمان نوشتن اطلاعات) و در زمان خوندن هم به دیسک نور تابیده میشه و تغییرات بازتاب (سوراخارو در نظر داشته باشین)محاسبه می شن و از این راه اطلاعات نوشته شده، خونده می شه.مثال: سی دی(cd) و دی وی دی(dvd)در تصاویر زیر می تونید سوراخ هایی که ایجاد می شوند رو ببینید (منظور از pit همون سوراخه)چجوری دیسک جدید به سیستم اضافه کنیم و ازش استفاده کنیم؟۱. اول از همه می بینیم که وضعیت دیسک های سیستم فعلی ما چقدره۲. اگه لازم دارید که فضای ذخیره سازی رو افزایش بدین باید تو این مرحله دیسک جدیدتون رو وصل کنید به سیستم. اگر اگر هم فضای بیشتری لازم ندارین، می تونید همین جا از خوندن این مقاله دست بکشین و به یه کار مفید تر مشغول بشین.۳. زمانی که دیسک جدید رو به سیستم وصل کردید، بررسی کنید که آیا سیستم شما دیسک رو شناخته یا نهاین کار با دستور زیر می تونه انجام بشه (اینجا ما یه دیسک ۵۷ گیگابایتی وصل کردیم):$ lsblk۴. با پیدا کردن آدرس دیسک جدیدتون، کار های پارتیشن بندیش رو شروع می کنیم (Disk Partitioning):دیسک ها همگی در دایرکتوری /dev/ هستن و اسم دیسک جدید رو هم از طریق کامند قبلی می تونیم ببینیم.$ fdisk /dev/vdbاینجا ما برای ایجاد یک پارتیشن جدید اول از همه حرف “n” رو وارد می کنیم.بعد برای مشخص کردن نوع پارتیشن می تونیم از “p” برای پارتیشن پرایمری (primary) و “e” برای پارتیشن اکستندد (extended) استفاده کنیم. شما بر روی هر سیستم فقط می تونید ۴ تا پارتیشن primary داشته باشین و یا ۳ تا primary و ۱ extended. حالا فرقشون، پارتیشن primary قابلیت بوت شدن دارد و میشه گفت تنها مزیتش نسبت به extended همینه. روی پارتیشن extended شما یک سری زیر پارتیشن های منطقی دارید logical که کار باهاشون خیلی راحت تر از پارتیشن primary هستش. اینکه پارتیشن منطقی یعنی چی رو می تونید در مقاله نحوه کار با LVM متوجه بشید.حالا انتخاب کنید که از چه سکتوری از دیسک این پارتیشن شروع بشه. با یک چیزی شبیه شکل زیر مواجه میشیدبعد باید انتخاب کنید که این پارتیشن در چه سکتوری تموم بشه. اینجا می تونید خیلی راحت حجم پارتیشن رو به کیلوبایت، مگابایت، گیگابایت و … مشخص کنید (مثل عکس زیر)در نهایت با وارد کردن “w”، همه ی تغییراتی که ما اعمال کردیم روی دسک نوشته می شه.۵. الان دیسک ما پارتیشن داره اما فایل سیستم نداره:به زبان ساده، وظیفه مدیریت اطلاعات بر روی دیسم با فایل سیستمه. اینجا ما از فایل سیستم ext4 استفاده می کنیم.$ mkfs.ext4  /dev/vdb1۶. یک دایرکتوری انتخاب (ایجاد) کنید که دیسک را به آن مونت کنیم:$ mkdir /mnt/NewDisk۷. با مونت کردن () این دیسک به دایرکتوری انتخاب شده، دیگه این دیسک جزیی از سیستم شما می شه:( این پایین می تونید پارتیشن ۴۰ گیگابایتی که ایجاد کردیمو ببینید)$ mount /dev/vdb1 /mnt/NewDisk۸. دیگه شما می تونید به راحتی از این فضا بر رو ی سیستم استفاده کنید:با دستور زیر یک فایل بر روی این دیسک می سازیم.$ touch newfile.txtاگه از محتویات این دایرکتوری هم یک لیست بگیریم می بینید که فایل ساخته شده و ما بهش دسترسی داریم.</description>
                <category>علی کنگرانی</category>
                <author>علی کنگرانی</author>
                <pubDate>Mon, 28 Mar 2022 18:14:02 +0430</pubDate>
            </item>
                    <item>
                <title>دستورات پایه‌ای ترمینال لینوکس</title>
                <link>https://virgool.io/@xo4ever/%D8%AF%D8%B3%D8%AA%D9%88%D8%B1%D8%A7%D8%AA-%D9%BE%D8%A7%DB%8C%D9%87-%D8%A7%DB%8C-%D8%AA%D8%B1%D9%85%DB%8C%D9%86%D8%A7%D9%84-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-y7psscrbqc15</link>
                <description>شروع کار با Linux CommandLine:می شه گفت ترسناک ترین محیط کامپیوتری همین CommandLine باشه، اما اینجا می بینیم که خیلی هم راحت می شه باهاش کار کرد و اونقدرها هم سخت نیست. برای انجام برخی کارها در توزیع های مختلف لینوکس لازمه کامند متفاوتی را برای انجام یک کار وارد کنیم. اما در این مقاله توزیع لینوکس شما مهم نیست.اولین چیزی که شما روی لینوکستون می بینید صفحه لاگین هستش:اینجا با وارد کردن نام کاربری و کلمه عبورتون می تونید وارد بشید.همیشه با استفاده از دستور whoami می تونید نام کاربریتونو ببینید.$ whoamiتوجه داشته باشید که در لینوکس، نام ابرکاربر root هستش و بالاترین سطح دسترسی رو داره. برای انجام کار هایی که نیاز به دسترسی ادمین (یا بهتره بگیم روت) دارن لازمه که با دستور زیر از کاربر روت استفاده کنید.معنی دستور زیر به زبان فارسی : کاربر فعلی را به root تغیر بدهمعنی دستور زیر به زبان انگلیسی : Switch User to root$ su rootشما می تونید هر چنتا کاربر که می خاین رو به شکل زیر بسازید برای این کار نیاز به دسترسی روت دارید.این جور مواقع بهتره بجای تغیر کاربر از دستور sudo استفاده کنید.دستور sudo در این جور مواقع بدون تغیر نام کاربری به شما به طور موقت اجازه استفاده از دسترسی روت رو میده.معنی دستور زیر به زبان فارسی  : ابرکاربر کاربر arvan رو ایجاد کنمعنی دستور زیر به زبان انگلیسی : SuperUserDo AddUser arvanایجاد یک کاربر بر روی سیستم:$ sudo useradd arvanحالا لازمه که برای این کاربر یک کلمه عبور مشخص کنید:$ sudo  passwd arvanبرای دیدین اطلاعات دیسک سیستم می تونید از دستور زیر استفاده کنیدمعنی دستور زیر به زبان فارسی : فضای دیسک رو مثل آدم نشون بدهمعنی دستور زیر به زبان انگلیسی : Disk Free Human Readable$ df -hبرای اینکه ببینید در چه دایرکتوری هستید می تونید از دستور زیر استفاده کنید:معنی دستور زیر به زبان فارسی : دایرکتوری فعلی من رو نشون بدهمعنی دستور زیر به زبان انگلیسی : Present Working Directory$ pwdبرای دیدن چیزایی که در دایرکتوری فعلی شما وجود دارند می تونید از دستور زیر استفاده کنید:معنی دستور زیر به زبان فارسی :هرچی در دایرکتوری / هست رو لیست کنمعنی دستور زیر به زبان انگلیسی : List Items In “/“ Directoryاگر به این دستور آدرسی ندهید آدرس فعلی شمارو به طور پیش فرض در نظر میگیره اما می تونید بدون تغیر دایرکتوری چیزایی که توی هر دایرکتوری هستن رو ببینید.$ ls -l /برای دیدن اطلاعات مموری سیستم می تونید از دستور زیر استفاده کنید:معنی دستور زیر به زبان فارسی: اطلاعات مموری رو به مثل آدم نشون بدهمعنی دستور زیر به زبان انگلیسی : Show Memory info Human Readable$ free -hبرای دیدن اطلاعات سخت افزاری پردازنده می تونید از دستور زیر استفاده کنید:معنی دستور زیر به زبان فارسی: اطلاعات پردازنده رو نشون بدهمعنی دستور زیر به زبان انگلیسی: List CPU Info$ lscpuبرای دیدن اطلاعات سخت افزاری مموری می تونید از دستور زیر استفاده کنید:معنی دستور زیر به زبان فارسی : اطلاعات مموری رو نشون بدهمعنی دستور زیر به زبان انگلیسی : List Memory Info$ lsmemبرای تغیر مکان می تونید از دستور زیر استفاده کنید:معنی دستور زیر به زبان فارسی : برو به دایرکتوری /home/معنی دستور زیر به زبان فارسی : Change Directory to /home/جلوی این دستور هر آدرسی که بنویسید (اگه وجود داشته باشه)، میره اونجا$ cd /home/برای ایجاد یک دایرکتوری جدید می تونید از دستور زیر استفاده کنید:معنی دستور زیر به زبان فارسی : دایرکتوری /home/debian/arvan رو بسازمعنی دستور زیر به زبان انگلیسی : MakeDirectory “/home/debian/arvan”$ mkdir /home/debian/arvanبرای پاک کردن هر چیزی می تونید از دستور زیر استفاده کنید:معنی دستور زیر به زبان فارسی : به طور پیوسته و به زور دایرکتوری رو پاک کنمعنی دستور زیر به زبان انگلیسی :Remove Directory Recursively with Forceتوجه داشته باشید که برای پاک کردن یک دایرکتوری بازم است با استفاده از سویتچ -r عمل پاک کردن را به صورت پیوسته انجام بدیم. بعضی جاها بعضی فایل ها راحت پاک نمی شن این جور مواقع لازمه با سویتچ -f به زور پاکشون کنیم.$ rm -rf /home/debian/salamبرای مشاهده تاریخچه کامندهایی که زده اید، می تونید از دستور زیر استفاده کنید:معنی دستور زیر به زبان فارسی : تاریخچه کامندارو نشون بدهمعنی دستور زیر به زبان انگلیسی : show my command history$ historyبرای مشاهده Hostname سیستم می تونید از دستور زیر استفاده کنید:معنی دستور زیر به زبان فارسی : نام هاست رو نشون بدهمعنی دستور زیر به زبان انگلیسی : show the hostname$ hostnameبرای مشاهده اطلاعات کرنل سیستم می تونید از دستور زیر استفاده کنید:معنی دستور زیر به زبان فارسی : نام کرنل این سیستم چیستمعنی دستور زیر به زبان انگلیسی : Unix Name (kernel name)$ uname -rیک سری نکته هست که خوبه توی لینوکس بهش توجه کنین:تقریبا تمام کامند ها یک سویتچ --help دارن که همه ی اطلاعات اون کامند رو نشون میده.همچنین بعد از تایپ کردن بخشی از کامند در صورت درست بودن دیکتش با زدن کلید tab بقیشو خود سیستم پر می کنه (اینجوری هم راحت تره و هم می تونی ببینی که داری درست تایپ می کنی یا نه)\</description>
                <category>علی کنگرانی</category>
                <author>علی کنگرانی</author>
                <pubDate>Mon, 28 Mar 2022 17:53:55 +0430</pubDate>
            </item>
                    <item>
                <title>نحوه بوت شدن یه سیستم لینوکسی</title>
                <link>https://virgool.io/@xo4ever/%D9%86%D8%AD%D9%88%D9%87-%D8%A8%D9%88%D8%AA-%D8%B4%D8%AF%D9%86-%DB%8C%D9%87-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3%DB%8C-zboulxuezsxg</link>
                <description>مراحل بالا اومدن یک سیستم لینوکسی:به عنوان ادمین یک سیستم لینوکسی، دونستن این موضوع می تونه دید خیلی خوبی به شما بده که می تونید ازش تو کار های مختلفی استفاده کنید. به طور کلی یک سیستم که داره از سیستم عامل لینوکس استفاده می کنه، از زمانی که دکمه روشن رو فشار بدین، تو ۶ مرحله بالا میاد که این زیر در موردشون حرف می زنیم.تو شکل زیر می تونید یک دید کلی از اتفاقاتی که می افته به دست بیارید.۱. برای روشن کردن هر سیستمی، اولین کاری که باید بکنیم اینه که دکمه پاور رو بزنیم. تو این مرحله به SMPS (Switched_Mode Power Supply) برق می رسه که کارش اینه که برق AC رو به DC تبدیل کنه. بعد از این کار، این قطعه برق DC رو به تمام قطعات سخت افزاری سیستم می رسونه. به محض رسیدن برق، پردازنده به کار می افته و اولین کاری که انجام میده اینه که BIOS رو فعال می کنه. BIOS تو این مرحله ۲ کار خیلی مهم انجام میده.۱. اجرای فرایند POST (Powe On Self Test): بایوس، یک لیست از تمام قطعاتی که در زمان بوت قبلی سیستم بهش وصل بودن رو داره. اینجا به هر کدوم یه پالس الکتریکی می فرسته که ببینه سر جاشون هستن یا نه. اگه قطعات یه سیگنال برگشت ارسال کنن، بایوس سلامتشون رو تایید می کنه. اگرم نفرستن اعلام می کنه که قطعه خرابه. اگرم یه قطعه جدید سیگنال برگردونه، سلامتش رو تایید می کنه و تو لیستش می نویسه که دفعه بعد که بوت می شه چکش کنه که سالم هست یا نه.۲. پیدا کردن اولین قطعه ای که می شه باهاش سیستم رو بوت کرد: در اینجا بایوس اولین قطعه‌ (دیسک) ای رو که می شه باهاش سیستم رو بوت کرد رو مشخص می کنه و کنترل رو به پردازنده بر می گردونه.۲. به محض اینکه پردازنده کنترل رو دست می گیره، سعی می کنه MBR (Master Boot Record) رو لود کنه. آدرس MBR میشه ۵۱۲ بایت اول دیسکی که قراره سیستم ازش بوت بشه. تو این بخش مشخصات Boot loader اصلی سیستم هستشبه همراه اطلاعات جدول پارتیشن ها (Partition Table) که مشخص می کنن که چه پارتیشنی از کجا شروع می شه و کجا تموم می شه و اینکه نوع پارتیشن چیه (primary یا extended). آخرین اطالعاتی که تو MBR هستش، یه شمارس که بهش می گن Magic Number. اگه یه موقع MBR از بین بره، از این شماره استفاده می کنن که برش گردونن (خوبه از این شماره بک آپ بگیریم).۳. تو بخش قبلی، پردازنده جای Boot loader رو پیدا کرد. اینجا خود Boot loader لود می شه روی مموری. بوت لودر سیستم، توی ۳۰ کیلوبایت اول دیسک (دقیقا بعد از MBR) هستش. Boot loader که میاد بالا، از کاربر سوال می کنه که با چه پارامترهایی سیستم رو بالا بیاره. ملموس ترین پارامتر اینه که کاربر می تونه انتخاب کنه که سیستم عامل با چه کرنلی بالا بیاد. اگه کاربر هیچ کاری تو این مرحله انجام نده، Boot loader بعد از یه مدتی کرنل پیش فرض رو روی مموری لود می کنه و کنترل سیستم رو می ده بهش.۴. کرنل که هسته سیستم عامله، تا زمان خاموش شدن سیستم روی مموری می مونه و کنترل همه چیز رو به عهده داره. اولین کاری که کرنل انجام میده، اجرا کردن برنامه init هستش.۵. برنامه init که مخفف Initialization هستش، اولین پروسه ای هستش که روی سیستم اجرا می شه. این برنامه در قالب یه اسکریپت در /etc/rc.d/rc.sysinit قرار داره که همه بخش های مختلف سیستم عامل رو بررسی می کنه. با توجه به Run level مشخص شده، init پروسه های لازم رو اجرا می کنه و سیستم رو به حالتی در میاره که بشه ازش استفاده کرد. برای هر Run level اسکریپت های مشخصی وجود داره که آدرسشون به شکل روبرو هستش، /etc/rc[0-6].d/ که از Run level صفر تا ۶ هستن. در آخر init اطلاعات موجود تو فایل /etc/inittab رو می خونه که یک جدول از دستوراتی هستن که سیستم باید در زمان شروع به کار اجراشون کنه.۶. تو این مرحله دیگه همه چیز آماده هستش و کرنل کنترل کامل سیستم رو داره. حالا کاربر می تونه وارد سیستم بشه و ازش استفاده کنه.</description>
                <category>علی کنگرانی</category>
                <author>علی کنگرانی</author>
                <pubDate>Mon, 28 Mar 2022 17:22:17 +0430</pubDate>
            </item>
                    <item>
                <title>Boot Manager In Linux</title>
                <link>https://virgool.io/@xo4ever/boot-manager-in-linux-wwjvhruubqmp</link>
                <description>توضیح اینکه Boot Manager چیه و به چه دردی می خوره  ؟توضیح Boot loader یا Boot Manager، یک تیکه کد هستش که در زمان روشن شدن سیستم، به سخت افزار کمک می کنه که سیستم عامل شما رو بالا بیاره. Boot Manager جای همه ی سیستم عامل هایی که روی سیستم شما وجود دارند رو می دونه و به شما این قابلیت رو می ده که انتخاب کنید که با کدوم یکی از اونها سیستم رو بالا بیاره.توضیح Boot loader تو لینوکس:بین تمام توزیع های لینوکس، سه Boot Manager معروف وجود داره که این زیر دربارشون حرف می زنیم:۱. توضیح Lilo: یک برنامه بسیار ساده و قدیمی که خیلی وقته دیگه هیچ کسی ازش استفاده نمی کنه. عکس زیر شاید یکم واسه کاربرای قدیمی نوستالژیک باشه. تنظیمات این برنامه رو می شد تو آدرس روبرو پیدا کرد etc/lilo.conf.۲ و ۳. Grub: پرکاربرد ترین Boot loader موجود برای سیستم های لینوکسی گراب هستش. کار باهاش بسیار سادس و تمام توقعاتی که ازش می ره رو برآورده می کنه. اول از همه Grub Legacy اومد، بعد از اون برای برطرف کردن یک سری ایراد هاش، Grub اومد که خوبی های خودشو داشت اما در حال حاضر بیشترین استفاده رو Grub 2 داره که در این مقاله در موردش حرف می زنیم.نحوه کار با Grub 2:تنظیمات اصلی گراب در فایل زیر هستش. توجه داشته باشید که به هیچ عنوان نباید این فایل رو به صورت دستی تغییر بدین. کمی جلوتر متوجه می شید که چجوری باید تنظیمات گراب رو تغییر داد.# vi /boot/grub/grub.cfgتو شکل زیر می تونید یک نمای کلی از محتوای این فایل رو ببینید.گراب زمانی که می خاد سیستم رو بالا بیاره از یک سری اسکریپت واسته انجام کارای مختلف استفاده می کنه.# ls -l /etc/grub.d/برای مثال اسکریپت زیر برای چک کردن قطعات سخت افزاری سیستم هستش.# vi /etc/grub.d/30_os-proberبرای تغییر دادن تنظیمات گراب از آدرس زیر باید استفاده کنید.# vi /etc/default/grubتو شکل زیر می تونید یک دید کلی به این فایل داشته باشید.با تغییر مقدار GRUB_TIMEOUT، می تونید زمانی که گراب موقع بوت شدن واسه کاربر صبر می کنه رو تغییر بدین.تو این بخش هر تغییری دوست داشته باشید رو می تونید وارد کنید. برای مثال می تونید عکسی رو که گراب در زمان بوت شدن بهتون نشون می ده رو تغییر بدین. برای این کار باید یک متغیر به اسم‌ “GRUB_BACKGROUND” ایجاد کنید و برای مقدار آدرس عکستون رو بدین.در این بخش خیلی کار ها می شه انجام داد که بررسیشون از هدف این مقاله خارجه.برای اینکه تغییراتی که وارد کردین روی گراب اعمال بشه و دفعه بعدی که سیستم بالا میاد ازشون استفاده کنه، باید دستور زیر رو بزنید. این دستور با توجه به فایلی که ما تغیر دادیم و خیلی چیز های دیگه فایل اصلی گراب رو که اول این بحث دیدیم رو ایجاد میکنه.# update-grubیه موضوعی که خوبه بدونید مفهوم Run level هستش.سیستم عامل لینوکس می تونه تو حالت های مختلف بالا بیاد که این زیر با هم بررسیشون می کنیم.توجه داشته باشید که شرایط لازم برای ایجاد هر کدوم از این حالت ها،‌ با استفاده از یک سری اسکریپت خاص به وجود میاد که همین زیر می تونید آدرس هر کدوم رو ببینید.توضیح Run level صفر: تو این حالت سیستم تمیز خاموش می شه‌ (یعنی پروسه های باز رو می بنده و بعد خاموش می شه).# cat /etc/rc0.dتوضیح Run level یک: این حات تک کاربره هستش یا همون rescue mode. این حالت واسه وقتیه که یه مشکلی جدی تو سیستم پیش اومده و بالا نمیاد.# cat /etc/rc1.dتوضیح Run level دو: این حالت با حالت پنج هیچ فرقی نداره و سیستم کامل به همرا تمامی پکیج ها و چند کاربره بالا میاد. توجه داشته باشید که در این حالت سیست مدر حالت گرافیکی بالا میاد.# cat /etc/rc2.dتوضیح Run level سه: در این حالت سیستم به طور کامل و چند کاربره بالا میاد اما فقط تو حالت ترمینالی و بدون رابط گرافیکی.# cat /etc/rc3.dتوضیح Run level چهار: خالی هستش و می تونید تنظیماتی که دوست دارید رو تو فایل زیر وارد کنید و Run level خاص خودتون رو داشته باشید.# cat /etc/rc4.dتوضیح Run level پنج: این حالت با حالت دو هیچ فرقی نداره و سیستم کامل به همرا تمامی پکیج ها و چند کاربره بالا میاد. توجه داشته باشید که در این حالت سیست مدر حالت گرافیکی بالا میاد.# cat /etc/rc5.dتوضیح Run level شش: تو این حالت سیستم به صورت خیلی تمیز، ریبوت می شه.# cat /etc/rc6.dبرای تغییر تو یکی از این فایل ا می تونید به شکل زیر عمل کنید.# vi /etc/rc3.dتو شکل زیر می تونید یه تصویر کلی از محتوای این فایل رو ببینید.برای دیدن Run level فعلی سیستم می تونید از دستور زیر استفاده کنید.# runlevelبرای تغییر Run level سیستم می تونید به روش زیر عمل کنید.نکته در شکل زیر می بینید که هم Run level فعلی سیستم رو در سمت راست نشون می ده و هم Run level قبلی رو (سمت چپ).# telinit 3</description>
                <category>علی کنگرانی</category>
                <author>علی کنگرانی</author>
                <pubDate>Mon, 28 Mar 2022 17:18:26 +0430</pubDate>
            </item>
                    <item>
                <title>آرشیو کردن در لینوکس</title>
                <link>https://virgool.io/@xo4ever/%D8%A2%D8%B1%D8%B4%DB%8C%D9%88-%DA%A9%D8%B1%D8%AF%D9%86-%D8%AF%D8%B1-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-f4eayitedkzv</link>
                <description>آرشیو کردن یعنی چی و به چه دردی می خوره؟خیلی وقت ها پیش میاد که شما لازم دارید که تعداد زیادی از فایل ها رو یک جایی ذخیره کنید (برای نگهداری در طولانی مدت) یا حتی ممکنه لازم باشه که فایل هاتون رو از جایی به جای دیگری منتقل کنید. در این جود مواقع، حرفه ای ترین راه اینه که شما یک آرشیو از این فایل ها ایجاد کنید و بعد کار باهاش رو شروع کنید. دلیلش اینه که تو این حالت مدیریت فایل ها بسیار ساده تر می شه و فایلی جا نمی مونه. همچنین دسته بندی و نگهداریشون هم خیلی مرتب تر می شه. در نظر داشته باشید که همین دایرکتوری ها و فولدر هایی که ما روی سیستم هامون داریم در واقع یک آرشیو هستش که سیستم ما ایجاد مرده برای مدیریت بهتر اطلاعات.توجه داشته باشید که فشرده سازی با آرشیو کردن فرق می کنه. شما می تونید تعدادی فایل رو آرشیو کنید ولی تغییری در سایز اونها ایحجاد نکنید. اما در زمان فشرده سازی، با بهینه کردن ساختار اطلاعات، حجم اونها رو پایین میاریم.الگوریتم های فشرده سازی مختلف:توضیح الگوریتم Lossy: در این نوع از فشرده سازی، برای پایین آوردن حجم فایل بخشی از اطلاعات حذف می شه. از این نوع الگوریتم ها بیشتر در فایل های صوتی و تصویری استفاده می شه. Mp3. یکی از بهترین نمونه ها برای ای نوع از الگوریتم هاست.توضیح الگوریتم Lossless: این نوع از الگوریتم ها هیچ بخشی از اطلاعات رو حذف نمی کنن و فقط با یک سری تکنیک هایی که در هر کدوم متفاوته، اطلاعات رو بهینه می کنن. PNG یک مثال خوب برای این گونه از الگوریتم هاست.ابزار های مختلف برای فشرده سازی:توضیح zip: اگه لازمه فایلی که ایجاد می کنید تو سیستم های ویندوزی استفاده بشه، این ابزار بهترین گزینه برای شماستتوضیح gzip: اگه فایل قرار روی سیستم های یونیکسی/لینوکسی استفاده بشه، این ابزار گزینه خوبی هستش. تقریبا تو همه ی توزیع های لینوکس می شه از این ابزار استفاده کرد اما یکم کار باهاش زمان بره (نسبت به بقه ابزار ها)توضیح bzip2: مثل gzip هستش اما از یک الگوریتم دیگه استفاده می کنه که ممکنه حجم فایل نهایی کمتر بشه اما یکم زمان بیشتری می بره.توضیح xz: می شه گفت بهترین فشرده سازی رو انجام می ده اما زمان بیشتری می بره. همچنین این ابزار نسبتا جدیدی محسوب می شه و ممکنه روی تمام نسخه های لینوکس موجود نباشه.توضیح tar: این ابزار بیشتر برای آرشیو کردن استفاده می شه و نه برای فشرده سازی لازمه بگیم که می شه فشرده سازی هم انجام داد.نحوه کار با ابزار های فشرده سازی:سویچ های زیادی برای هر کدام از ابزارهای زیر وجود دارد که شما می تونید با وارد کردن سویچ -h تمامی آنها را ببینید.برای شروع کار با ابزار zip به شکل زیر،‌اول لازمه که روی سیستم نصبش کنید.‍‍‍‍‍‍‍‍‍$ apt-get install zip unzipدر شکل زیر می تونید ببینید که ما برای تست از دو عکس استفاده کردیم که به نسبت حجم بالایی دارن.(در آخر این مقاله می تونید لینک دانلود این عکس ها و خود عکس ها رو ببینید).$ ls -lhشما می تونید به شکل زیر یک فایل زیپ با نام دلخواهتون ایجاد کنید.$ zip Paris.zip Paris-1652.jpgبه شکل زیر یم تونید بدون اینکه فایل رو از حالت فشرده خارج کنید، لیست محتواش رو ببینید.$ unzip -l paris.zipشما می تونید با استفاده از دستور زیر، فایلتون رو از حالت فشرده خارج کنید.$ unzip paris.zipابزار gzip به طور معمول، روی تمامی توزیع های لینوکس نصب هست. اگر هم نبود می تونید به راحتی نصبش کنید.برای فشرده سازی یک فایل با استفاده از این ابزار، می تونید به شکل زیر عمل کنید.وارد کردین سویچ -k الزامی نیست و تنها به این معنا می باشد که فایل اصلی رو بعد از فشرده سازی حذف نکنه و رو یسیستم نگه داره.$ gzip -k Persia-1701.jpgدر شکل زیر می تونید نسخه فشرده شده از این عکس رو مشاهده کنید که پسوند .gz داره.$ ls -lhبرای اینکه نهایت زور رو در فشرده سازی به کار ببریم می تونید از ۱ تا ۹ یک عددی رو به این ابزار بدین. (هر چی عدد بزرگتری وارد کند،‌ ابزار زور بیشتری برای فشرده سازی می زند). همچنین شما می توندی به شکل زیر ۲ فایل رو به صورت هم زمان فشرده کنید.$ gzip -9 Persia-1701.jpg paris-1652.jpgدر تصویر زیر می تونید ببینید که هر دو فایل به صورت مجزا فشرده شدن (به حجمشون توجه کنید).$ ls -lhبه شکل زیر می تونید هر دو فایل رو به صورت یک جا فشرده کنید و در یک فایل قرار بدین.$ gzip -c pparis-1652.jpg Persia-1701.jpg &gt; photos.gzدر اینجا ما دو فایل اول رو حذف می کنیم و شما می تونید هر دو فایل رو در قالب یک فایل روی سیستمتون داشته باشید.$ ls -lh\برای اینکه یک فایل رو از حالت فشرده خارج کنید می تونید به شکل زیر عمل کنید.$ ls -lh$ gzip -d Persia-1701.jpg.gz$ ls -lhبرای استفاده از ابزار bzip2، می تونید به شکل زیر روی سیستمتون نصبش کنید.(روی بعضی از توزیع ها جدید، پیش فرض نصب هستش)$ apt-get install bzip2برای فشرده سازی فایل ها با حداکثر توان می تونید از دستور زیر استفاده کنید (توجه داشته باشید که سویچ -k) اختیاری هستش و برای نگهداری فایل های اولیه استفاده می شه).$bzip2 -k9 pparis-1652.jpg Persia-1701.jpg
$ ls -lhبرای اینکه فایل ها رو از حالت فشرده خارج کنید می تونید از دستور زیر استفاده کنید$ bzip2 -d Persia-1701.jpg.bz2 pparis-1652.jpg.bz2
$ ls -lhبرای استفاده از ابزار xz می تونید به صورت زیر، روی سیستمتون نصبش کنید.$ apt-get install xz-utils$ rm -rf pparis-1652.jpg Persia-1701.jpg
$ ls -lhm$ xz -z pparis-1652.jpg Persia-1701.jpgدر شکل زیر می تونید ببینید که فایل ها با پسوند xz روی سیستم فشرده شدن.$ ls -lhبرای اینکه فایل ها رو از حالت فشرده خارج کنید، می تونید از دستور زیر استفاده کنید.$ xz -d Persia-1701.jpg.xz pparis-1652.jpg.xz
$ ls -lhابزار tar بر روی تمامی توزیع های لینوکس به صورت پیش فرض نصب هستش.شما می تونید با استفاده از این ابزار هر فایل و یا حتی دایرکتوری که دوست دارید رو آرشیو کنید. در شکل زیر می بینید که ما یک دایرکتوری Test داریم که داخلش عکس هامون هستش.$ lsبا استفاده از دستور زیر می تونید یک فایل آرشیو با اسم دلخاهتون درست کنید.$ tar -cvf photos.tar /home/debian/Testدر شکل زیر می بینید که فایل آرشیو در کنار دایرکتوری اولیه ایجاد شده.$ lsبرای انجام تست، ما در اینجا دایرکتوری اولیه رو پاک می کنیم.$ rm -rf Test/
$ lsبه شکل زیر می تونید فایل آرشیو رو روی سیستمتون باز کنید و ازش استفاده کنید.$ tar -xvf photos.tarتوجه داشته باشید که بعد از باز کردن این فایل، دایرکتوری اولیه رو با آدرس کاملش در اختیار ما قرار داده.$ cd home/debian/Test
$ pwنقشه ایران سال ۱۷۰۱نقشه پاریس سال ۱۶۵۲</description>
                <category>علی کنگرانی</category>
                <author>علی کنگرانی</author>
                <pubDate>Mon, 28 Mar 2022 15:14:38 +0430</pubDate>
            </item>
            </channel>
</rss>