آموزش سرور

دستورات ضروری لینوکس برای مدیریت سرور

تهیه: کلودیفای (نگارش با کمک هوش مصنوعی) · انتشار: · زمان مطالعه: ۴ دقیقه

root@server: ~$ systemctl status nginx$ sudo systemctl restart nginx$ journalctl -u nginx -n 50 --no-pagerآموزش سروردستورات ضروری لینوکسبرای مدیریت سرورمجلهٔ کلودیفایclodify.net/blog
پاسخ کوتاه

برای مدیریت روزمرهٔ یک سرور لینوکس حدود ۴۰ دستور کافی است: جابه‌جایی و ویرایش فایل (ls، cd، nano)، مدیریت بسته (apt)، سرویس‌ها (systemctl و journalctl)، منابع (df، free، htop)، شبکه (ss، curl، ping) و انتقال فایل (scp و rsync). این صفحه آن‌ها را دسته‌بندی‌شده با مثال آورده است تا بعد از اتصال SSH سریع کار را شروع کنید.

همهٔ مثال‌ها برای Ubuntu/Debian است. اگر هنوز به سرور وصل نشده‌اید، ابتدا آموزش اتصال SSH را ببینید.

فایل‌ها و پوشه‌ها

دستور کاربرد
pwd نمایش مسیر فعلی
ls -lah فهرست فایل‌ها با حجم و دسترسی‌ها (شامل فایل‌های مخفی)
cd /var/www رفتن به پوشه؛ cd .. یک سطح بالاتر؛ cd ~ پوشهٔ خانه
mkdir -p app/logs ساخت پوشه (با والدها)
cp -r src dst کپی فایل یا پوشه
mv old new جابه‌جایی یا تغییر نام
rm file / rm -r dir حذف (بدون سطل زباله؛ با احتیاط)
cat file / less file نمایش محتوا (less برای فایل‌های بزرگ)
tail -f file.log دنبال کردن زندهٔ انتهای فایل
nano file ویرایشگر ساده (ذخیره: Ctrl+O، خروج: Ctrl+X)
find / -name "*.conf" 2>/dev/null جستجوی فایل با نام
grep -rn "server_name" /etc/nginx جستجوی متن در فایل‌ها

هشدار: rm -rf بدون بازگشت است. پیش از اجرای آن روی مسیرهای سیستمی، دوباره مسیر را بخوانید.

کاربران و دسترسی‌ها

sudo adduser deploy            # ساخت کاربر
sudo usermod -aG sudo deploy   # دادن دسترسی sudo
su - deploy                    # تغییر کاربر
sudo chown -R deploy:deploy /var/www/app   # تغییر مالک
chmod 600 ~/.ssh/authorized_keys           # تغییر دسترسی

خلاصهٔ اعداد chmod: 7 = خواندن+نوشتن+اجرا، 6 = خواندن+نوشتن، 5 = خواندن+اجرا، 4 = فقط خواندن. سه رقم به‌ترتیب برای مالک، گروه و دیگران است. مثلاً 755 برای پوشه‌ها و 644 برای فایل‌های وب رایج است.

نصب و به‌روزرسانی بسته‌ها

sudo apt update                 # به‌روزرسانی فهرست بسته‌ها
sudo apt upgrade -y             # به‌روزرسانی بسته‌های نصب‌شده
sudo apt install -y nginx git   # نصب
sudo apt remove nginx           # حذف
apt list --installed | grep php # جستجو در نصب‌شده‌ها
sudo apt autoremove -y          # پاک کردن وابستگی‌های بی‌استفاده

اگر روی سرور ایران apt خطای 403 یا تایم‌اوت می‌دهد، راهنمای مخزن‌های داخلی را ببینید.

سرویس‌ها و لاگ‌ها

sudo systemctl status nginx      # وضعیت
sudo systemctl restart nginx     # ری‌استارت
sudo systemctl reload nginx      # بارگذاری مجدد تنظیمات بدون قطعی
sudo systemctl enable --now app  # فعال در بوت و اجرای فوری
systemctl list-units --type=service --state=running

journalctl -u nginx -n 100 --no-pager   # ۱۰۰ خط آخر لاگ یک سرویس
journalctl -u app -f                    # دنبال کردن زنده
journalctl -p err --since today         # فقط خطاهای امروز

برای ساختن سرویس systemd برای برنامهٔ خودتان، اجرای ربات تلگرام با systemd نمونهٔ کامل دارد.

root@server: ~
$ systemctl status nginx$ sudo systemctl restart nginx$ journalctl -u nginx -n 50 --no-pager$ 
شکل ۱ وضعیت، ری‌استارت و آخرین لاگ‌های یک سرویس systemd.

منابع: رم، پردازنده و دیسک

free -h            # رم و swap (ستون available مهم است)
htop               # پایش زندهٔ پردازنده و رم (نصب: apt install htop)
uptime             # میانگین بار (load average)
nproc              # تعداد هسته‌ها
df -h              # فضای خالی دیسک‌ها
du -sh /var/* | sort -h   # حجم پوشه‌ها برای پیدا کردن عامل پر شدن دیسک
lsblk              # دیسک‌ها و پارتیشن‌ها
  • load average بیشتر از تعداد هسته‌ها برای مدت طولانی یعنی پردازنده زیر فشار است.
  • اگر رم پر می‌شود، رفع مشکل OOM را ببینید.
  • پرکننده‌های رایج دیسک: /var/log، تصاویر و volume های داکر (docker system df) و بکاپ‌های قدیمی.
root@server: ~
$ htop$ free -h$ df -h$ du -sh /var/* | sort -h | tail$ 
شکل ۲ چهار دستوری که در هر عیب‌یابی منابع اول اجرا می‌شوند.

شبکه و پورت‌ها

ip a                      # آی‌پی‌های سرور (IPv4 و IPv6)
sudo ss -tulpn            # پورت‌های در حال گوش دادن و برنامهٔ مربوط
curl -I https://example.com   # بررسی پاسخ HTTP
ping -c 5 8.8.8.8         # بررسی دسترسی و تأخیر
mtr -rwc 50 example.com   # مسیر و از دست رفتن بسته (apt install mtr-tiny)
dig +short example.com    # بررسی DNS (apt install dnsutils)

برای کنترل پورت‌ها، آموزش فایروال UFW را ببینید.

انتقال فایل

# از کامپیوتر شما به سرور
scp backup.tar.gz root@SERVER_IP:/root/

# همگام‌سازی پوشه (فقط تغییرات منتقل می‌شود؛ مناسب انتقال سایت بین سرورها)
rsync -avz --progress ./site/ root@SERVER_IP:/var/www/site/

# دانلود مستقیم روی سرور
wget https://example.com/file.zip
curl -LO https://example.com/file.zip

فشرده‌سازی

tar czf backup.tar.gz /var/www/site   # ساخت آرشیو
tar xzf backup.tar.gz -C /restore     # باز کردن
zip -r site.zip site/ && unzip site.zip

اجرای کار طولانی بدون قطع شدن: tmux

اگر اتصال SSH قطع شود، دستور در حال اجرا هم متوقف می‌شود. با tmux، نشست روی سرور باقی می‌ماند:

sudo apt install -y tmux
tmux new -s work      # شروع نشست
# Ctrl+B سپس D برای جدا شدن
tmux attach -t work   # بازگشت به نشست

زمان‌بندی کارها با cron

crontab -e
# هر شب ساعت ۳ بامداد بکاپ:
0 3 * * * tar czf /root/backup-$(date +\%F).tar.gz /var/www/site

اطلاعات سیستم

lsb_release -a    # نسخهٔ سیستم‌عامل
uname -r          # نسخهٔ کرنل
hostnamectl       # نام میزبان و اطلاعات کلی
timedatectl       # منطقهٔ زمانی؛ تغییر: sudo timedatectl set-timezone Asia/Tehran
sudo reboot       # راه‌اندازی مجدد

سؤالات متداول

فرق sudo و root چیست؟

root کاربر با دسترسی کامل است. sudo به یک کاربر عادی اجازه می‌دهد دستور خاصی را با دسترسی root اجرا کند؛ کار روزمره با کاربر عادی و sudo امن‌تر است.

بهتر است از nano استفاده کنم یا vim؟

برای شروع nano ساده‌تر است. vim قدرتمندتر است اما یادگیری بیشتری لازم دارد.

اگر دستوری را اشتباه اجرا کنم و سرور خراب شود چه کنم؟

اگر اسنپ‌شات یا بکاپ دارید، بازگردانی کنید. در سرورهای ساعتی کلودیفای ساخت یک سرور تازه سریع است؛ به همین دلیل بکاپ منظم از داده‌ها اهمیت دارد.

این دستورات روی CentOS یا AlmaLinux هم کار می‌کند؟

بیشتر دستورات یکسان‌اند؛ تفاوت اصلی در مدیریت بسته است (dnf به‌جای apt).

آماده‌اید؟ سرورتان را بسازید.

از ۱٬۲۰۰ تومان در ساعت · پرداخت ریالی

سرورتان را همین حالا بسازید.

ساعتی بپردازید. هر وقت خواستید حذف کنید.