راهنمای سرور لینوکس: نصب و پیکربندی

راهنمای سرور لینوکس: نصب و پیکربندی
به گزارش اپست به نقل از phoenixnap ، راهاندازی یک سرور لینوکس با انتخاب و نصب یک توزیع مانند اوبونتو، دبیان، فدورا یا آرچ لینوکس آغاز میشود. سپس، باید بستههای نرمافزاری مورد نیاز را نصب کنید، حسابهای کاربری ایجاد نمایید، قوانین فایروال را پیکربندی کنید و سرویسها را بر اساس نقش سرور راهاندازی کنید.
در این راهنما، نحوه نصب و پیکربندی یک سرور لینوکس امن، پایدار و مقیاسپذیر را برای مورد استفاده خاص خود بیاموزید.
چرا سرور لینوکس را انتخاب کنیم؟
لینوکس طیف گستردهای از نقشهای سرور را پشتیبانی میکند، از جمله:
- سرورهای وب (Web servers)
- سرورهای پایگاه داده (Database servers)
- سرورهای DNS
- سرورهای فایل (File servers)
- سرورهای مدیریت کانتینر (Container orchestration servers)
اکثر قریب به اتفاق سرورهای عمومی در سراسر جهان، به ویژه در میزبانی وب، رایانش ابری و محیطهای سازمانی، بر روی لینوکس اجرا میشوند. سرورهای لینوکس محبوب هستند زیرا:
- رایگان و متنباز: اکثر توزیعهای لینوکس برای دانلود، نصب و بهروزرسانی رایگان هستند. لینوکس همچنین متنباز است، به این معنی که کد منبع آن به صورت عمومی در دسترس است و میتوان آن را بدون هزینه یا محدودیت مجوز، تغییر داده و توزیع مجدد کرد.
- سبک: لینوکس میتواند با حداقل میزان مصرف CPU، حافظه و دیسک کار کند. کاربرانی که منابع سختافزاری محدودی دارند، میتوانند سیستمهای کارآمدی را بدون فرآیندهای پسزمینه غیرضروری راهاندازی کنند.
- سازگار با طیف وسیعی از سختافزار: لینوکس از پلتفرمهای سختافزاری مختلف، از سیستمهای قدیمی گرفته تا سرورهای مدرن و ماشینهای مجازی پشتیبانی میکند. به لطف این تطبیقپذیری، اغلب اولین انتخاب برای استقرار در مراکز داده و محیطهای ابری ترکیبی است.
- پایدار و قابل اعتماد: لینوکس یک سیستم قابل اعتماد است که میتواند برای مدت طولانی بدون نیاز به راهاندازی مجدد کار کند. این ویژگی آن را برای سیستمهایی که نیاز به دسترسی بالا دارند، مانند سرورهای وب، پایگاههای داده و سرویسهای زیرساختی، ایدهآل میکند.
- قابل سفارشیسازی: شما میتوانید یک سیستم لینوکس را برای نیازهای خاص سرور خود تغییر دهید و تنها اجزا و سرویسهای ضروری را نصب کنید. این کار منجر به عملکرد بهتر، سربار کمتر و سطح حمله کوچکتر میشود.
- امن: لینوکس از اصل حداقل دسترسی پیروی میکند؛ دارای مدلهای داخلی مجوز فایل است و از سیستمهای کنترل دسترسی اجباری مانند SELinux و AppArmor پشتیبانی میکند. همچنین از مزایای یک جامعه توسعهدهنده فعال بهره میبرد که بهروزرسانیها و پچهای امنیتی مکرر را ارائه میدهد.
لینوکس چیست؟
لینوکس هم یک کرنل (هسته) است و هم یک اکوسیستم نرمافزاری گسترده. کرنل لینوکس یک جزء اصلی است که مستقیماً با سختافزار زیرین در ارتباط بوده و فرآیندهای سیستمی را مدیریت میکند. یک سیستم عامل مبتنی بر لینوکس، که توزیع (distribution یا distro) نامیده میشود، کرنل را با اجزای اضافی مانند کتابخانههای نرمافزاری، ابزارهای خط فرمان و مدیران بسته ترکیب میکند تا یک محیط کامل را تشکیل دهد.
توزیعهای لینوکس از محیطهای خط فرمان (CLI) و رابطهای کاربری گرافیکی (GUI) پشتیبانی میکنند که به کاربران امکان تعامل با سیستم را میدهد. این توزیعها همه چیز را از وبسرورها و مراکز داده گرفته تا تلفنها، دستگاههای اینترنت اشیا (IoT) و دسکتاپها را قدرت میبخشند.
مبانی سرور لینوکس
سیستم لینوکس بسیار چندکاره است، که دلیل اصلی پذیرش گسترده آن است. بخش زیر یک نمای کلی از اجزای اصلی تشکیلدهنده یک سرور لینوکس را ارائه میدهد.

اجزای سرور لینوکس
در محیطهای سرور، علاوه بر سختافزار و کرنل، یک توزیع لینوکس معمولاً شامل مجموعهای حداقلی از اجزای فضای کاربری (user-space components) مانند شلها (shells)، دیمونها (daemons)، کتابخانهها (libraries) و ابزارهای سیستمی (system utilities) است.
هر سرویس یا برنامه در حال اجرا به عنوان یک فرایند ایزوله با حافظه و مجوزهای خاص خود اجرا میشود.
بوتلودر (Bootloader)
بوتلودر اولین برنامهای است که پس از فریمور سیستم (BIOS یا UEFI) هنگام راهاندازی اجرا میشود. نقش اصلی آن بارگذاری کرنل لینوکس در حافظه و آغاز فرایند بوت است.
GRand Unified Bootloader (GRUB) رایجترین بوتلودر پیشفرض در توزیعهای لینوکس است. بر اساس پیکربندی، GRUB یک منوی بوت را نمایش میدهد که میتواند چندین کرنل یا سیستم عامل را بارگذاری کند.
کرنل لینوکس (Linux Kernel)
پس از اینکه بوتلودر، کرنل را در حافظه بارگذاری میکند، کرنل لینوکس کنترل سیستم را در دست میگیرد. کرنل که در حالت ممتاز (ring 0) عمل میکند، خدمات سطح پایینی را به بقیه سیستم ارائه میدهد. این خدمات شامل موارد زیر هستند:
- زمانبندی فرایندها و تخصیص زمان CPU برای اطمینان از اینکه سیستم میتواند چندین وظیفه را به طور همزمان مدیریت کند.
- مدیریت حافظه فیزیکی و مجازی، شامل تخصیص صفحات (page allocation) و سوآپها (swaps).
- فراهم کردن یک رابط یکپارچه برای ارتباط با سختافزار از طریق درایورهای دستگاه. دستگاهها به عنوان فایلهای خاصی در دایرکتوری
/devنمایش داده میشوند. - استفاده از فراخوانهای سیستمی (system calls) به عنوان نقاط ورودی امن برای برنامهها برای درخواست خدماتی مانند دسترسی به فایل یا عملیات ورودی/خروجی (I/O).
- اعمال کنترل دسترسی از طریق مجوزهای کاربر و گروه، و پشتیبانی از ویژگیهای ایزولهسازی مانند فضای نامها (namespaces)، گروههای کنترل (cgroups) و ماژولهای امنیتی.
سیستم Init
پس از تکمیل فرآیند بوت، کنترل به سیستم init واگذار میشود که فرآیند بوت را ادامه میدهد و محیط کاربری را آماده میکند.
سیستم init اولین فرآیند فضای کاربری است که توسط هسته (kernel) آغاز میشود. نقش آن، مقداردهی اولیه فضای کاربری در طول بوت و مدیریت سرویسها و دیمونها (daemons) در زمان اجرا است.
وظایف سیستم init شامل موارد زیر است:
- شروع، توقف و راهاندازی مجدد سرویسها.
- مدیریت دیمونهای سیستمی.
- هماهنگ کردن ترتیب بوت.
- مانت کردن (Mounting) سیستمهای فایل.
سیستم init پیشفرض در اکثر توزیعهای مدرن، systemd است. این سیستم از راهاندازی موازی سرویسها، زمان بوت سریعتر و قابلیتهای مدیریت سیستمی بهتر، مانند ثبت جزئیات از طریق journalctl، پشتیبانی میکند.
سیستمهای init جایگزین، مانند SysVinit، OpenRC یا runit، همچنان در محیطهای لینوکس مینیمال یا سفارشی استفاده میشوند.
در ادامه ترجمه متن شما به فارسی آورده شده است:
دیمونها (Daemons)
دیمونها فرآیندهای پسزمینهای هستند که بدون تعامل مستقیم کاربر آغاز میشوند. بسیاری از آنها هنگام راهاندازی سیستم توسط سیستم init اجرا میشوند، در حالی که برخی دیگر بر اساس تقاضا یا رویدادهای برنامهریزی شده شروع به کار میکنند. آنها مسئول مدیریت خدماتی مانند شبکهسازی، چاپ و زمانبندی هستند.
بنابراین، لینوکس حاوی فرآیندهای دیمون متعدد است که هر یک دارای عملکرد خاصی هستند، به عنوان مثال:
- sshd. یک دیمون سرور SSH که به درخواستهای ورودی اتصال SSH گوش میدهد، اتصال امن به یک سرور راه دور را امکانپذیر میسازد و امکان انتقال فایل را فراهم میکند.
- httpd. دیمون سرور وب که به درخواستهای HTTP گوش میدهد و صفحات وب را ارائه میکند.
- cron. وظایف یا اسکریپتهای برنامهریزی شده را از جدول cron (crontab) در زمانهای درخواستی اجرا میکند.
- rsyslogd. پیامهای گزارش را از سرویسها و برنامههای سیستم جمعآوری و ذخیره میکند.
هنگامی که دیمونها فعال میشوند، معمولاً در پسزمینه به کار خود ادامه میدهند و منتظر رویدادهای تحریککننده بعدی یا درخواستهای ورودی میمانند.
شل لینوکس (Linux Shell)
لینوکس از یک رابط خط فرمان به نام شل (shell) استفاده میکند که به کاربران امکان میدهد دستورات را تایپ کرده و با سیستم عامل تعامل داشته باشند. انواع محبوب شل عبارتند از Bash، Zsh، Fish و غیره.

فرمانهای مبتنی بر متن به کاربران و مدیران اجازه میدهند تا فایلها را مدیریت کنند، تنظیمات سیستم را پیکربندی نمایند، وظایف مدیریتی را انجام دهند و ابزارها و برنامههای کاربردی مختلف لینوکس را راهاندازی کنند.
کتابخانههای لینوکس
کتابخانه نرمافزاری مجموعهای از کدهای قابل استفاده مجدد است که برنامهها میتوانند برای انجام توابع مشترک آن را فراخوانی کنند، در نتیجه از نیاز به بازنویسی منطق مشابه جلوگیری میشود. برای مثال، اگر چندین برنامه نیاز به مدیریت عملیات فایل یا ارتباطات شبکه داشته باشند، میتوانند به جای آن به همان کتابخانه مشترک تکیه کنند.
دو نوع اصلی کتابخانه در لینوکس وجود دارد:
- کتابخانههای اشتراکی (فایلهای .so): این کتابخانهها به صورت پویا در زمان اجرا بارگذاری میشوند. آنها مصرف حافظه و فضای دیسک را کاهش میدهند زیرا چندین برنامه میتوانند یک کتابخانه مشترک را در حافظه به اشتراک بگذارند.
- کتابخانههای ایستا (فایلهای .a): این کتابخانهها مستقیماً در زمان ساخت به باینری یک برنامه پیوند داده میشوند؛ این کتابخانهها حجم باینری را افزایش میدهند اما نیاز به حضور کتابخانه در سیستم در زمان اجرا را از بین میبرند.
کتابخانههای اشتراکی به دلیل کارایی و انعطافپذیری رایجتر هستند. مثالهای رایج شامل:
| کتابخانه | نام | هدف |
|---|---|---|
| glibc | GNU C Library | مجموعه اصلی توابع زبان C را فراهم میکند که تقریباً توسط هر برنامه لینوکس و ابزار سیستمی استفاده میشود. |
| libm | Math Library | توابع گستردهای از قبیل لگاریتم، توابع مثلثاتی و توان را ارائه میدهد. |
| libpthread | POSIX Threads | پشتیبانی از چندریسمانی (multithreading) را در برنامهها فعال میکند و به آنها امکان میدهد چندین وظیفه را به طور همزمان انجام دهند. |
| libdl | Dynamic Linking Loader | به برنامهها اجازه میدهد تا کتابخانههای اضافی را به صورت پویا در زمان اجرا بارگذاری کنند. |
| libX11 | X Window System | کد پایه را برای برنامههای رابط کاربری گرافیکی (GUI) فراهم میکند تا با سرور نمایشگر ارتباط برقرار کنند. |
برای اینکه ببینید یک برنامه از چه کتابخانههای اشتراکی استفاده میکند، دستور زیر را در ترمینال خود وارد کنید:
ldd /usr/bin/your_program
وابستگیهای کتابخانه پویا و فرآیندهای لینوکس
این متن به وابستگیهای کتابخانهای پویا که در زمان اجرا توسط پیونددهنده پویای سیستم (dynamic linker) حل میشوند، اشاره دارد.
فرآیندها و ابزارهای لینوکس
یک فرمان یا برنامه در حال اجرا در لینوکس فرآیند (process) نامیده میشود. هر فرآیند یک شناسه منحصر به فرد به نام شناسه فرآیند (PID) دارد. هسته (kernel) تمام فرآیندها را مدیریت میکند و چرخه عمر آنها را از ایجاد تا پایان ردیابی میکند.
فرآیندها حالتهای مختلفی دارند:
- در حال اجرا (Running): حالتی که یک فرآیند در حال حاضر توسط CPU اجرا میشود.
- خواب (Sleeping): حالتی که یک فرآیند منتظر منابع یا یک رویداد خاص است.
- زامبی (Zombie): یک فرآیند از کار افتاده که اجرای خود را به پایان رسانده اما همچنان در جدول فرآیندها باقی مانده است. این اتفاق زمانی میافتد که وضعیت خروج فرآیند هنوز توسط فرآیند والد آن خوانده نشده باشد.
- متوقف شده (Stopped): حالتی که یک فرآیند در حال اجرا نیست و بنابراین آماده از سرگیری یا پایان است.
- یتیم (Orphaned): فرآیندی که فرآیند والد آن به پایان رسیده است.
لینوکس ابزارها و برنامههای کاربردی مختلفی را برای مدیریت فرآیندها ارائه میدهد:
- ps: یک نمای کلی از فرآیندهای فعلی را نمایش میدهد.
- top/htop: یک نمای زنده و تعاملی از مصرف CPU و حافظه را ارائه میدهد.
- kill, pkill, killall: دستوراتی برای پایان دادن (کشتن) یک فرآیند.
محیط گرافیکی (اختیاری)
بیشتر سرورهای لینوکس بدون رابط گرافیکی نصب میشوند تا منابع سیستم را حفظ کرده و سطح حمله را کاهش دهند. با این حال، گاهی اوقات یک رابط کاربری گرافیکی (GUI) در موارد زیر نصب میشود:
- تنظیمات دسکتاپ از راه دور با قابلیت VNC.
- محیطهای توسعه.
- ماشینهای محلی یا مجازی با کاربری آسان برای مدیران.
سرور گرافیکی یک جزء سیستمی سطح پایین است که مسئول ترسیم پنجرهها و مدیریت ورودی از دستگاههایی مانند صفحهکلید و ماوس است. دو پروتکل اصلی وجود دارد:
- X11. این جزء سیستم پنجره X (X11 یا X) را پیادهسازی میکند و مدیریت پنجره، ورودی صفحهکلید/ماوس و پشتیبانی از نمایشگرهای متعدد را امکانپذیر میسازد.
- Wayland. یک پروتکل جدیدتر و سادهتر که قصد دارد جایگزین X11 شود. این پروتکل عملکرد بهبود یافته، معماری مدرن و امنیت بهتری را ارائه میدهد.

محیط دسکتاپ مجموعهای از نرمافزارها است که رابط بصری و ابزارهای کاربری را بر روی سرویسدهنده گرافیکی (graphical server) فراهم میکند. این مجموعه شامل، برای مثال، ویرایشگرهای متن، ابزارهای پیکربندی، مرورگرهای وب، و سایر برنامههای کاربردی میشود.
محیطهای دسکتاپ محبوب عبارتند از:
- GNOME: محیط پیشفرض در بسیاری از توزیعهای لینوکس؛ تمیز و مینیمال.
- KDE Plasma: رابط کاربری بسیار قابل تنظیم و غنی از امکانات.
- XFCE/LXDE: محیطهای سبکوزن ایدهآل برای سیستمهای با منابع کم یا دسترسی از راه دور.
محیطهای دسکتاپ مستقل از توزیع (distribution-independent) هستند و اغلب میتوانند در کنار سایر محیطها نصب شوند، که این موضوع بستگی به ترجیح یا مورد استفاده شما دارد.
انواع سیستم فایل
سیستم فایل لینوکس نحوه ذخیره، سازماندهی و دسترسی به دادهها را در دستگاههای ذخیرهسازی مانند درایو حالت جامد (SSD) یا درایو دیسک سخت (HDD) تعریف میکند. انتخاب سیستم فایل بر عملکرد، قابلیت اطمینان و مقیاسپذیری تأثیر میگذارد، بسته به حجم کاری و محیط استقرار شما.
سیستم فایلهای مورد استفاده در لینوکس عبارتند از:
- ext2. در بسیاری از سیستمهای اولیه لینوکس موجود بود. این سیستم فاقد قابلیت ژورنالینگ است که آن را برای موارد استفاده خاص سریعتر میکند اما پس از خرابی یا از دست دادن برق، بیشتر مستعد خرابی است.
- ext3. نسخه بهبود یافته ext2 است که ژورنالینگ را برای ردیابی تغییرات سیستم فایل اضافه میکند.
- ext4. سیستم فایل پیشفرض در اکثر توزیعهای مدرن لینوکس. از فایلها و حجمهای بزرگ پشتیبانی میکند، عملکرد بهبود یافتهای را ارائه میدهد و شامل سازگاری رو به عقب با ext3 و ext2 است.
- Btrfs (B-tree file system). ویژگیهای پیشرفتهای مانند پشتیبانی از RAID، اسنپشات، بررسی مجموع (checksumming) و خودترمیمی را ارائه میدهد.
- XFS. یک سیستم فایل با کارایی بالا که برای ذخیرهسازی در مقیاس بزرگ و ورودی/خروجی موازی بهینهسازی شده است. معمولاً در محیطهای سازمانی و دارای پایگاه داده سنگین استفاده میشود.
استاندارد سلسله مراتب سیستم فایل (FHS)
لینوکس از یک ساختار دایرکتوری استاندارد شده در زیر دایرکتوری ریشه (/) پیروی میکند. این امر منجر به یک ساختار دایرکتوری ثابت و قابل پیشبینی در سراسر توزیعها میشود. درک ساختار دایرکتوری لینوکس برای موارد زیر ضروری است:
- پیمایش سیستم.
- عیبیابی پیکربندی و مسائل زمان اجرا.
- نوشتن اسکریپتهای اتوماسیون.
- مدیریت بستهها و سرویسهای نرمافزاری.
اکثر سرویسهای سیستمی، گزارشها، فایلهای پیکربندی و باینریها از این طرحبندی پیروی میکنند:
| Directory | Purpose |
|---|---|
| /etc | فایلهای پیکربندی سیستم |
| /var | فایلهای لاگ، صندوقهای پستی (mail spools)، و دادههای متغیر زمان اجرا. |
| /usr | برنامههای سطح کاربر، کتابخانههای مشترک، و مستندات. |
| /home | دایرکتوریهای شخصی برای کاربران غیر روت. |
| /bin, /sbin | ابزارهای اجرایی ضروری برای کاربران عادی و کاربران روت. |
| /lib, /lib64 | کتابخانههای اشتراکی مورد نیاز باینریهای ضروری. |
چگونه توزیع مناسب لینوکس را انتخاب کنیم؟
در حال حاضر، صدها توزیع لینوکس به طور فعال نگهداری میشوند. با این حال، تنها چند ده مورد از آنها به طور گسترده در سرورها، دسکتاپها و سیستمهای توکار استفاده میشوند. اکثر موارد دیگر برای کارهای بسیار خاص طراحی شدهاند. به عنوان مثال، کالی لینوکس برای تست نفوذ و آلپاین لینوکس برای محیطهای کانتینری سبک وزن استفاده میشود.
هنگام انتخاب یک توزیع لینوکس برای سرور خود، موارد زیر را در نظر بگیرید:
- هدف: برخی توزیعها برای سیستم عامل سرور مناسبتر هستند، در حالی که برخی دیگر بر تجربه دسکتاپ تمرکز دارند. بر اساس نقش سرور خود تحقیق و توزیع مناسب را انتخاب کنید، به عنوان مثال، اگر عمدتاً با کانتینرها کار میکنید، آلپاین را نصب کنید.
- تجربه کاربری: تجربه قبلی شما با لینوکس اهمیت دارد. برخی توزیعها مانند اوبونتو، فدورا یا مینت برای کاربران جدید مناسبتر هستند. کاربران پیشرفتهای که گزینههای سفارشیسازی کامل را ترجیح میدهند، به سراغ گنتو یا آرچ لینوکس میروند.
- نیازمندیهای سختافزاری: اطمینان حاصل کنید که توزیع از تنظیمات سختافزاری شما پشتیبانی میکند. برخی نیاز به پیکربندی دستی یا درایورهای شخص ثالث دارند، در حالی که برخی دیگر سازگاری آماده را ارائه میدهند. برای مشکلات سختافزاری شناخته شده، مستندات رسمی و انجمنها را بررسی کنید.
- مستندات: جوامع بزرگتر معمولاً آموزشهای بیشتر، کمک برای عیبیابی و توسعه فعال را ارائه میدهند که به اطمینان از بهروزرسانیهای منظم و پایداری طولانیمدت کمک میکند.
- مدیران بسته و ابزارها: انتخاب یک توزیع لینوکس بستگی به این دارد که چه چیزی برای شما مهمتر است: مدیران بسته (APT، DNF، Pacman)، محیطهای دسکتاپ پیشفرض، فلسفههای سیستمی یا تجربه کاربری. بنابراین، هر توزیع یک گردش کار و اکوسیستم منحصربهفرد ارائه میدهد.
خلاصهای از توزیعهای لینوکس: موارد استفاده و ویژگیها
جدول زیر توزیعهای لینوکس را به همراه بهترین موارد استفاده و ویژگیهای قابل توجه آنها لیست میکند:
| Distribution | Base | Package Manager | Use Case | Best For | Notable Features |
|---|---|---|---|---|---|
| Ubuntu | Debian | APT (.deb) | General-purpose computing, cloud, servers. | مبتدیان، مدیران سیستم. | نسخههای LTS؛ پشتیبانی قوی از سوی جامعه؛ کاربرپسند |
| Linux Mint | Ubuntu/Debian | APT (.deb) | Desktop operating system. | کاربران جدید لینوکس، کاربران چندرسانهای/خانگی. | پشتیبانی از فایلهای رسانهای آماده؛ دسکتاپ سینامون. |
| Debian | Independent | APT (.deb) | Base for other distros, server workloads. | کاربران باتجربه، تنظیمات حداقلی. | پایداری؛ مخزن عظیم؛ طاق چندوجهی. |
| Fedora | Independent (RHEL upstream) | DNF (.rpm) | Developer platforms, testing new tech. | توسعهدهندگان، تنظیمات آگاه به امنیت. | بستههای پیشرفته؛ SELinux؛ بالادست RHEL. |
| Arch Linux | Independent | pacman | Custom, rolling-release systems. | کاربران پیشرفتهای که کنترل دستی را ترجیح میدهند. | تنظیمات تحت کنترل کاربر؛ مستندات عالی (آرچ ویکی). |
| Rocky Linux | RHEL | DNF (.rpm) | Enterprise servers, CentOS replacement. | سازمانهایی که به ثبات بلندمدت نیاز دارند. | سازگار با RHEL؛ نگهداری فعال؛ مبتنی بر کل. |
| Alpine Linux | Independent | apk | Container-based and minimalist environments. | کاربران پیشرفته، کاربران داکر و سیستمهای تعبیهشده. | بسیار سبک، متمرکز بر امنیت، مبتنی بر musl libc و BusyBox. |
| AlmaLinux | RHEL | DNF (.rpm) | Server deployments, enterprise workloads. | مدیران ابر/سرور جایگزین CentOS میشوند. | سازگار با RHEL؛ رایگان و متنباز؛ نسخههای پایدار. |
| openSUSE Leap | SUSE Linux Enterprise | zypper | Enterprise desktops and servers. | مدیران سیستم، توسعهدهندگان در محیطهای پایدار. | ابزار مدیریت YaST؛ آزمایششده در برابر SLE. |
| openSUSE Tumbleweed | Independent | zypper | Rolling-release development environments. | کاربران حرفهای که آخرین نرمافزار را میخواهند. | همیشه بهروز؛ مناسب برای توسعه/آزمایش. |
چگونه سختافزار سرور مناسب را انتخاب کنیم؟
هر نقش سرور نیازمندیهای متفاوتی از نظر منابع و پیکربندی دارد. نقش سرور لینوکس خود را مشخص کنید و فهرستی شامل موارد زیر تهیه نمایید:
- بارهای کاری مورد انتظار.
- نرمافزارها و سرویسهای مورد نیاز مانند MySQL، Docker یا OpenSSH.
- تعداد تخمینی کاربران همزمان یا اتصالات.
در ادامه، ترجمه فارسی متن شما آورده شده است:
سختافزار مورد نیاز برای سرور لینوکس
در این بخش، به اجزای اصلی سختافزاری مورد نیاز برای راهاندازی یک سرور لینوکس میپردازیم:
- پردازنده (CPU): یک CPU مصرفی مانند Intel Core یا AMD Ryzen برای کارهای سادهای مثل یک وب سرور سبک لینوکس کافی است. اما برای حجم کاری بالا مانند پایگاه داده یا راهاندازی مجازیسازی، ممکن است به CPUهای سرور-گرید مثل Intel Xeon یا AMD EPYC نیاز داشته باشید.
- رم (RAM): لینوکس حافظه را به طور کارآمد مدیریت میکند، اما میزان رم باید متناسب با حجم کار و فضای لازم برای هسته (kernel)، دیمونها (daemons) و کش (caching) باشد. حداقل ۸ تا ۱۶ گیگابایت برای کارهای پایه و ۶۴ تا ۱۲۸ گیگابایت و بیشتر برای سرورهای پایگاه داده، کانتینرها یا ماشینهای مجازی انتخاب کنید.
- فضای ذخیرهسازی (Storage): برای سیستم عامل و دادههای پرکاربرد از SSD استفاده کنید و برای ذخیرهسازی انبوه، HDD اضافه کنید. به طرحبندی پارتیشنها و سیستمهای فایل مانند ext4، xfs و Btrfs برای انعطافپذیری و اطمینانپذیری توجه کنید.
- مادربورد (Motherboard): اطمینان حاصل کنید که مادربورد با CPU، رم و فضای ذخیرهسازی شما سازگار است. پشتیبانی BIOS/UEFI از لینوکس، به ویژه برای secure boot و virtualization extensions را تأیید کنید.
- کارت رابط شبکه (NIC): یک کارت شبکه گیگابیتی یک پیکربندی استاندارد برای سرور است. برای نیازهای با توان عملیاتی بالا، ۱۰ GbE را در نظر بگیرید. اگرچه لینوکس پشتیبانی گستردهای از درایورها دارد، اما سازگاری با توزیعهایی مانند دبیان (Debian) یا فدورا (Fedora) را تأیید کنید.
- واحد منبع تغذیه (PSU): از یک PSU قابل اعتماد با راندمان حداقل ۸۰+ Bronze استفاده کنید. برای سرورهای حیاتی، یک PSU اضافی (redundant) را در نظر بگیرید.
- سیستم خنککننده (Cooling): لینوکس به خنککننده خاصی نیاز ندارد، اما اگر قطعات بیش از حد گرم شوند، عملکرد به سرعت کاهش مییابد. اگر از خنککننده غیرفعال (passive cooling) استفاده میکنید، از بهینهسازی جریان هوا اطمینان حاصل کنید.
- واحد پردازش گرافیکی (GPU): فقط برای برنامههای لینوکسی که نیاز به پردازش محاسباتی فشرده یا برنامههای پرمحتوای رسانهای مانند استنتاج یادگیری ماشین (machine learning inference) دارند، مورد نیاز است.
- RAID سختافزاری (اختیاری): در حالی که لینوکس از RAID نرمافزاری از طریق ابزارهایی مانند mdadm پشتیبانی میکند، RAID سختافزاری میتواند مزایای عملکردی و ویژگیهای اضافی را برای موارد استفاده خاص ارائه دهد.
جدول زیر شامل پیکربندیهای نمونه برای سناریوهای رایج است. (این جمله اشاره به یک جدول دارد که در متن اصلی شما موجود نیست، اما در صورت وجود، میبایست در ادامه ترجمه میشد.)
| پیکربندی سختافزاری نمونه | |
|---|---|
| وب سرور/فایل سرور پایه | Intel Core i5 / AMD Ryzen 5, 8–۱۶ GB RAM, 256 GB SSD, 1 Gbps NIC |
| آزمایشگاه خانگی/NAS | Intel Core i3 / Low-power ARM board, 4–۸ GB RAM, SSD + HDD combination |
| سرور وب یا پایگاه داده پرترافیک | Intel Xeon / AMD EPYC, 64+ GB ECC RAM, NVMe SSDs (RAID 10), Dual 10 Gbps NICs |
| میزبان مجازیسازی | Multi-core Xeon/EPYC, 128+ GB ECC RAM, NVMe Storage, Redundant PSU |
| سرور رسانه با قابلیت تبدیل فرمت (مثلاً Plex) | Ryzen 7 / Intel i7 + NVIDIA GPU, 32 GB RAM, SSD + Large HDDs, Enhanced Cooling |
| گره محاسبات با کارایی بالا (HPC) | Dual-socket EPYC/Xeon, 256+ GB RAM, High-speed Interconnect (e.g., InfiniBand), Active Cooling |
| زیرساخت کانتینر محور (مثلاً Kubernetes) | 8+ Core CPU, 64–۱۲۸ GB RAM, Fast SSDs, NIC Bonding Support |
| سرور پشتیبان/بایگانی | Low-power CPU, 8 GB RAM, High-capacity HDDs, Basic RAID or JBOD Setup |
ماشین مجازی مناسب را چگونه انتخاب کنیم؟
ماشینهای مجازی (VMs) برای استقرار سرورهای لینوکس هم در محیطهای محلی (on-premise) و هم در محیطهای ابری استفاده میشوند. یک سرور لینوکس که در داخل یک ماشین مجازی اجرا میشود، دقیقاً مانند یک سرور فیزیکی عمل میکند، اما با انعطافپذیری، مقیاسپذیری و ایزولهسازی بیشتر.
یک ماشین مجازی سرور لینوکس با اجرای یک سیستمعامل مهمان لینوکس بر روی سختافزار مجازیسازی شده که توسط هایپروایزر مدیریت میشود، ایجاد میگردد. اجزای کلیدی عبارتند از:
- هایپروایزر (Hypervisor): هایپروایزر منابع سختافزاری فیزیکی را مدیریت کرده و آنها را به ماشینهای مجازی اختصاص میدهد.
- سیستم میزبان (Host System): ماشین فیزیکی که هایپروایزر را اجرا میکند و منابع را به ماشینهای مجازی مهمان ارائه میدهد.
- سیستم مهمان (Guest System): سرور لینوکس در داخل ماشین مجازی اجرا میشود. هر مهمان دارای سیستمعامل و برنامههای کاربردی ایزوله خود است.
- سختافزار مجازی (Virtual Hardware): ماشین مجازی، CPUهای مجازی، حافظه، دیسکها و رابطهای شبکه را میبیند که توسط هایپروایزر به اجزای فیزیکی نگاشت میشوند.
- سیستمعامل مهمان لینوکس (Guest Linux OS): میتوانید توزیعهای مختلف لینوکس مانند اوبونتو سرور (Ubuntu Server)، راکی لینوکس (Rocky Linux) یا دبیان (Debian) را بسته به نقش سرور و اولویت خود اجرا کنید.
انواع مجازیسازی برای سرورهای لینوکس:
- مجازیسازی کامل (Full Virtualization): سیستمعامل مهمان لینوکس از اینکه مجازیسازی شده است، بیخبر است. این رایجترین تنظیمات است که توسط ابزارهایی مانند پروکسماکس (Proxmox) یا ویامور ایاسایکسآی (VMware ESXi) پشتیبانی میشود.
- پاراویرچوالیزیشن (Paravirtualization): سیستمعامل مهمان لینوکس اصلاح شده است تا به طور کارآمدتری با هایپروایزر تعامل داشته باشد (به عنوان مثال، محیطهای مبتنی بر Xen).
- مجازیسازی با کمک سختافزار (Hardware-Assisted Virtualization): از Intel VT-x یا AMD-V برای کاهش سربار مجازیسازی استفاده میکند. اکثر هایپروایزرهای مدرن و CPUها از این قابلیت پشتیبانی میکنند.
- کانتینرسازی (Containerization – مجازیسازی در سطح سیستمعامل): ابزارهایی مانند داکر (Docker) و الاِکسسی (LXC) چندین نمونه لینوکس ایزوله (کانتینر) را روی یک هسته مشترک اجرا میکنند که برای میکروسرویسها و برنامههای سبک ایدهآل است.
| مثالی از تنظیمات مجازیسازی | |
|---|---|
| تولید در محل (On-Premium) با ماشین مجازی (VM) | هایپروایزر نوع ۱ (KVM یا VMware ESXi)، سختافزار واسط برای افزایش کارایی، مهمان: سرور اوبونتو، لینوکس راکی. |
| توسعه یا آزمایش محلی | هایپروایزر نوع ۲ (VirtualBox، VMware Workstation)، مهمان: اوبونتو، دبیان، فدورا. |
| سرویسهای سبک/میکروسرویسها | کانتینرها (Docker، LXC)، میزبان: Debian/Alpine، مدیریت شده از طریق Docker Compose یا Kubernetes. |
| حجم کاری سازمانی با دسترسی بالا | هایپروایزر نوع ۱ Bare-metal با مجازیسازی به کمک سختافزار (VT-x/AMD-V)، افزونگی ماشین مجازی، فضای ذخیرهسازی مشترک. |
| دسکتاپ مجازی یا برنامههای رابط کاربری گرافیکی | VirtualBox یا KVM با GPU passthrough (در صورت نیاز)، مهمان: اوبونتو دسکتاپ یا فدورا ورکاستیشن. |
| آزمایشگاههای آموزشی یا تربیتی | ماشینهای مجازی نوع ۲ یا مبتنی بر ابر (مثلاً در Proxmox، VMware Workstation)، پشتیبانی از اسنپشات، ایمیجهای پایه سبک. |
| تست مجازیسازی تودرتو | میزبان با پشتیبانی از VT-x/AMD-V و EPT، KVM در لینوکس یا Hyper-V در ویندوز، ماشینهای مجازی مهمان میتوانند هایپروایزرهای خود را اجرا کنند. |
| محیط ترکیبی از سیستمعاملها (ویندوز + لینوکس) | از Proxmox یا VMware vSphere استفاده کنید، منابع را اختصاص دهید، انواع سیستم عامل را با قالبها جدا کنید. |
نحوه نصب سرور لینوکس
مراحل راهاندازی یک سرور لینوکس به تنظیمات زیرساخت و ارائهدهنده هاستینگ شما بستگی دارد. برخی از سناریوهای رایجتر عبارتند از:
- ارائهدهندگان ابری مانند AWS و Azure به کاربران امکان میدهند یک تصویر لینوکس از پیش ساخته شده، مثلاً اوبونتو، را انتخاب کرده و سرور را از طریق یک کنسول وب، CLI (رابط خط فرمان) یا API (رابط برنامهنویسی کاربردی) راهاندازی کنند.
- ارائهدهندگان هاستینگ مدیریت شده مانند Hetzner یا OVH دارای ابزارهای نصب خودکار هستند. کاربران یک سیستم عامل را از طریق یک کنترل پنل انتخاب میکنند و ارائهدهنده کل فرآیند نصب را مدیریت میکند.
- یکی از بهترین راهها برای آزمایش توزیعهای مختلف، استفاده از ماشینهای مجازی است. شما میتوانید یک تصویر ISO را در یک هایپروایزر (KVM، VMware، Proxmox، VirtualBox) بارگذاری کرده و سیستم عامل را به عنوان یک رسانه بوت مجازی نصب کنید.
- اگر در حال راهاندازی یک سرور Bare Metal (سختافزار اختصاصی) از راه دور هستید، میتوانید از رابط BMC برای بارگذاری یک ISO مجازی، شروع یک بوت PXE، یا خودکارسازی نصب با استفاده از ابزارهایی مانند MAAS، Foreman یا Ansible استفاده کنید.
- اگر دسترسی فیزیکی به یک دستگاه محلی دارید، میتوانید یک رسانه فیزیکی قابل بوت USB/DVD ایجاد کرده و از آن بوت کنید تا اوبونتو را نصب کنید. بسته به سیستم عامل و ترجیح، ابزارهایی مانند Rufus، dd یا balenaEtcher برای ایجاد رسانه قابل بوت استفاده میشوند.
بخش زیر توضیح میدهد که چگونه یک نمونه سرور اوبونتو را روی یک ماشین مجازی محلی با استفاده از VirtualBox نصب کنید.
فرآیند نصب گام به گام اوبونتو سرور
برای نصب و پیکربندی اوبونتو سرور ۲۴٫۰۴ بر روی یک ماشین مجازی محلی، به موارد زیر نیاز دارید:
- یک هایپروایزر مجازی سازی (این راهنما از VirtualBox 7 استفاده میکند).
- حداقل ۴ گیگابایت رم.
- ۲۵ گیگابایت فضای خالی دیسک.
مرحله ۱: دانلود اوبونتو سرور
برای دانلود جدیدترین نسخه اوبونتو سرور:
- یک مرورگر وب را باز کرده و به صفحه دانلود رسمی اوبونتو بروید.
- روی دکمه “Ubuntu Server 24.04 LTS Download” کلیک کنید.

مرحله ۲: ایجاد یک ماشین مجازی
برای ایجاد یک ماشین مجازی (VM) جدید:
- VirtualBox را باز کرده و New (جدید) را انتخاب کنید.

۲. در پنجره بازشو:
- نام. یک نام برای ماشین مجازی (VM) وارد کنید.
- پوشه. پوشه ذخیرهسازی ماشین مجازی را انتخاب کنید.
- تصویر ISO. مکان فایل ISO که دانلود کردهاید را مشخص کنید.
- نوع و نسخه. VirtualBox به طور خودکار نوع و نسخه سیستمعامل را بر اساس فایل ISO انتخاب شده حدس میزند.

۳. کادر Skip Unattended Installation را علامت بزنید و روی Next کلیک کنید.

۴. نوار لغزنده را بکشید یا مقدار RAM مورد نظر را تایپ کنید. حداقل ۴ گیگابایت (۴۰۹۶ مگابایت) RAM اختصاص دهید.
۵. بسته به سیستم میزبان خود، ۲ هسته یا بیشتر تنظیم کنید. روی Next کلیک کنید.

۶. اکنون گزینه «ایجاد یک هارد دیسک مجازی» را انتخاب کنید و اندازه دیسک را حداقل ۲۵ گیگابایت تنظیم نمایید. برای ادامه، روی «بعدی» کلیک کنید.

۷. تنظیمات خود را در صفحه خلاصه بازبینی کنید و برای ایجاد VM روی پایان کلیک کنید.

مرحله ۳: راهاندازی نصبکننده
برای شروع نصب اوبونتو سرور:
- در VirtualBox، ماشین مجازی Ubuntu Server را انتخاب کرده و روی Start کلیک کنید.

۲٫ گزینهی «تلاش یا نصب اوبونتو سرور» (Try or Install Ubuntu Server) را انتخاب کرده و برای تایید، Enter را فشار دهید.

۳٫ زبان مورد نظر خود را انتخاب کرده و Enter را فشار دهید.

۴. یک طرحبندی صفحهکلید انتخاب کنید و روی انجام شد (Done) کلیک کنید.

۵. نوع نصب اوبونتو سرور را انتخاب کرده و روی Done کلیک کنید.

مرحله ۴: پیکربندی شبکه
در بخش پیکربندی شبکه:
- تنظیمات پیشفرض (DHCP) را رها کنید. یا، یک آدرس IP ثابت پیکربندی کنید. برای ادامه، Done را انتخاب کنید.

۲٫ اگر قصد استفاده از IP را ندارید، فیلد را خالی بگذارید و انجام شد را انتخاب کنید.

۳. پس از اتمام بررسی خودکار، آینه پیشفرض اوبونتو را پذیرفته و روی «انجام شد» (Done) کلیک کنید.

مرحله ۵: پیکربندی فضای ذخیرهسازی
- استفاده از تمام دیسک را انتخاب کرده و دیسک ذخیرهسازی مجازی که قبلاً ایجاد شده بود را برگزینید.
- تنظیم پیشفرض پیکربندی این دیسک به عنوان یک گروه LVM را فعال نگه داشته و انجام شد (Done) را انتخاب کنید.

۳٫ خلاصه پارتیشنبندی را بررسی کنید و اگر همه چیز صحیح است، روی Done کلیک کنید.

۴٫ یک پنجره پاپآپ به شما اطلاع میدهد که دیسکهای انتخابشده فرمت خواهند شد. برای ادامه نصب، «Continue» را فشار دهید.
مرحله ۶: ایجاد حساب کاربری
برای ایجاد یک حساب کاربری برای اوبونتو سرور:
۱٫ نام، نام کامپیوتر، و نام کاربری/گذرواژه را برای کاربر ریشه (root) وارد کنید.
۲٫ برای ادامه، «Done» را انتخاب کنید.

مرحله ۷: پیکربندی قابلیتهای اختیاری
بعد از فشردن Continue برای رد شدن از اعلان Upgrade to Ubuntu Pro:
- گزینه Install OpenSSH server را انتخاب کنید. در صورت تمایل، اگر کلید SSH دارید، آن را وارد کنید.
- Done را فشار دهید تا ادامه دهید.

۳. صفحه Featured Server Snaps به شما این امکان را میدهد که کار را سریع شروع کرده و ابزارهای پرطرفدار را نصب کنید. اسنپهای مورد نظر را انتخاب کرده و Done را فشار دهید تا نصب آغاز شود.
مرحله ۸: اتمام نصب
منتظر بمانید تا نصب اوبونتو سرور به پایان برسد. پس از اتمام، Reboot Now را انتخاب کنید.
VirtualBox از شما میخواهد که ISO نصب شده را هنگام راهاندازی مجدد حذف کنید:
۱. به Devices > Optical Drives > Remove Disk from virtual drive بروید.
۲. Enter را فشار دهید تا سرور تازه نصب شده بوت شود.
مرحله ۹: بررسی پس از نصب
هنگامی که سیستم وارد شل شد:
۱. با استفاده از نام کاربری و رمز عبوری که هنگام نصب ایجاد کردهاید، وارد شوید.
۲. برای تأیید راهاندازی، اطلاعات سیستم CPU را با استفاده از دستور زیر بررسی کنید:
lscpu

۳. میزان استفاده از رم، حافظه پنهان (کش) و حافظه مجازی (swap) را با دستور زیر بررسی کنید:
free -h

۴. از دستور زیر برای بررسی طرحبندی و پارتیشنهای دیسک استفاده کنید:
lsblk

اکنون میتوانید نرمافزار اضافی را نصب کرده و سرور خود را برای نقش خاص آن پیکربندی کنید.
نحوه پیکربندی سرور لینوکس
پس از نصب اوبونتو سرور، باید شبکه را پیکربندی کنید، فایروال را تنظیم کنید، دسترسی از راه دور را فعال کنید و نرمافزار لازم را نصب کنید.
دستورالعملهای موجود در بخشهای زیر را دنبال کنید.
بهروزرسانیهای سیستم
پس از نصب یک سرور لینوکس جدید، اطمینان حاصل کنید که پچهای امنیتی و بهبودهای سیستم به سرعت اعمال شوند. این کار احتمال بهرهبرداری از آسیبپذیریهای سیستم را کاهش میدهد.
برای بهروزرسانی لیست بستهها و ارتقاء تمام بستههای نصب شده در اوبونتو سرور، دستور زیر را وارد کنید. از این دستور استفاده کنید:
sudo apt update && sudo apt upgrade -y

توصیه میشود که لیست بستهها هر بار قبل از نصب نرمافزار جدید بهروزرسانی شود تا از راهاندازیهای مجدد غیرمنتظره یا راهاندازی مجدد سرویسها به دلیل ناسازگاری جلوگیری شود. جدول زیر دستورات بهروزرسانی و ارتقاء سیستم را برای توزیعهای رایج لینوکس فهرست میکند:
| Distribution | Update Package List | Upgrade Packages | Remove Unused Packages |
|---|---|---|---|
| Ubuntu/Debian | sudo apt update | sudo apt upgrade -y | sudo apt autoremove -y && sudo apt clean |
| RHEL/Rocky | sudo dnf check-update | sudo dnf upgrade -y | sudo dnf autoremove -y |
| Fedora | sudo dnf check-update | sudo dnf upgrade -y | sudo dnf autoremove -y |
| Arch Linux | sudo pacman -Sy | sudo pacman -Su | sudo pacman -Rns $(pacman -Qdtq) |
| openSUSE | sudo zypper refresh | sudo zypper update -y | sudo zypper packages --orphaned |
| Apline Linux | sudo apk update | sudo apk upgrade | sudo apk cache clean |
تنظیم پیکربندی شبکه
لینوکس از رابطهای شبکه مختلفی از جمله اترنت، Wi-Fi و رابطهای شبکه مجازی پشتیبانی میکند. برای مشاهده رابطهای فعال، وارد کنید:
ip a

هر رابط دارای یک نام منحصربهفرد است، مانند:
- eth0: رابط اترنت سنتی.
- lo: رابط لوپبک (loopback) که برای ارتباطات داخلی استفاده میشود.
- enp0s3: یک فرمت نامگذاری قابل پیشبینیتر برای اترنت.
- wlan0: رابط شبکه محلی بیسیم (Wireless LAN).
در لینوکس، تنظیمات شبکه از طریق فایلهای پیکربندی مدیریت میشوند. مکان و فرمت این فایلها بین توزیعها متفاوت است:
| Distribution | Network Tool Used | Configuration File Location |
|---|---|---|
| Ubuntu Server (18.04+) | Netplan | /etc/netplan/*.yaml |
| Ubuntu Desktop | NetworkManager (GUI & CLI) | /etc/NetworkManager/ |
| Debian 11+ | ifupdown or Netplan | /etc/network/interfaces or /etc/netplan/*.yaml |
| RHEL 8+/Rocky/AlmaLinux | NetworkManager | /etc/NetworkManager/system-connections/ |
| Fedora | NetworkManager | /etc/NetworkManager/system-connections/ |
| Arch Linux | systemd-networkd or netctl | /etc/systemd/network/ or /etc/netctl/ |
| openSUSE | Wicked/NetworkManager | /etc/sysconfig/network/ifcfg-* |
| Alpine Linux | ifupdown or manual configs | /etc/network/interfaces or /etc/network/interfaces.d/* |
برای مثال، اوبونتو سرور از ابزار Netplan برای مدیریت تنظیمات شبکه استفاده میکند. برای پیکربندی یک آدرس IP ثابت:
۱. فایل پیکربندی Netplan را با استفاده از ویرایشگر متن Nano باز کنید:
sudo nano /etc/netplan/00-installer-config.yaml
۲٫ پیکربندی IP ثابت زیر را جایگزین یا اضافه کنید (نام کارت شبکه و تنظیمات IP را در صورت نیاز تنظیم کنید):
network:
version: 2
ethernets:
enp0s3:
dhcp4: no
addresses: [192.168.1.50/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
۳. برای ذخیره و خروج از فایل، Ctrl+X را فشار دهید، سپس y و در نهایت Enter را بزنید.
۴. تغییرات را با دستور زیر اعمال کنید:
sudo netplan apply
پیام خطا در صورت وجود خطای نحوی نمایش داده میشود.
پیکربندی SSH
پروتکل Secure Shell (SSH) به کاربران امکان میدهد تا به طور امن از طریق یک شبکه غیرقابل اعتماد به یک سیستم راه دور دسترسی پیدا کنند. این یک ویژگی ضروری برای مدیریت سرورهای لینوکس است. OpenSSH کلاینت و سرور SSH پیشفرض در اکثر توزیعهای مدرن لینوکس است.
تنظیمات پیشفرض SSH ممکن است یک سرور را در برابر حملات جستجوی فراگیر (brute-force attacks) یا رباتهای اسکن آسیبپذیر بگذارد. برای بهبود امنیت، کاربران میتوانند تنظیمات SSH را در فایل /etc/ssh/sshd_config سفارشیسازی کنند، از جمله:
- تغییر شماره پورت پیشفرض.
- غیرفعال کردن دسترسی ریشه (root) از راه دور به سرور.
- فعال کردن احراز هویت SSH مبتنی بر کلید. (اختیاری)
- محدود کردن دسترسی به آدرسهای IP یا کاربران خاص.
برای پیکربندی SSH در سرور اوبونتو خود:
- دستور زیر را برای نصب سرویس OpenSSH وارد کنید:
sudo apt install openssh-server -y
۲٫ویرایشگر متنی دلخواه خود، مانند نانو، را برای دسترسی به فایل پیکربندی SSH باز کنید.
sudo nano /etc/ssh/sshd_config
۳٫ در فایل تنظیمات، خط زیر را پیدا کنید:
#Port 22
کامنت را بردارید و آن را به پورت مورد نظر خود تغییر دهید. برای مثال، سرویس را طوری تنظیم کنید که روی پورت TCP 2477 گوش دهد:
Port 2477

۴٫اطمینان حاصل کنید که کاربر روت نمیتواند از راه دور با رمز عبور استفاده شود. خط زیر را پیدا کنید:
#PermitRootLogin prohibit-password
اگر آن خط را از حالت کامنت خارج کنید، ورود روت با رمز عبور غیرفعال میشود و کاربران روت تنها در صورتی میتوانند وارد شوند که کلید SSH مربوطه را داشته باشند.
PermitRootLogin prohibit-password
برای ممنوع کردن کامل ورود به عنوان کاربر ریشه (root)، وارد کنید:
PermitRootLogin no

این تنظیم کاربران را مجبور میکند تا با حسابهای کاربری عادی وارد شوند و امتیازات خود را با sudo افزایش دهند. این روش حداکثر امنیت را فراهم میکند اما انعطافپذیری کمتری دارد.
- برای ذخیره تغییرات و خروج از فایل، CTRL+X، سپس Y، و به دنبال آن Enter را فشار دهید.
- برای اعمال تغییرات، سرویس SSH را با دستور زیر راهاندازی مجدد کنید:
sudo systemctl restart sshd.service
| توزیع | ابزار پیشنهادی | دستور نصب | فعال کردن و شروع دستور |
|---|---|---|---|
| Ubuntu/Debian | ufw (Uncomplicated Firewall) | sudo apt install ufw | sudo ufw enable |
| RHEL/Rocky | firewalld | sudo dnf install firewalld | sudo systemctl enable --now firewalld |
| Fedora | firewalld | Preinstalled (usually) | sudo systemctl enable --now firewalld |
| Arch Linux | iptables or ufw | sudo pacman -S ufw or sudo pacman -S iptables | sudo systemctl enable --now ufw (or iptables) |
| openSUSE | firewalld | sudo zypper install firewalld | sudo systemctl enable --now firewalld |
| Alpine Linux | iptables | Built-in (via the iptables package) | Rules applied via /etc/network/interfaces |
Ubuntu Server با UFW به صورت پیشفرض نصب شده ارائه میشود. برای تأیید نصب بودن فایروال، اجرا کنید:
sudo ufw version
به طور پیشفرض، UFW غیرفعال است. هنگامی که فعال میشود، تمام اتصالات ورودی را برای محافظت از سرور مسدود میکند و به تمام اتصالات خروجی اجازه میدهد تا سرور بتواند با سرویسهای خارجی ارتباط برقرار کند.
برای مشاهده وضعیت فایروال و قوانین فعال، وارد کنید:
sudo ufw status verbose

خروجی، وضعیت، تنظیمات پیشفرض و پورتهای باز را نشان میدهد.
قبل از فعالسازی UFW، اتصالات ورودی لازم برای راهاندازی سرور خود را تعریف کنید. به عنوان مثال، اگر سیستم از IPv4 و IPv6 استفاده میکند، فایل پیکربندی UFW را برای پشتیبانی از هر دو پروتکل تغییر دهید:
- فایل پیکربندی پیشفرض UFW را باز کنید:
sudo nano /etc/default/ufw
۲. مقدار IPv6 را بررسی کنید. اگر مقدار آن “خیر” است، آن را به “بله” تغییر دهید تا استفاده از IPv6 فعال شود.

٣. تغییرات را ذخیره کنید و فایل را ببندید.
٤. UFW را برای اجازه دادن به اتصالات ورودی SSH با استفاده از دستور زیر تنظیم کنید:
sudo ufw allow ssh

۴. این فرمان یک قانون برای IPv4 (و در صورت فعال بودن IPv6) اضافه میکند تا ترافیک ورودی و خروجی از اتصالات SSH را مجاز کند.
۵. (اختیاری) پورت سفارشی تعریف شده در بخش SSH را با استفاده از فرمان زیر مشخص کنید:
sudo ufw allow 2477/tcp
پس از پیکربندی تنظیمات، فایروال UFW را فعال کنید تا تغییرات اعمال شوند.
sudo ufw enable

فایروال اکنون فعال است و بهطور خودکار هنگام راهاندازی سیستم شروع به کار خواهد کرد. برای سفارشیسازی بیشتر آن متناسب با نیازهای خود، میتوانید از راهنمای ما در مورد تنظیمات پیشرفته UFW برای اوبونتو استفاده کنید.
مدیریت حسابهای کاربری و مجوزها
لینوکس کنترلهای دسترسی را با استفاده از یک مدل مجوز که در سیستم فایل تعبیه شده است، اعمال میکند. هر فایل و دایرکتوری دارای یک مالک (owner)، یک گروه مرتبط (associated group) و مجوزهایی برای سه دسته کاربری است:
- کاربر (u): مالک فایل یا دایرکتوری.
- گروه (g): سایر کاربران عضو گروه مالک.
- سایرین (o): هر کس دیگری در سیستم.
هر یک از این دستههای کاربری میتوانند مجوزهای زیر را داشته باشند:
| مجوز | نماد | توضیحات |
|---|---|---|
| Read | r | یک کاربر میتواند محتویات فایل را مشاهده کند یا محتویات دایرکتوری را فهرست کند. |
| Write | w | یک کاربر با مجوزهای نوشتن میتواند فایلها یا دایرکتوریها را ایجاد کند، جابهجا کند و حذف کند، همچنین محتویات فایل را تغییر دهد یا پاک کند. |
| Execute | x | “به کاربر اجازه میدهد فایلهای اسکریپت/اجرایی را اجرا کند یا وارد دایرکتوریها شود/در آنها پیمایش کند.” |
برای مشاهده مجوزهای یک فایل یا دایرکتوری از دستور ls استفاده کنید:
ls -l
خروجی لیستی از کاربران و مجوزهای آنها را نمایش میدهد.
$ ls -l
total 17
-rw-r--r-- 1 boss staff 2048 May 14 09:00 report.txt
-rw-rw---- 1 boss staff 1024 May 13 16:30 draft.docx
-rwxr-xr-x 1 boss staff 512 May 12 14:12 run.sh
drwxr-xr-x 2 boss staff 4096 May 10 12:01 projects
drwx------ 3 boss staff 4096 May 10 12:05 private
-rw-r--r-- 1 root root 3072 May 11 11:11 system.conf
-rw------- 1 boss staff 5120 May 14 08:00 secrets.txt
lrwxrwxrwx 1 boss staff 14 May 10 13:00 shortcut -> /var/www/html
crw-rw-r-- 1 root tty 4, 0 May 14 10:00 /dev/tty0
ستون اول، برای مثال، rw-r–r–، مجوزهای هر فایل و دایرکتوری را نشان میدهد:
- صاحب (owner) boss دارای مجوزهای خواندن و نوشتن (rw-) است.
- گروه (group) staff دارای مجوزهای فقط خواندن (r–) است.
- بقیه (Everyone else) نیز دارای مجوزهای فقط خواندن (r–) هستند.
هنگامی که شما اوبونتو سرور را نصب میکنید، کاربر پیشفرض ایجاد شده معمولاً دارای امتیازات sudo است که به او اجازه میدهد کارهای مدیریتی را انجام دهد. بیشتر توزیعهای لینوکس از یک مجموعه دستورات مشابه برای مدیریت کاربران و مجوزهای فایل استفاده میکنند.
جدول زیر رایجترین دستورات مورد استفاده را فهرست میکند:
| فرمان | عملکرد |
|---|---|
| adduser or useradd | یک کاربر جدید ایجاد میکند. |
| usermod | ویژگیهای کاربر را تغییر میدهد (مثلاً به گروه اضافه میکند). |
| passwd | رمز عبور کاربر را تنظیم یا بهروزرسانی میکند. |
ls -l | مجوزهای فایل را نمایش میدهد. |
| chmod | مجوزهای فایل را تغییر میدهد. |
| chown | مالک و گروه فایل را تغییر میدهد. |
وارد کردن دستور زیر در سرور اوبونتو برای ایجاد یک کاربر مدیر غیر ریشه (non-root admin user):
sudo adduser newuser
برای تعیین گذرواژه و جزئیات کاربری اختیاری، دستورالعملها را دنبال کنید.

سپس، کاربر جدید را به گروه sudo اضافه کنید:
sudo usermod -aG sudo newuser
این به کاربر امتیازات مدیریتی میدهد در حالی که دسترسی روت غیرفعال میماند.
برای تغییر مجوزهای فایل از دستور chmod استفاده کنید:
sudo chmod 755 filename
«سطح دسترسی ۷۵۵ به مالک اجازه دسترسی کامل (خواندن/نوشتن/اجرا) میدهد و به گروه و دیگران فقط اجازه خواندن/اجرا کردن میدهد.
دستور chown مالک و گروه فایل را تغییر میدهد:»
sudo chown newuser:newuser filename
این newuser را هم به عنوان مالک فایل و هم به عنوان مالک گروه تنظیم میکند.
نصب و مدیریت بستههای نرمافزاری
یک بسته، یک آرشیو فشرده است که شامل تمام دادهها و وابستگیهای لازم برای نصب یک برنامه نرمافزاری کامل است. این روش استاندارد توزیع نرمافزار در سیستمهای مبتنی بر لینوکس است.
توزیعهای لینوکس از مدیران بسته برای نصب، حذف و بهروزرسانی بستههای نرمافزاری استفاده میکنند. این ابزارها به طور خودکار وابستگیها را حل میکنند و مخازن بسته را برای حفظ سازگاری بهروز میکنند.
هر توزیع، مدیر بسته پیشفرض خود را دارد:
| توزیع | مدیر بسته | دستورات مثال |
|---|---|---|
| Ubuntu/Debian | APT | sudo apt install nginx |
| RHEL/Fedora | DNF | sudo dnf install nginx |
| Arch Linux | Pacman | sudo pacman -S nginx |
| openSUSE | Zypper | sudo zypper install nginx |
| Alpine Linux | apk | sudo apk add nginx |
هنگام استفاده از یک مدیر بسته برای نصب نرمافزار جدید، توصیه میشود ابتدا لیست بستهها را بهروزرسانی کرده و بستههای موجود را ارتقا دهید.
sudo apt update && sudo apt upgrade -y
این تضمین میکند که سیستم شما همیشه با آخرین نسخههای نرمافزاری موجود کار میکند.
یکی از مزایای کلیدی یک مدیر بسته این است که میتوانید چندین ابزار یا حتی کل پشتههای نرمافزاری را با یک فرمان نصب کنید:
سرور وب (پشته LAMP):
sudo apt update && sudo apt install apache2 mysql-server php libapache2-mod-php php-mysql ufw -y
میزبان داکر:
sudo apt update && sudo apt install docker.io docker-compose git curl -y
ایستگاه کاری توسعهدهندگان:
sudo apt update && sudo apt install build-essential git curl vim python3 python3-pip -y
این راهاندازیها کاملاً قابل تنظیم هستند و مدیران بسته، افزودن بستههای جدید، ابزارها یا زمان اجرای زبان را آسان میکنند، در حالی که همه چیز با محیط موجود شما سازگار باقی میماند.
نظارت و مدیریت سرور
مدیران سیستم باید به طور مداوم معیارهای کلیدی سرور را نظارت کنند. این شامل استفاده از حافظه، بار CPU، فعالیت هارد دیسک، عملکرد برنامه و ترافیک شبکه برای موارد زیر است:
- شناسایی تنگناهای عملکرد.
- جلوگیری از قطعیهای غیرمنتظره.
- شناسایی رفتار غیرعادی یا نفوذهای امنیتی احتمالی.
- برنامهریزی برای مقیاسبندی منابع آینده و مدیریت ظرفیت.
ابزارهای محبوب برای نظارت و مدیریت سیستم عبارتند از:
| ابزار | هدف | موجود در | روش نصب |
|---|---|---|---|
| top | Real-time CPU/memory usage | All Linux systems | Preinstalled |
| htop | Enhanced top with color & UI | Debian, Ubuntu, Fedora, Arch | apt, dnf, pacman |
| glances | All-in-one system overview | Most major distros | Python-based (apt, dnf, pip) |
| vmstat | Memory and process statistics | All Linux systems | Usually preinstalled |
| iostat | CPU and I/O device stats | Most distros (via sysstat) | apt install sysstat |
| ss | Socket statistics (modern netstat) | All modern Linux systems | Preinstalled |
| dstat | Combined CPU, disk, and network usage | Debian, RHEL | apt, dnf |
| Netdata | Web-based real-time dashboard | All major Linux systems | Shell script installer or packages |
| Nagios | Enterprise-grade alerting and metrics | Debian, RHEL, SUSE | Manual install, package managers |
| Prometheus+Grafana | Metrics+Visualization | Cloud/server monitoring stacks | Manual or automated (Docker/K8s) |
یک ابزار سبک و مبتنی بر ترمینال مانند htop برای عیبیابی سریع سیستم ایدهآل است. در اوبونتو سرور و بسیاری دیگر از توزیعهای لینوکس، htop اغلب به صورت پیشفرض نصب شده است.
میتوانید این ابزار را مستقیماً با استفاده از دستور زیر در ترمینال اجرا کنید:
htop
نمایشگر تعاملی، میزان مصرف بیدرنگ CPU، فرایند و حافظه را نمایش میدهد.

وقتی آماده شدید، برای خروج از htop و بازگشت به ترمینال، کلید q را فشار دهید. برای یک داشبورد تعاملی و بیدرنگ جهت نظارت بر عملکرد سرور لینوکس، به ابزارهای مدرن مانند Prometheus/Grafana یا Netdata نگاه کنید.
پیکربندیهای اضافی سرور لینوکس (اختیاری)
سرور اوبونتو ۲۴٫۰۴ شما امن، بهروز و آماده برای نقشهای خاص کاری مانند میزبانی وب، کانتینرها یا سرویسهای پایگاه داده است.
نحوه راهاندازی یک وب سرور
برای تبدیل سرور لینوکس خود به یک وب سرور، باید اجزای اصلی زیر را نصب و پیکربندی کنید:
- وب سرور. به درخواستهای HTTP/HTTPS گوش میدهد و محتوای وب ایستا و پویا را ارائه میکند. راهحلهای محبوب وب سرور شامل Apache، NGINX و Lighttpd هستند.
- محیط زمان اجرا برنامه (Application Runtime). کد سمت سرور را برای محتوای پویا اجرا میکند. مثالها شامل PHP، PHP-FPM، Node.js و Python هستند.
- سرور پایگاه داده. دادههای ساختاریافته برنامه، مانند محتوا، حسابهای کاربری و تنظیمات را ذخیره و بازیابی میکند. سرورهای پایگاه داده رایج شامل MariaDB، MySQL، PostgreSQL و SQLite هستند.
- ابزارهای SSL/TLS. ترافیک وب را با فعال کردن HTTPS از طریق گواهیهای دیجیتال SSL ایمن میکنند. ابزارهایی مانند Certbot (Let’s Encrypt) و OpenSSL معمولاً برای مدیریت این گواهیها در سیستمهای لینوکس استفاده میشوند.
بسته به معماری برنامه و محیط زمان اجرا، میتوانید پشتههای فناوری مختلفی را نصب کنید. برای مثال:
| Stack | Web Server | Runtime | Database | Frontend | Use Case |
|---|---|---|---|---|---|
| LAMP | Apache | PHP (mod_php) | MySQL / MariaDB | HTML/CSS/JS | برنامههای کلاسیک PHP، یک سیستم مدیریت محتوا مانند وردپرس. |
| LEMP | NGINX | PHP-FPM | MySQL / MariaDB | HTML/CSS/JS | برنامههای PHP کارآمد با همزمانی بالا |
| MEAN | NGINX/Node | Node.js + Express | MongoDB | Angular | Full JavaScript stack, SPAs |
| MERN | NGINX/Node | Node.js + Express | MongoDB | React | پشته کامل JS با رابط کاربری React |
| JumpStack | NGINX/Apache | PHP, Markdown tools | None or SQLite | HTML/CSS/JS | سایتهای محتوای استاتیک/دینامیک سبک |
نصب وب سرور
این بخش یک نمای کلی با دستورات مخصوص اوبونتو را برای راهاندازی یک پشته LAMP پایه ارائه میدهد. برای نصب آپاچی، ماریادیبی، پیاچپی و سرتبات از دستور زیر استفاده کنید:
sudo apt update && sudo apt install apache2 mariadb-server php libapache2-mod-php php-mysql certbot python3-certbot-apache -y
پس از نصب مؤلفههای اصلی، باید هر یک را پیکربندی کنید تا یک وب سرور امن و کاربردی ایجاد شود.
پیکربندی وب سرور
مراحل زیر را برای پیکربندی وب سرور آپاچی تکمیل کنید.
مرحله ۱: پیکربندی فایروال
از ابزار UFW برای اجازه دادن به ترافیک وب به آپاچی استفاده کنید:
sudo ufw allow 'Apache Full'
این دستور دسترسی HTTP (پورت ۸۰) و HTTPS (پورت ۴۴۳) را به وب سرور آپاچی فعال میکند.

بررسی تغییرات با بررسی وضعیت UFW:
sudo ufw status

Step 2: پایگاه داده را ایمن کنید
اسکریپت نصب امن را برای تقویت MariaDB (یا MySQL) اجرا کنید:
sudo mysql_secure_installation

پاسخ به درخواستها برای تنظیم رمز عبور روت، حذف پایگاههای داده آزمایشی و غیرفعال کردن ورود ریموت روت.
گام ۳: وبسایت خود را مستقر کنید
فایلهای خود را در ریشه وب پیشفرض آپاچی در مسیر /var/www/html/ قرار دهید:
sudo cp -r your_website/* /var/www/html/
مالکیت و مجوزهای صحیح را تنظیم کنید تا آپاچی بتواند فایلها را ارائه و مدیریت کند.
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html
اگر قصد دارید چندین دامنه را روی وب سرور میزبانی کنید، نحوه پیکربندی Virtual Hosts در اوبونتو را پیدا کنید.
مرحله ۴: فعال کردن HTTPS با Let’s Encrypt (توصیه میشود)
از Certbot برای نصب و پیکربندی خودکار گواهینامه SSL خود استفاده کنید:
sudo certbot --apache
برای دریافت گواهینامه SSL رایگان، دستورالعملهای تعاملی را دنبال کنید.
تست وب سرور
یک مرورگر وب را باز کرده و آدرس IP وب سرور را در نوار آدرس وارد کنید:
http://[local_server_ip]
IP-ادرس [local_server_ip] را با آدرس IP سرور خود جایگزین کنید. اگر از صحت آدرس IP مطمئن نیستید، از دستور زیر استفاده کنید:
hostname -I | awk '{print $1}'
خروجی، آدرس IP سرور شما را بازمیگرداند. مرورگر صفحه پیشفرض Apache2 را باز میکند.

اکنون یک وب سرور فعال روی دستگاه لینوکس خود دارید. از اینجا میتوانید سیستمهای مدیریت محتوا مانند وردپرس را نصب کنید، برنامههای وب سفارشی بسازید یا سایتهای استاتیک را میزبانی کنید.
نحوه راهاندازی سرور پایگاه داده
برای فراهم کردن یک سرور پایگاه داده اختصاصی روی سیستم لینوکس، باید یک موتور پایگاه داده را نصب و پیکربندی کنید. یک موتور پایگاه داده، دادههای ساختاریافته اپلیکیشن را ذخیره، بازیابی و مدیریت میکند.
موتورهای محبوب شامل MariaDB، MySQL، PostgreSQL و SQLite هستند. انواع مختلفی از پایگاههای داده برای مدیریت دادههای ساختاریافته، نیمهساختاریافته و غیرساختاریافته طراحی شدهاند. انتخاب موتور بستگی به نوع دادهای دارد که اپلیکیشن شما پردازش و ذخیره میکند.
نصب سرور پایگاه داده
دستور زیر را برای نصب آخرین نسخه سرور پایگاه داده MariaDB وارد کنید:
sudo apt update && sudo apt install mariadb-server -y
بعد از نصب MySQL، یک راهاندازی امنیتی اولیه را با اجرای اسکریپت mysql_secure_installation انجام دهید:
sudo mysql_secure_installation
سیستم از شما میخواهد که رمز عبور ریشه (root) را تنظیم کنید، ورود به عنوان ریشه را غیرفعال کنید و جداول و کاربران آزمایشی را حذف کنید.
پیکربندی سرور پایگاه داده
این مراحل اضافی را برای ایجاد یک سرور پایگاه داده کارآمد تکمیل کنید:
مرحله ۱: راهاندازی و فعالسازی MariaDB
دستور زیر MariaDB را فعال میکند و تضمین میکند که هر بار که سیستم راهاندازی مجدد میشود، به طور خودکار شروع به کار کند:
sudo systemctl enable --now mariadb
تأیید کنید که سرویس در حال اجرا است.
sudo systemctl status mariadb

مرحله ۲: ایجاد پایگاه داده و کاربر جدید
دسترسی به شل MariaDB:
sudo mariadb
در داخل پرامپت، دستورات SQL زیر را اجرا کنید:
CREATE DATABASE myapp_db;
CREATE USER 'youruser'@'localhost' IDENTIFIED BY 'yourpass';
GRANT ALL PRIVILEGES ON myapp_db.* TO 'youruser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
نام کاربری و رمز عبور دلخواه خود را جایگزین محلهای نگهداری youruser و yourpass کنید.
مرحله ۳: اجازه دسترسی از راه دور (اختیاری)
برای اجازه دادن به اتصالات خارجی، فایل /etc/mysql/mariadb.conf.d/50-server.cnf سرور را ویرایش کنید.
- فایل پیکربندی را باز کنید:
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
خط زیر را پیدا کنید:
bind-address = 127.0.0.1
تغییر خط به:
bind-address = 0.0.0.0

۴. برای ذخیره تغییرات و بستن فایل، CTRL+X را فشار دهید، سپس y و در ادامه Enter را بزنید.
۵. پورت ۳۳۰۶ را در UFW باز کنید:
sudo ufw allow 3306/tcp
۶٫سرویس MariaDB را راهاندازی مجدد کنید.
sudo systemctl restart mariadb
اطمینان حاصل کنید که دسترسی فقط به IPهای قابل اعتماد محدود شده باشد و از رمزهای عبور قوی یا SSL/TLS استفاده شود.
تست سرور پایگاه داده
برای تأیید عملکرد پایگاه داده، به عنوان root به آن دسترسی پیدا کنید:
sudo mysql -u root -p
برای بررسی اینکه آیا پایگاه داده و کاربر ایجاد شدهاند، تایپ کنید:
SHOW DATABASES;
SELECT User, Host FROM mysql.user;
برای آزمایش یک اتصال از راه دور (در صورت فعال بودن)، وارد کنید:
mysql -u youruser -p -h your_server_ip
“youruser” را با نام کاربری پایگاه داده خود و “your_server_ip” را با آدرس IP سرور خود جایگزین کنید.
اکنون یک سرور پایگاه داده کاملاً کاربردی دارید. برنامه ها و وب سرورها اکنون می توانند برای ذخیره و دسترسی به داده ها به آن متصل شوند.
نحوه استفاده و مدیریت سرور لینوکس
لینوکس طیف وسیعی از ابزارهای کاربرپسند را برای کمک به کاربران در تعامل و مدیریت سرورها دارد. بخش زیر ابزارها و دستورات پرکاربرد را معرفی می کند.
نحوه ورود به سرور لینوکس راه دور
رایج ترین راه برای دسترسی به سرور لینوکس راه دور از طریق SSH (Secure Shell) است.
مرحله ۱: نصب کلاینت و سرور SSH
برای استفاده از SSH، باید پکیج های لازم را هم روی دستگاه کلاینت و هم روی دستگاه سرور نصب کنید. OpenSSH که در بخش قبلی مورد بحث قرار گرفت، شامل هر دو مولفه کلاینت و سرور است.
- ماشین سرور (همانی که به آن متصل می شوید) به
openssh-serverنیاز دارد. - ماشین کلاینت (همانی که از آن متصل می شوید) به
openssh-clientنیاز دارد.
اگر OpenSSH نصب نشده است، از دستور مربوطه برای توزیع خود استفاده کنید:
| توزیع | دستور نصب کلاینت و سرور SSH |
|---|---|
| Debian/Ubuntu | sudo apt install openssh-client openssh-server |
| RHEL/Fedora | sudo dnf install openssh-clients openssh-server |
| Arch Linux | sudo pacman -S openssh |
| openSUSE | sudo zypper install openssh |
| Alpine Linux | sudo apk add openssh-client openssh |
خدمت SSH (sshd) پس از نصب به صورت خودکار شروع میشود. برای اطمینان از فعال بودن آن، دستور زیر را وارد کنید:
sudo systemctl status sshd
مرحله ۲: اتصال به سرور از راه دور از طریق SSH
پس از نصب و راهاندازی کلاینت و سرور SSH در هر دو دستگاه:
- با استفاده از دستور SSH یک اتصال امن از راه دور برقرار کنید:
ssh [username]@[host_ip_address]
نام کاربری [username] را با نام کاربری واقعی لینوکس خود و [host_ip_address] را با آدرس IP سرور راه دور جایگزین کنید. اگر نام کاربری در هر دو دستگاه یکسان است، میتوانید آن را از دستور حذف کنید:
ssh host_ip_address
۲٫ هنگامی که برای اولین بار به سرور متصل میشوید، پیام زیر ظاهر میشود:
The authenticity of host '192.168.1.10' can't be established.
ECDSA key fingerprint is SHA256:...
Are you sure you want to continue connecting (yes/no)?
۳٫ بله را تایپ کرده و Enter را فشار دهید تا به سرور اعتماد کنید و کلید آن را در سیستم محلی خود ذخیره کنید.
۴٫ هنگام درخواست، گذرواژه را وارد کنید (کاراکترها هنگام تایپ ظاهر نمیشوند) و Enter را فشار دهید.
نحوه انتقال فایل به/از سرور لینوکس
Rsync یک ابزار رایگان خط فرمان برای انتقال فایلها و دایرکتوریها هم به صورت محلی و هم بین سیستمهای محلی و از راه دور است. این ابزار به صورت پیشفرض روی اکثر توزیعهای مدرن لینوکس نصب شده است.
برای تأیید نصب یا نصب rsync، از دستور مربوط به توزیع خود استفاده کنید:
| توزیع | دستور نصب کلاینت و سرور SSH |
|---|---|
| Debian/Ubuntu | sudo apt install rsync |
| RHEL/Fedora | sudo dnf install rsync |
| Arch Linux | sudo pacman -S rsync |
| openSUSE | sudo zypper install rsync |
| Alpine Linux | sudo apk add rsync |
هنگام انجام انتقال داده از راه دور، باید آدرس میزبان راه دور را مشخص کنید. برای آپلود فایلها و دایرکتوریهای محلی در یک سرور راه دور، از دستور زیر استفاده کنید:
rsync [OPTION] [SOURCE] [USERNAME]@[HOSTNAME_OR_IP]:[DESTINATION]
شما همچنین میتوانید فایلها و دایرکتوریها را از یک سیستم راه دور به دستگاه محلی خود دانلود کنید.
rsync [OPTION] [USERNAME]@[HOSTNAME_OR_IP]:[SOURCE] [DESTINATION]
Rsync یک ابزار همگامسازی همهکاره است که میتوان آن را برای موارد استفاده خاص سفارشی کرد. گزینه -a حالت آرشیو را فعال میکند (که شامل حفظ لینکهای نمادین، مجوزها، مُهرهای زمانی و غیره میشود) و -v خروجی کامل (verbose) را فعال میکند.
نمونههای زیر رایجترین سناریوها را پوشش میدهند.
| توضیحات | دستور |
|---|---|
| یک فایل را به یک سرور راه دور آپلود کنید. | rsync -av /home/user/file.txt user@192.168.1.10:/home/user/remote/ |
| یک دایرکتوری را به یک سرور راه دور آپلود کنید. | rsync -av /home/user/project user@192.168.1.10:/home/user/remote/ |
| به عنوان یک کاربر دیگر آپلود کنید. | rsync -av /home/user/test_project test@192.168.1.10:/home/test/remote/ |
| چندین دایرکتوری محلی را آپلود کنید. | rsync -av /dir1 /dir2 user@192.168.1.10:/home/user/remote/ |
| دانلود یک فایل از یک سرور راه دور. | rsync -av user@192.168.1.10:/home/user/file.txt /home/user/local/ |
| دانلود یک دایرکتوری از یک سرور راه دور. | rsync -av user@192.168.1.10:/home/user/project /home/user/local/ |
| چندین دایرکتوری از راه دور را دانلود کنید. | rsync -av user@192.168.1.10:{/dir1,/dir2} /home/user/local/ |
| استفاده از rsync روی SSH | rsync -av -e ssh /home/user/file.txt user@192.168.1.10:/home/user/remote/ |
نحوه زمانبندی وظایف در سرور لینوکس
بهروزرسانی نرمافزار، ایجاد پشتیبان (بکاپ) یا پاک کردن کش (حافظه پنهان)، از جمله کارهای ضروری مدیریت سرور هستند. لینوکس یک ابزار داخلی برای خودکارسازی این وظایف به نام “کرون” (cron) ارائه میدهد.
ابزار کرون فایل کرونتب (crontab یا جدول کرون) را میخواند و دستورات یا اسکریپتهای زمانبندی شده را در زمانها و فواصل مشخص اجرا میکند. یک خط کار کرون در فایل کرونتب باید از این فرمت پیروی کند:
MIN HOUR DOM MON DOW CMD
| فیلد | توضیحات | مقدار مثال |
|---|---|---|
| MIN | Minute (0–۵۹) | ۰ |
| HOUR | Hour (0–۲۳) | ۹ |
| DOM | Day of Month (1–۳۱) | ۱ |
| MON | Month (1–۱۲) | ۱ (January) |
| DOW | Day of Week (0–۷, Sun=0) | * (any day) |
| CMD | Command or script to run (script must be executable) | /path/to/script.sh |
برای مثال، خط زیر Cron را وادار میکند که یک اسکریپت را در تاریخ ۱ ژانویه در ساعت ۹ صبح اجرا کند:
۰ ۹ ۱ ۱ * /path/to/your_script.sh
علامت ستاره (*) در فیلد DOW به Cron دستور میدهد که کار را بدون در نظر گرفتن روز هفته اجرا کند. برای توضیح دقیقتر درباره حروف عام (wildcard) و شیوه زمانبندی، به راهنمای کامل ما در مورد عبارات cron مراجعه کنید.
سایر مثالها از کارهای cron عبارتند از:
| وظیفه | برنامه | خط Crontab |
|---|---|---|
| هر روز ساعت ۲ بامداد یک اسکریپت پشتیبانگیری اجرا کنید | Daily | 0 2 * * * /home/user/scripts/backup.sh |
| هر یکشنبه شب فایلهای موقت را پاک کنید | Weekly | 0 23 * * 0 rm -rf /tmp/* |
| بهروزرسانی سیستم را در اول هر ماه اجرا کنید | Monthly | 0 4 1 * * apt update && apt upgrade -y |
برای مشاهده کرون جابهای زمانبندیشده کاربر فعلی، وارد کنید:
crontab -l
ویرایش فایل Crontab
crontab -e
این دستور کرونتب را در ویرایشگر متن پیشفرض سیستم باز میکند، جایی که میتوانید وظایف زمانبندیشده را اضافه، حذف یا تغییر دهید.
برای حذف کرونتب و تمام کارهای زمانبندیشده خود، وارد کنید:
crontab -r
این دستور را با احتیاط استفاده کنید زیرا تمام وظایف cron را برای کاربر فعلی به طور دائم حذف میکند.
میتوانید cron را با ابزارهای مدیریت نشست مانند Byobu ترکیب کنید تا گزارشها را نظارت کنید یا خروجی اسکریپت را به صورت بیدرنگ مشاهده کنید.
نحوه مدیریت نشستهای ترمینال در لینوکس
مدیران اغلب نیاز دارند که چندین نشست ترمینال را از طریق یک رابط واحد مدیریت کنند. این امر به ویژه برای مدیریت سرور، اسکریپتنویسی یا کار با اتصالات SSH مفید است. اگر نشست قطع شود یا نیاز به دور شدن داشته باشید، وظایف در پسزمینه به کار خود ادامه میدهند.
چندپخشکنندههای ترمینال مانند Byobu، tmux و screen به شما امکان میدهند:
| Function | Byobu | tmux | screen |
|---|---|---|---|
| یک جلسه را شروع کنید. | byobu | tmux | screen |
| یک جلسه را جدا کنید. | Ctrl+A, then D (or byobu detach) | Ctrl+B, then D | Ctrl+A, then D |
| یک جلسه را دوباره وصل کنید. | byobu attach | tmux attach | screen -r |
| یک پنجره جدید ایجاد کنید. | Ctrl+A, then C | Ctrl+B, then C | Ctrl+A, then C |
| پنجره بعدی. | Ctrl+A, then N | Ctrl+B, then N | Ctrl+A, then N |
| پنجره قبلی. | Ctrl+A, then P | Ctrl+B, then P | Ctrl+A, then P |
| تقسیم افقی. | Ctrl+A, then Shift+S | Ctrl+B, then “ (double quote) | No built-in split support |
| تقسیم عمودی. | Ctrl+A, then ` (backtick) | ` (backtick) | Ctrl+B, then % |
| بین پنلها جابجا شوید. | Ctrl+A, then arrow keys | Ctrl+B, then arrow keys | Not applicable |
| پنجره/صفحه فعلی را ببندید. | exit | exit or Ctrl+D | exit or Ctrl+D |
Byobu به صورت پیشفرض روی اوبونتو سرور نصب شده است. این ابزار بر پایه tmux یا screen ساخته شده و رابط کاربری کمی کاربرپسندتر ارائه میدهد.
این یک انتخاب خوب برای مبتدیان است، زیرا کلیدهای میانبر آن تا حدودی سادهتر از دو مالتیپلکسر دیگر هستند.
دستورات پایه لینوکس
برخی از اولین دستورات لینوکس که شروع به استفاده از آنها خواهید کرد عبارتند از:
| دستور | توضیحات |
|---|---|
| ls | فهرست کردن فایلها و دایرکتوریها در مکان فعلی. |
| cd | دایرکتوری فعلی را تغییر دهید. |
| pwd | دایرکتوری کاری فعلی را چاپ میکند. |
| cp | کپی کردن فایلها یا دایرکتوریها. |
| mv | انتقال یا تغییر نام یک فایل یا دایرکتوری. |
| rm | فایلها یا دایرکتوریها را حذف کنید. |
| mkdir | یک دایرکتوری جدید ایجاد کنید. |
| touch | یک فایل خالی ایجاد کنید یا مهر زمانی را بهروزرسانی کنید. |
| cat | نمایش محتوای یک فایل. |
| less | محتوای فایل را به صورت صفحه به صفحه مشاهده کنید. |
| head | نمایش چند خط اول یک فایل |
| tail | نمایش چند خط آخر یک فایل |
| echo | متن یا متغیرها را در ترمینال چاپ میکند. |
| grep | جستجوی الگوها در متن. |
| find | جستجوی فایلها و دایرکتوریها به صورت بازگشتی. |
| chmod | مجوزهای فایل یا دایرکتوری را تغییر دهید. |
| chown | تغییر مالکیت فایل یا دایرکتوری |
| df | نمایش فضای استفاده شده دیسک |
| du | نمایش حجم فایل/دایرکتوری |
| top | مشاهدهی لحظهای فرآیندهای سیستم و میزان استفاده از منابع. |
| htop | نسخه بهبود یافته تاپ با رابط کاربری آسان |
| ps | فهرست کردن فرآیندهای در حال اجرا. |
| kill | ارسال سیگنال به یک فرآیند (اغلب برای خاتمه دادن به آن). |
| sudo | یک دستور را با امتیازات superuser (admin) اجرا کنید. |
| apt | مدیریت بستهها در سیستمهای مبتنی بر دبیان |
| dnf | مدیریت بستهها در سیستمهای RHEL/Fedora |
| pacman | مدیریت بستهها در سیستمهای مبتنی بر آرچ. |
| wget | فایلها را از اینترنت دانلود کنید. |
| curl | انتقال دادهها به/از URLها (پشتیبانی از چندین پروتکل). |
| man | نمایش دفترچه راهنمای یک دستور. |
| history | نمایش دستورات اجرا شده قبلی |
نتیجهگیری
شما یک سرور لینوکس را نصب و راهاندازی کردهاید و رایجترین دستورات لینوکس را برای مدیریت فایلها، کاربران، نرمافزارها و خود سیستم یاد گرفتهاید.






