- LoopX
- واژهنامهی DevOps: اصطلاحات لینوکس، Git، داکر و Nginx
واژهنامهی DevOps: اصطلاحات لینوکس، Git، داکر و Nginx
۸۷ اصطلاح پرکاربرد لینوکس، Bash، Git، داکر و Nginx، هر کدام با توضیح کوتاه فارسی. برای توضیح کامل و مثالهای اجراشده، روی لینک درس زیر هر اصطلاح بزن.
لینوکس و شل
- Kernelکرنل، هسته
هستهی سیستمعامل. بین برنامهها و سختافزار مینشیند و حافظه، پردازنده، فایلها و دستگاهها را مدیریت میکند. «لینوکس» در اصل اسم همین کرنل است.
درس: لینوکس چیست؟ (لینوکس از صفر)- Distributionتوزیع (distro)
کرنل لینوکس بههمراه ابزارها، مدیر بسته و تنظیمات پیشفرض که با هم یک سیستمعامل کامل میسازند؛ مثل Ubuntu، Debian و Fedora.
درس: لینوکس چیست؟ (لینوکس از صفر)- Shellشل
برنامهای که دستورهای تو را میخواند، تفسیر میکند و اجرا میکند؛ مثل bash و zsh. ترمینال فقط پنجرهای است که شل داخلش اجرا میشود.
درس: ترمینال و shell (لینوکس از صفر)- Terminalترمینال
پنجرهی متنی که ورودی تو را به شل میدهد و خروجی دستورها را نشان میدهد.
درس: ترمینال و shell (لینوکس از صفر)- Rootکاربر ریشه
کاربر مدیر سیستم با شناسهی 0 که به همهچیز دسترسی دارد. کار روزمره با root خطرناک است؛ برای همین از sudo استفاده میکنیم.
درس: root و sudo (لینوکس از صفر)- sudoسودو
اجرای یک دستور با دسترسی کاربر دیگر (معمولاً root)، با رمز خود کاربر و ثبت در لاگ سیستم.
درس: root و sudo (لینوکس از صفر)- Permissionدسترسی (مجوز)
تعیین میکند مالک فایل، گروهش و بقیهی کاربرها کدام کار را میتوانند انجام بدهند: خواندن (r)، نوشتن (w) و اجرا (x). با chmod عوض میشود.
درس: دسترسیها: خواندن، نوشتن، اجرا (لینوکس از صفر)- Processپروسه (فرایند)
برنامهای که در حال اجراست، با شناسهی یکتا (PID)، حافظه و وضعیت خودش. یک برنامه میتواند چند پروسه داشته باشد.
درس: پروسهها (لینوکس از صفر)- Signalسیگنال
پیامی که به پروسه فرستاده میشود؛ مثل SIGTERM برای خاتمهی مرتب و SIGKILL برای کشتن فوری. دستور kill سیگنال میفرستد.
درس: پروسهها (لینوکس از صفر)- systemdسیستمدی
اولین پروسهی سیستم (PID 1) در بیشتر توزیعها که سرویسها را روشن، خاموش و در صورت از کار افتادن دوباره اجرا میکند. با systemctl کنترل میشود.
درس: سرویسها با systemd (لینوکس از صفر)- Serviceسرویس (daemon)
برنامهای که در پسزمینه اجرا میماند و منتظر کار است، مثل سرور SSH یا nginx. در systemd هر سرویس یک فایل unit دارد.
درس: سرویسها با systemd (لینوکس از صفر)- Package managerمدیر بسته
ابزاری که نرمافزار را از مخزنهای رسمی نصب، بهروز و حذف میکند و وابستگیها را خودش حل میکند؛ مثل apt در Ubuntu.
درس: نصب برنامه با apt (لینوکس از صفر)- Environment variableمتغیر محیطی
متغیری که پروسه از والدش به ارث میبرد، مثل HOME و PATH. برنامهها تنظیماتشان را معمولاً از همین متغیرها میخوانند.
درس: متغیرهای محیطی و تنظیمات shell (لینوکس از صفر)- PATHمسیر جستجوی دستورها
متغیر محیطی شامل فهرست پوشههایی که شل برای پیدا کردن فایل اجرایی یک دستور به ترتیب میگردد.
درس: متغیرهای محیطی و تنظیمات shell (لینوکس از صفر)- stdin / stdout / stderrورودی و خروجی استاندارد
سه جریان پیشفرض هر پروسه: ورودی (0)، خروجی عادی (1) و خروجی خطا (2). جدا بودن خروجی خطا اجازه میدهد خطاها را جدا ذخیره کنی.
درس: ورودی، خروجی و redirect (لینوکس از صفر)- Redirectionتغییر مسیر
فرستادن خروجی یا ورودی دستور به فایل بهجای صفحه با علامتهایی مثل > و >> و 2> و <.
درس: ورودی، خروجی و redirect (لینوکس از صفر)- Pipeپایپ
علامت | خروجی یک دستور را مستقیم ورودی دستور بعدی میکند تا دستورهای کوچک را مثل لوله به هم وصل کنی.
درس: pipe و ترکیب دستورها (لینوکس از صفر)- Regular expressionعبارت باقاعده (regex)
زبان کوچکی برای توصیف الگوی متن، مثل «خطهایی که با عدد شروع میشوند». در grep، sed و awk زیاد به کار میرود.
درس: جستجو با grep و regex (لینوکس از صفر)- Symbolic linkلینک نمادین (symlink)
فایل کوچکی که به مسیر فایل یا پوشهی دیگری اشاره میکند؛ شبیه میانبر. اگر مقصد پاک شود، لینک «شکسته» میماند.
درس: لینکها: hard link و symbolic link (لینوکس از صفر)- Hard linkلینک سخت
یک اسم دیگر برای همان دادهی فایل (همان inode). تا وقتی یکی از اسمها باقی است، داده پاک نمیشود.
درس: لینکها: hard link و symbolic link (لینوکس از صفر)- inodeآینود
ساختاری در فایلسیستم که اطلاعات فایل را نگه میدارد: مالک، دسترسی، اندازه و جای داده روی دیسک. اسم فایل فقط به inode اشاره میکند.
درس: لینکها: hard link و symbolic link (لینوکس از صفر)- cronکران
سرویسی که دستورها را در زمانهای مشخص و تکراری اجرا میکند؛ مثل بکاپ هر شب ساعت ۲. زمانبندی در crontab نوشته میشود.
درس: زمانبندی کارها با cron (لینوکس از صفر)- SSHاساساچ
پروتکل اتصال امن و رمزنگاریشده به خط فرمان سرور از راه دور. انتقال فایل با scp و rsync هم روی همین بستر انجام میشود.
درس: SSH و کار با سرور از راه دور (لینوکس از صفر)- SSH keyکلید SSH
یک جفت کلید عمومی و خصوصی برای ورود بدون رمز. کلید عمومی روی سرور مینشیند و کلید خصوصی هیچوقت از سیستم خودت بیرون نمیرود.
درس: SSH و کار با سرور از راه دور (لینوکس از صفر)- Portپورت
عددی بین 0 تا 65535 که مشخص میکند دادهی شبکه به کدام برنامه برسد؛ مثلاً وب روی 80 و 443 و SSH روی 22.
درس: پورتها و سرویسهای شبکه (لینوکس از صفر)- Firewallفایروال (دیوار آتش)
قاعدههایی که تعیین میکنند کدام اتصال شبکه به سرور اجازه دارد و کدام رد شود. در Ubuntu سادهترین ابزارش ufw است.
درس: فایروال با ufw (لینوکس از صفر)- Logلاگ
رکوردهای زماندار از اتفاقهایی که در سیستم و برنامهها افتاده؛ اولین جایی که برای پیدا کردن علت خطا سراغش میروی.
درس: لاگها و عیبیابی (لینوکس از صفر)
اسکریپتنویسی Bash
- Shebangشبنگ
خط اول اسکریپت که با #! شروع میشود و به کرنل میگوید فایل را با کدام مفسر اجرا کند؛ مثل #!/usr/bin/env bash.
درس: اولین اسکریپت (اسکریپتنویسی Bash)- Exit codeکد خروج
عددی که هر دستور در پایان برمیگرداند: 0 یعنی موفق و هر عدد دیگر یعنی خطا. در $? ذخیره میشود و if بر اساس همین تصمیم میگیرد.
درس: شرطها (اسکریپتنویسی Bash)- Quotingکوتیشنگذاری
گذاشتن متغیر داخل گیومه ("$var") تا شل مقدارش را در فاصلهها نشکند و * را گسترش ندهد. بیشتر باگهای اسکریپت از نبودن کوتیشن است.
درس: متغیرها و نقلقول (اسکریپتنویسی Bash)- Positional parametersآرگومانهای موقعیتی
آرگومانهایی که به اسکریپت داده شده: $1، $2 و ... ؛ "$@" همهی آنها را جدا و سالم نگه میدارد و $# تعدادشان است.
درس: ورودی و آرگومانها (اسکریپتنویسی Bash)- Functionتابع
تکهکد نامداری که چند بار صدا زده میشود. در Bash متغیرها پیشفرض سراسریاند و داخل تابع باید local تعریف شوند.
درس: تابعها (اسکریپتنویسی Bash)- Arrayآرایه
متغیری که چند مقدار را با شماره نگه میدارد. آرایهی انجمنی (declare -A) بهجای شماره، کلید متنی دارد.
درس: آرایهها (اسکریپتنویسی Bash)- Parameter expansionگسترش پارامتر
شکلهای ${...} برای کار با مقدار متغیر بدون ابزار بیرونی: مقدار پیشفرض، بریدن پسوند، جایگزینی و طول رشته.
درس: کار با رشتهها (اسکریپتنویسی Bash)- Here documentهیر داک (heredoc)
نوشتن چند خط متن بهعنوان ورودی دستور با <<EOF؛ برای ساختن فایلهای تنظیمات داخل اسکریپت. <<'EOF' متغیرها را باز نمیکند.
درس: here-doc و پردازش متن در اسکریپت (اسکریپتنویسی Bash)- trapتله (trap)
تعیین دستوری که هنگام خروج اسکریپت یا رسیدن سیگنال اجرا شود؛ معمولاً برای پاک کردن فایلهای موقت حتی وقتی اسکریپت خطا میدهد.
درس: مدیریت خطا (اسکریپتنویسی Bash)- Strict modeحالت سختگیر (set -euo pipefail)
ترکیب set -e (توقف با اولین خطا)، set -u (خطا برای متغیر تعریفنشده) و pipefail (خطای وسط پایپ) تا اسکریپت بیصدا ادامه ندهد.
درس: مدیریت خطا (اسکریپتنویسی Bash)- getoptsگتآپتس
دستور داخلی Bash برای خواندن گزینههایی مثل -v و -o file، تا اسکریپت مثل ابزارهای واقعی فلگ بپذیرد.
درس: گزینههای خط فرمان با getopts (اسکریپتنویسی Bash)
Git و GitHub
- Version controlکنترل نسخه
ثبت تاریخچهی تغییرهای فایلها تا بتوانی به هر نسخه برگردی، ببینی چه کسی چه چیزی را عوض کرده و با دیگران همزمان کار کنی.
درس: Git چیست؟ (Git و GitHub)- Repositoryمخزن (repo)
پوشهای که Git تاریخچهاش را در زیرپوشهی .git نگه میدارد. با git init ساخته یا با git clone کپی میشود.
درس: اولین مخزن و commit (Git و GitHub)- Staging areaناحیهی آمادهسازی (index)
جایی بین پوشهی کار و تاریخچه که با git add پر میشود. فقط چیزهایی که آنجا هستند در commit بعدی ثبت میشوند.
درس: اولین مخزن و commit (Git و GitHub)- Commitکامیت
یک عکس فوری از وضعیت پروژه با پیام، نویسنده، تاریخ و شناسهی یکتا (hash). تاریخچهی Git زنجیرهای از کامیتهاست.
درس: اولین مخزن و commit (Git و GitHub)- Branchشاخه
یک اشارهگر سبک به یک کامیت که با هر کامیت جدید جلو میرود؛ برای کار روی یک ویژگی بدون دست زدن به شاخهی اصلی.
درس: branch و merge (Git و GitHub)- HEADهد
اشارهگری که نشان میدهد الان روی کدام شاخه یا کامیت هستی. کامیت جدید همیشه بعد از HEAD ساخته میشود.
درس: branch و merge (Git و GitHub)- Mergeادغام
آوردن تغییرهای یک شاخه به شاخهی دیگر. اگر شاخهها از هم جدا شده باشند، یک کامیت ادغام ساخته میشود.
درس: branch و merge (Git و GitHub)- Merge conflictتعارض ادغام
وقتی دو شاخه همان خطها را جور دیگری عوض کردهاند و Git نمیتواند خودش انتخاب کند؛ باید فایل را دستی درست کنی.
درس: حل conflict (Git و GitHub)- Rebaseریبیس
جابهجا کردن کامیتهای یک شاخه روی سر شاخهی دیگر تا تاریخچه خطی بماند. کامیتها از نو ساخته میشوند؛ پس روی شاخهی مشترک خطرناک است.
درس: rebase (Git و GitHub)- Remoteمخزن راه دور
نسخهای از مخزن روی سرور دیگر، مثل GitHub. اسم پیشفرضش origin است.
درس: مخزن راه دور (Git و GitHub)- Push / Pull / Fetchپوش، پول و فچ
push کامیتهای تو را به remote میفرستد. fetch کامیتهای جدید را فقط دانلود میکند و pull دانلود و ادغام را با هم انجام میدهد.
درس: مخزن راه دور (Git و GitHub)- Pull requestپول ریکوئست (PR)
درخواست ادغام یک شاخه در GitHub، همراه با بررسی کد، گفتوگو و اجرای تستها قبل از ادغام.
درس: Pull Request و بازبینی کد (Git و GitHub)- Stashاستش
کنار گذاشتن موقت تغییرهای کامیتنشده تا بتوانی کار دیگری بکنی و بعد آنها را برگردانی.
درس: stash (Git و GitHub)- Tagتگ
اسم ثابت برای یک کامیت مهم، معمولاً شمارهی نسخه مثل v1.2.0. برخلاف شاخه، تگ جابهجا نمیشود.
درس: tag و نسخهگذاری (Git و GitHub)- .gitignoreفایل نادیدهگیری
فهرست الگوی فایلهایی که Git نباید دنبالشان کند؛ مثل node_modules، فایلهای build و فایل .env حاوی رمز.
درس: فایل .gitignore (Git و GitHub)- reflogتاریخچهی جابهجاییها
دفترچهی محلی همهی جابهجاییهای HEAD؛ راه نجات کامیتهایی که با reset یا rebase «گم» شدهاند.
درس: نجات و ابزارهای پیشرفته (Git و GitHub)- GitHub Actionsگیتهاب اکشنز (CI/CD)
سرویس اجرای خودکار کارها روی GitHub، مثل تست و build با هر push، که در فایلهای workflow در .github/workflows تعریف میشود.
درس: GitHub Actions (Git و GitHub)
داکر
- Containerکانتینر
یک پروسهی ایزوله که فایلسیستم، شبکه و فهرست پروسههای جدا دارد ولی کرنل میزبان را به اشتراک میگذارد. سبکتر و سریعتر از ماشین مجازی است.
درس: داکر چیست؟ (داکر از صفر تا حرفهای)- Virtual machineماشین مجازی (VM)
یک کامپیوتر کامل شبیهسازیشده با سیستمعامل و کرنل خودش که روی hypervisor اجرا میشود. ایزولهتر از کانتینر است ولی سنگینتر.
درس: کانتینر در برابر ماشین مجازی (داکر از صفر تا حرفهای)- Imageایمیج
قالب فقطخواندنی کانتینر شامل فایلها، کتابخانهها و تنظیمات اجرا. از یک ایمیج میشود هر تعداد کانتینر ساخت.
درس: image و container (داکر از صفر تا حرفهای)- Dockerfileداکرفایل
فایل متنی شامل دستورهایی مثل FROM، COPY و RUN که قدمبهقدم ساختن ایمیج را توصیف میکند.
درس: اولین Dockerfile (داکر از صفر تا حرفهای)- Layerلایه
هر دستور Dockerfile یک لایهی فقطخواندنی میسازد. لایهها بین ایمیجها مشترکاند و اگر عوض نشده باشند، از کش دوباره استفاده میشوند.
درس: لایهها و کش (داکر از صفر تا حرفهای)- Docker daemonسرویس داکر (dockerd)
سرویس پسزمینهای که واقعاً ایمیج میسازد و کانتینر اجرا میکند. دستور docker فقط درخواست را از طریق API به آن میفرستد.
درس: معماری داکر (داکر از صفر تا حرفهای)- Registryرجیستری
سروری که ایمیجها را نگه میدارد و با push و pull جابهجا میکند؛ مثل Docker Hub یا رجیستری خصوصی شرکت.
درس: image و container (داکر از صفر تا حرفهای)- Registry mirrorمیرور رجیستری
سروری که ایمیجهای Docker Hub را کش میکند. در ایران برای دور زدن محدودیت دانلود، داکر را طوری تنظیم میکنیم که از میرور pull کند.
درس: تنظیم میرور برای دانلود image در ایران (داکر از صفر تا حرفهای)- Volumeوالیوم
فضای ذخیرهسازی ماندگار که داکر مدیریتش میکند. با پاک شدن کانتینر از بین نمیرود؛ جای مناسب دادهی دیتابیس.
درس: volume و bind mount (داکر از صفر تا حرفهای)- Bind mountاتصال پوشه
وصل کردن مستقیم یک پوشهی سیستم میزبان به داخل کانتینر؛ برای اینکه تغییر کد بدون build دوباره در کانتینر دیده شود.
درس: volume و bind mount (داکر از صفر تا حرفهای)- Port publishingانتشار پورت
وصل کردن پورت میزبان به پورت کانتینر با -p 8080:80 تا سرویس داخل کانتینر از بیرون در دسترس باشد.
درس: پورتها (داکر از صفر تا حرفهای)- Docker networkشبکهی داکر
شبکهی مجازی بین کانتینرها. کانتینرهای یک شبکهی ساختهشده توسط کاربر، همدیگر را با اسم پیدا میکنند.
درس: شبکه در داکر (داکر از صفر تا حرفهای)- Docker Composeداکر کامپوز
ابزار تعریف و اجرای برنامهی چندکانتینری در یک فایل YAML؛ کل سرویسها، شبکهها و والیومها با docker compose up بالا میآیند.
درس: معرفی Docker Compose (داکر از صفر تا حرفهای)- ENTRYPOINT / CMDنقطهی ورود و دستور پیشفرض
ENTRYPOINT برنامهی ثابت کانتینر را تعیین میکند و CMD آرگومانهای پیشفرضش را که موقع اجرا میشود عوضشان کرد.
درس: CMD در برابر ENTRYPOINT (داکر از صفر تا حرفهای)- Multi-stage buildbuild چندمرحلهای
چند FROM در یک Dockerfile: ابزارهای build در مرحلهی اول میمانند و فقط خروجی نهایی به ایمیج کوچک آخر کپی میشود.
درس: multi-stage build (داکر از صفر تا حرفهای)- .dockerignoreفایل نادیدهگیری داکر
فهرست فایلهایی که نباید به build context فرستاده شوند، مثل node_modules و .git؛ build سریعتر و ایمیج امنتر میشود.
درس: فایل .dockerignore (داکر از صفر تا حرفهای)- Healthcheckبررسی سلامت
دستوری که داکر مرتب اجرا میکند تا بفهمد برنامهی داخل کانتینر واقعاً کار میکند، نه فقط اینکه پروسه زنده است.
درس: healthcheck و ترتیب اجرا (داکر از صفر تا حرفهای)- cgroupsگروههای کنترلی
قابلیت کرنل لینوکس برای محدود کردن مصرف CPU و حافظهی گروهی از پروسهها؛ پایهی گزینههایی مثل --memory و --cpus.
درس: محدودیت منابع (داکر از صفر تا حرفهای)
Nginx و وب
- Web serverوبسرور
برنامهای که درخواستهای HTTP را میگیرد و فایل یا پاسخ برمیگرداند؛ مثل Nginx و Apache.
درس: Nginx چیست؟ (Nginx کاربردی)- Server blockبلوک سرور (virtual host)
بخش server در تنظیمات Nginx که مشخص میکند با یک دامنه و پورت چه کار شود؛ با چند بلوک، چند سایت روی یک سرور اجرا میشود.
درس: server block و چند سایت (Nginx کاربردی)- locationلوکیشن
بلوکی داخل server که با مسیر درخواست (مثل /api/) تطبیق داده میشود و تعیین میکند آن مسیرها چطور جواب بگیرند.
درس: location و مسیرها (Nginx کاربردی)- Reverse proxyپراکسی معکوس
سروری جلوی برنامهها که درخواست کاربر را میگیرد و به برنامهی پشتش (مثلاً روی پورت 3000) میفرستد. کاربر فقط پراکسی را میبیند.
درس: reverse proxy (Nginx کاربردی)- HTTPSاچتیتیپیاس
HTTP رمزنگاریشده با TLS؛ کسی بین راه نمیتواند داده را بخواند یا عوض کند. لازمهاش یک گواهی معتبر است.
درس: HTTPS با Let's Encrypt (Nginx کاربردی)- TLS certificateگواهی TLS (SSL)
فایلی که هویت دامنه را تأیید میکند و مرورگر به آن اعتماد دارد. Let's Encrypt رایگان صادرش میکند و certbot تمدیدش را خودکار میکند.
درس: HTTPS با Let's Encrypt (Nginx کاربردی)- HSTSاجبار HTTPS
هدری که به مرورگر میگوید تا مدت مشخصی سایت را فقط با HTTPS باز کند، حتی اگر کاربر http:// تایپ کند.
درس: امنیت و هدرهای امنیتی (Nginx کاربردی)- Gzip compressionفشردهسازی gzip
فشرده کردن پاسخهای متنی (HTML، CSS، JS) قبل از ارسال؛ حجم انتقال معمولاً چند برابر کم میشود.
درس: عملکرد: gzip و کش (Nginx کاربردی)- Cache-Controlکنترل کش
هدری که میگوید مرورگر یک فایل را چه مدت میتواند بدون پرسیدن دوباره از سرور نگه دارد.
درس: عملکرد: gzip و کش (Nginx کاربردی)- Load balancingتوزیع بار
پخش درخواستها بین چند نسخهی برنامه (یک upstream) تا بار تقسیم شود و از کار افتادن یکی، کل سایت را نخواباند.
درس: load balancing (Nginx کاربردی)- Rate limitingمحدودسازی نرخ درخواست
محدود کردن تعداد درخواست هر کاربر در ثانیه یا دقیقه؛ برای جلوگیری از حملهی حدس رمز و فشار بیش از حد روی سرور.
درس: محدودسازی درخواستها (Nginx کاربردی)- WebSocketوبسوکت
اتصال دوطرفهی ماندگار بین مرورگر و سرور برای دادهی لحظهای مثل چت. پشت Nginx به هدرهای Upgrade و Connection نیاز دارد.
درس: WebSocket (Nginx کاربردی)- Access logلاگ دسترسی
فایلی که Nginx برای هر درخواست یک خط در آن مینویسد: IP، زمان، مسیر، کد وضعیت و حجم پاسخ.
درس: لاگها (Nginx کاربردی)- HTTP status codeکد وضعیت HTTP
عدد سهرقمی پاسخ سرور: 2xx موفق، 3xx ریدایرکت، 4xx خطای درخواست (مثل 404) و 5xx خطای سرور (مثل 502).
درس: لاگها (Nginx کاربردی)
اصطلاحی با این عبارت پیدا نشد.