<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های آرش حقیقت</title>
        <link>https://virgool.io/feed/@Linja</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-16 19:12:56</pubDate>
        <image>
            <url>https://static.virgool.io/images/default-avatar.jpg</url>
            <title>آرش حقیقت</title>
            <link>https://virgool.io/@Linja</link>
        </image>

                    <item>
                <title>مهاجرت سرویس DNS از ویندوز</title>
                <link>https://virgool.io/@Linja/%D9%85%D9%87%D8%A7%D8%AC%D8%B1%D8%AA-%D8%B3%D8%B1%D9%88%DB%8C%D8%B3-dns-%D8%A7%D8%B2-%D9%88%DB%8C%D9%86%D8%AF%D9%88%D8%B2-f4snpymlacfa</link>
                <description>اخیرا توی شرکت ازم خواستند که یه سری سرویس که سال‌های زیادی روی یک ویندوز سرور داشتن کار می‌کردن، منتقل کنم به لینوکس.طبیعتا من از نگاه کردن به ویندوز خودداری می‌کنم و شنیدن اسمش هم باعث میشه کهیر بزنم اما… خلاص شدن از شر یه سرور ویندوزی همیشه عالیه (;روی این سرور یک سری وبسایت داشتیم که نیاز به DNS و دیتابیس و وب‌سرور داره.تصمیم گرفتم بعد از کپی کردن فایل‌ها و بکاپ دیتابیس‌ها سرویس DNS رو (نمی‌دونم چرا قبلا تصمیم گرفته بودن Self Host کنن اونم روی ویندوز؟!!) به سرور جدید لینوکسی منتقل کنم. اینجا بود که به دلیل نداشتن اطلاعات کافی، گوگل کردم. یک سری لینک پیدا کردم که هیچ کدوم درست توضیح نداده بودن باید چکار کرد.یکم دیگه گشتم و دیدم میشه zoneها رو با دستور زیر اکسپورت کرد توی فایل تکست:dnscmd DNSSERVERNAME /ZoneExport domain.com dns.txtاین دستور باعث میشه زون DNS شما توی فایل dns.txt و داخل دایرکتوریC:\Windows\System32\dns  ذخیره بشه.تا اینجا اوضاع زیاد بد به نظر نمیاد اما وقتی متوجه میشید تعداد دامنه‌ها بیشتر از ۱۰ تا هست باید به فکر بی‌افتید برای نوشتن batch script یا اتوماتیک کردن کار.خوشبختانه وقتی اولین دامنه رو اکسپورت کردم و به اون آدرس کذایی رفتم تا ببینم چی ذخیره شده، ۲ مورد خوشحال کننده دیدم (:۱. تمام زون‌ها خودشون یه فایل هستن تو این آدرس و در واقع نیازی نیست شما دونه دونه اونها رو اکسپورت کنید.۲. این فایل‌ها فرمت مشابه فایل‌های bind رو دارن که باعث شد امیدوار بشم توی لینوکس بدون نیاز به تغییر کار می‌کنن.خوشحال از کشف این دو مورد، رفتم تا مورد دوم رو امتحان کنم.اول bind رو نصب کردم و سعی کردم دستی یکی از دامنه‌ها رو با همون فایل اکسپورت شده از ویندوز، کانفیگ کنم و دیدم کار می‌کنه.با خوشحالی از این که کارم به کمتر از نصف رسیده، رفتم تا کل دامنه‌ها را که بیشتر از ۸۰ تا بود، به ماشین لینوکسی جدید منتقل کنم.تا این مرحله من یک بخش از کانفیگ bind که در واقع کانفیگوریشن زون‌ها هست رو دارم. مساله فعلی اینه که باید خود زون‌ها توی بایند تعریف بشن و به دلیل تعداد زیادشون و این که همیشه یه سیس‌ادمین کار‌ها رو اتوماتیک (اسکریپت) می‌کنه، رفتم تا اسکریپت بنویسم که کانفیگ‌های مورد نظر، اتوماتیک ساخته بشن.خوشبختانه، تمام فایل‌های زون که از ویندوز کپی کرده بودم، اسمی با فرمت domain.tld.dns داشتند که خیلی کمک کرد.توی بایند بخشی که مربوط به تعریف زون‌ها هست کانفیگ مشابه زیر داره:zone &quot;example.com&quot; {
    type master;
    file &quot;/etc/bind/zones/example.com&quot;; # zone file path
};بخش‌هایی از این کانفیگ که تغییر می‌کنه، مربوط به اسم دامنه هست که بخشی از اسم فایل‌های زون هم هست پس با اسکریپت bash زیر، این کانفیگ رو ساختم.for domain in *
do cat &lt;&lt;EOF
zone &quot;${domain::-4}&quot; {
    type master;
    file &quot;/etc/bind/zones/$domain;
};

EOF
doneاگر این اسکریپت رو توی دایکتوری که فایل‌های زون وجود داره، اجرا کنید، با اسم فایل‌ها که.dns از آخر اون‌ها حذف شده، سینتکس تعریف دامنه برای بایند رو می‌سازه. حالا که مطمعن شدیم درست کار می‌کنه، میشه خیلی ساده، خروجی‌اش را به /etc/bind/named.conf.local  کپی کنیم یا با &lt;&lt;  به آخر همون فایل ریدایرکت کنیم.حالا تنها کاری که نیاز هست انجام بدیم اینه که زون فایل‌ها رو توی دایرکتوری /etc/bind/zones/ کپی کنیم و سرویس bind رو ری‌استارت کنیم.برای این که مطمعن بشیم درست کار می‌کنه، می‌تونیم از dig با فرمت زیر استفاده کنیم:dig linja.ir @DNSipAddressو بعد از @ آدرس IP سرور خودتون رو جایگزین کنید تا IP دامنه را از سرور شما بپرسه.خیلی طبیعیه که اگر ۵ دامنه رندوم را از سرور جدید بپرسید و جواب درست بگیرید، نشون میده کار درست انجام شده و مشکلی وجود نداره اما برای اطمینان بیشتر می‌تونید با یک حلقه for شبیه مثال بالا که کمک کرد کانفیگ بایند را بسازیم، تمام دامنه‌ها را امتحان کنید تا اطمینان پیدا کنید.چون این مطلب با فرض بلد بودن بایند توسط شما نوشته شده، پس می‌تونید در صورت نیاز troubleshoot کنید و مشکل احتمالی را برطرف کنید (:</description>
                <category>آرش حقیقت</category>
                <author>آرش حقیقت</author>
                <pubDate>Sun, 02 Apr 2017 22:05:33 +0430</pubDate>
            </item>
                    <item>
                <title>سطح دسترسی (پرمیشن) در لینوکس؟</title>
                <link>https://virgool.io/@Linja/%D8%B3%D8%B7%D8%AD-%D8%AF%D8%B3%D8%AA%D8%B1%D8%B3%DB%8C-%D9%BE%D8%B1%D9%85%DB%8C%D8%B4%D9%86-%D8%AF%D8%B1-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-h7k3lmzxfb7r</link>
                <description>امیدوارم شما قبل از خوندن این پست پرمیشن توی لینوکس رو بلد باشین و ازش استفاده کرده باشین. اگر بلد نیستین اصلا نگران نباشین چون الان می‌خوام خیلی ساده توضیح بدم تا یاد بگیرین یا مرور کنین (:اول یک فایل می‌سازم و نشون میدم که چطور میشه سطح دسترسی یا همون پرمیشن مربوط بهش رو ببینیم.من با touch test  یک فایل جدید می‌سازم و با دستور ls -l  می‌خوام لیست مشخصات فایل رو بهم نشون بده:arash@FunLife:~&gt; ls -l test
-rw-r--r-- 1 arash users 0 Dec 24 00:55 testهمون‌طور که می‌بینید در ابتدای خط نوشته -rw-r–r– ، که داره دسترسی فایل رو نشون میده.خب بهتره اول به قطعات کوچک‌تر بشکنیم‌اش تا راحت‌تر متوجه بشیم اون علایم و حروف دقیقا چی هستن.شاید بهتر باشه این‌طوری ببینیدش که از چپ به راست اول یک – هست که می‌تونه هر کدوم از کاراکتر‌های -، d، l، s، t، یا _ باشه که چون پرمیشن‌های پیشرفته محسوب میشن، اینجا توضیح نمیدم و صرفا بدونید اگر –  بود یعنی فایل معمولی هست، اگر d  دیدید، شما با یک دایرکتوری سر و کار دارید و اگر l  بود، فایل یا دایرکتوری دارید که یک symbolic link هست.غیر از اون فقط ۹ کاراکتر دیگه باقی می‌مونه که ۳ دسته ۳تایی هستن و خوشبختانه دارای ترتیب و معنی مشخص (: پس یکی از دسته‌ها رو توضیح میدم و بعد میگم ۲ تای دیگه چی رو نشون میدن.هر دسته ۳ کاراکتر داره که یا یک حرف هستن یا یک –  که نشون دهنده فعال بودن اون دسترسی هستن.اگر همه دسترسی‌ها وجود داشته باشه، این‌طوری دیده میشه: rwx  که نشان‌دهنده read، write و execute هستن.حالا برای هر دسته همون تکرار میشه و چون گفتم ۳ دسته داریم، هر کدوم از چپ به راست نشون‌دهنده دسترسی‌های بالا برای user، group و other هستن که فکر می‌کنم اگر یکم آشنایی داشته باشین، نیازی به توضیح نداره.حالا که یک یادآوری سریع داشتیم بریم سر اصل مطلب و توضیح بدیم چطور باید با پرمیشن‌های عددی مثل ۶۴۴، ۵۶۶ و ۷۷۷ که از معروف‌ها هستن.کافیه بدونید که پرمیشن rwx  به ترتیب برابر اعداد ۴۲۱ هست که کافبه اون‌ها رو جمع بزنید تا به مجموع ۷ که بالاترین صطح دسترسی هست برسید یعنی خواندن، نوشتن و اجرا کردن به صورت هم‌زمان که چون ۳ دسته داشتیم می‌تونه به شکل ۷۷۷ یا هر مجموعی از اعداد ۴، ۲ و ۱ باشه.اگر براتون عجیبه که این اعداد از کجا میان کافیه بهتون بگم که دسترسی rwx ، سه بیت در کنار هم هستن که صفر و یک میشن تا نشون بدن چه دسترسی‌هایی موجوده و برابر ارزش اونها در باینری وقتی تبدیل به دسیمال میشن تبدیل به اعداد ۱، ۲ و ۴ میشن (:در آخر انگلیس‌ها گفتن:“A picture is worth a thousand words“در آخر باید بگم اگر با تمام این توضیحات به هر دلیل نمی‌خواهید از اعداد استفاده کنید، راه‌های دیگری مثل chmod uo+rx test  که داره میگه دسترسی خواندن و اجرا شدن را به user و other بده یا chmod uo-rx test  که دقیقا برعکس قبلی هست هم وجود داره (:_____________________________
&lt; *nix permissions made easy! &gt;
 -----------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||</description>
                <category>آرش حقیقت</category>
                <author>آرش حقیقت</author>
                <pubDate>Sat, 07 Jan 2017 00:52:19 +0330</pubDate>
            </item>
                    <item>
                <title>اضافه کردن فضای Swap به سرور‌های لینوکس</title>
                <link>https://virgool.io/@Linja/%D8%A7%D8%B6%D8%A7%D9%81%D9%87-%DA%A9%D8%B1%D8%AF%D9%86-%D9%81%D8%B6%D8%A7%DB%8C-swap-%D8%A8%D9%87-%D8%B3%D8%B1%D9%88%D8%B1%D9%87%D8%A7%DB%8C-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-gbcuq2cy7dbc</link>
                <description>شاید با خودتون فکر کنید: چرا ممکنه بخوام swap را بعد از نصب لینوکس اضافه کنم؟مگه همیشه موقع نصب، فضای مناسب را در نظر نمی‌گیرم؟در پاسخ باید بگم که بعضی وقتا ممکنه فراموش کنیم یا گاهی اوقات وقتی از یک ارایه دهنده خدمات مثل دیجیتال‌اوشن VPS می‌خریم، می‌بینیم که فضای swap در نظر نگرفتن.اصلا swap چیه و چرا به swap احتیاج داریم؟فضای swap در تعریف خودمونی جایی هست که هر وقت ram پر میشه و قابل استفاده نیست، سیستم‌عامل از این فضا استفاده می‌کنه تا بتونه به کار خودش ادامه بده، در غیر این صورت ممکنه crash کنه و این برای یه سرور لینوکسی فاجعه هست. این مکانیزم توی سیستم‌عامل‌های Unix Like با نام swap شناخته میشه و توی ویندوز با نام Page File.به جز مورد بالا، سیستم‌عامل در صورتی که برنامه‌ای برای مدت طولانی در حال اجرا باشه ولی از حافظه ram استفاده نکنه، برای افزایش سرعت و فراهم کردن منابع برای دیگر برنامه‌ها، حافظه مربوط به اون برنامه را به swap انتقال میده پس در صورتی که بخواید سرورتون بار زیاد تحمل کنه و روشن بمونه وجود swap نقش حیاتی داره.چطور swap بسازیم؟اگر نیاز دارید swap بسازید یا فضای swap برای سرور فعلی، مناسب نیست و به فضای بیشتری احتیاج دارید، دو راه وجود داره:۱. فایل swap: این فایل می‌تونه روی هر مسیر از سرور شما باشه مثلا روی یک فلش که به سیستم متصل می‌کنید یا هر جای هارد.این فایل را معمولا با fallocate  یا dd  می‌سازیم.۲. پارتیشن swap: پارتیشنی هست که روی سرور شما مانت شده یا از کل پارتیشن موجود روی فلش شما مثل dev/sdb1/ استفاده می‌کنیم.فایل swapابتدا نیاز داریم فایلی بسازیم که داخلش مقادیر ۰ وجود داشته باشه یا به عبارتی فایل خالی با حجم مورد نیاز مثلا ۱ گیگابایت.dd if=/dev/zero of=/swap bs=1G count=1یا با کمک fallocatefallocate -l 1G /swapحالا Permission فایل ساخته شده را به ۶۰۰ تغییر میدیم که اجازه دسترسی را ازبقیه یوزر‌ها بگیریم.chmod 600 /swapفایل آماده شده و می‌تونیم به فضای swap تبدیلش کنیم.mkswap /swapو فعالش می‌کنیمswapon /swapحالا نیاز داریم که فایل رو به صورت همیشگی به سیستم‌عامل اضافه کنیم تا بعد از ریبوت شدن هم فعال بمونه.برای این کار خط زیر رو به فایل etc/fstab/  اضافه می‌کنیم./swap none swap sw 0 0حالا با free -h  یا htop  می‌تونیم ببینیم که swap به سرور اضافه شده.پارتیشن swapاگر یک استوریج (به هر شکلی مثل فلش یا هارد یا…) به سرورتون اضافه کردین و می‌خواهید از اون استوریج به عنوان swap استفاده کنید، اول باید با دستور fdisk -l  اسم دیوایس را پیدا کنید، مطمعن بشید که اسم درست را انتخاب کردین چون قراره تمام اطلاعات روی این دیوایس از بین بره.اول نیاز دارید که یک پارتیشن بسازید.— در صورتی که پارتیشن قبلا ساخته شده، می‌تونید به مرحله بعد بریدمثلا در صورتی که device name مورد نظر شما dev/sdb1/  هست می‌تونید پارتیشن را با سایز مورد نظر به وسیله parted  یا fdisk  بسازید.حالا که پارتیشن ساخته شد، مثل مرحله قبل ادامه می‌دیم:mkswap /dev/sdbXX تو این مرحله شماره پارتیشنی هست که روی بلاک دیوایس دوم (sdb) ساختید یا از قبل وجود داشته.swapon /dev/sdb1حالا که swap ساخته و روشن شد، با اضافه کردنش به فایل etc/fstab/  به صورت پایدار در میاریم که بعد از ریبوت شدن کارایی داشته باشه./dev/sdb1 swap swap defaults 0 0</description>
                <category>آرش حقیقت</category>
                <author>آرش حقیقت</author>
                <pubDate>Tue, 13 Sep 2016 01:10:36 +0430</pubDate>
            </item>
            </channel>
</rss>