IRANSERVER · LINUX CAMP 1405

چالش عملی پشتیبانی لینوکس

بررسی سناریوی عملیاتی در یک شیفت پشتیبانی ایران‌سرور

۳ ساعت مدت زمان چالش
سرور اختصاصی
دسترسی root از SSH
۴ تیکت + بخش امتیازی
// CONTEXT

زمینه

شما امروز به‌عنوان یک عضو جدید تیم پشتیبانی ایران‌سرور، مسئولیت یک سرور مشتری را بر عهده گرفته‌اید. طبق یادداشتی که از شیفت قبل باقی مانده، دیشب چند اقدام نگهداری (maintenance) روی این سرور انجام شده — از جمله یک به‌روزرسانی امنیتی، جابه‌جایی چند فایل، و یک بازیابی جزئی از بکاپ.

صبح امروز مشتری تماس گرفته و گفته سایتش دیگر بالا نمی‌آید و چند مورد دیگر هم نگرانش کرده.

شما به‌عنوان مهندس پشتیبانی، دسترسی root از طریق SSH به این سرور دارید. وظیفه شما تشخیص و رفع مشکلات این سرور است، دقیقاً مثل یک شیفت واقعی پشتیبانی.

سرور یک وب‌سایت WordPress واقعی را میزبانی می‌کند که روی Nginx + PHP-FPM + MariaDB اجرا می‌شود.

// RULES OF ENGAGEMENT

قوانین آزمون

  • دسترسی به اینترنت، Google، مستندات رسمی، man page، و ابزارهای هوش مصنوعی (از جمله ChatGPT) کاملاً آزاد است.
  • در هر لحظه می‌توانید از منتور سؤال بپرسید. برخی اطلاعات فقط در صورت پرسیدن سؤال درست در اختیار شما قرار می‌گیرد — این بخشی طبیعی از یک شیفت واقعی پشتیبانی است.
  • تمام تیکت‌ها از همین ابتدا در اختیار شما هستند؛ لازم نیست منتظر اعلام جداگانه بمانید.
  • همکاری با سایر شرکت‌کنندگان ممنوع است.
  • اگر سرور خود را به‌شکل جدی از کار بیندازید، سرور جایگزین می‌گیرید — اما حدود ۱۵ دقیقه از زمان آزمون شما کم می‌شود. پیش از هر اقدام مخاطره‌آمیز به این موضوع فکر کنید.
  • در پایان باید اقدامات خود را شفاهی برای منتور توضیح دهید. گزارش مکتوب لازم نیست.
// PREREQUISITES

آنچه پیش‌تر آموخته‌اید

در دوره آموزشی با دستورات پایه لینوکس (کار با فایل و دایرکتوری، جست‌وجو، فشرده‌سازی)، مدیریت کاربران و گروه‌ها، دسترسی‌ها و مالکیت فایل‌ها (chmod/chown)، مدیریت پکیج با apt، و آشنایی مقدماتی با SSH، وب‌سرور، پایگاه‌داده و فایروال آشنا شده‌اید.

بخشی از مسائل امروز مستقیماً از همین دانش استفاده می‌کند. بخشی دیگر نیازمند کمی تحقیق درباره ابزارهایی است که شاید تا امروز با آن‌ها کار نکرده باشید — این طبیعی و بخشی از ارزیابی است.

// OPEN TICKETS

تیکت‌های باز

#1405-01 سایت بالا نمی‌آید اولویت بالا
گزارش‌دهنده: مشتری · کانال: تماس تلفنی

مشتری می‌گوید وقتی آدرس سایت را در مرورگر باز می‌کند، هیچ پاسخی دریافت نمی‌کند — نه صفحه خطا، نه محتوا. انگار سرور اصلاً جواب نمی‌دهد.

وظیفه شما رساندن سایت به وضعیتی است که از بیرون (از طریق آدرس عمومی سرور، با مرورگر یا curl) به‌طور کامل و صحیح بالا بیاید — یعنی محتوای واقعی صفحه را نشان دهد، نه یک صفحه خطا از هر نوع.

مشکل ممکن است در بیش از یک لایه هم‌زمان وجود داشته باشد. رفع یک مشکل ممکن است مشکل بعدی را آشکار کند — این طبیعی است، ادامه بدهید.
#1405-02 تصاویر محصولات نمایش داده نمی‌شوند اولویت متوسط
گزارش‌دهنده: تیم محتوا · کانال: تیکت داخلی

تیم محتوا گزارش داده که آپلود و نمایش تصاویر محصولات در وردپرس دیگر کار نمی‌کند و با خطای دسترسی مواجه می‌شوند. این مورد مستقیماً به دایرکتوری رسانه‌های سایت (wp-content/uploads) مربوط است.

خط قرمز: هر راه‌حلی که «همه به همه‌چیز دسترسی کامل دارند» را برقرار کند، به‌عنوان راه‌حل ناامن و غیرحرفه‌ای در نظر گرفته می‌شود — حتی اگر ظاهراً مشکل را برطرف کند.
#1405-03 یک فایل گم‌شده، دو بکاپ مشکوک اولویت متوسط
گزارش‌دهنده: تیم فنی داخلی · کانال: تیکت داخلی

در مسیر بکاپ‌های این سرور (زیر /root) دو فایل آرشیو وجود دارد. یکی از این دو در نگاه اول قابل‌اعتمادتر به نظر می‌رسد؛ اما نام یک فایل به‌تنهایی تضمینی برای سالم بودن محتوای آن نیست.

هم‌زمان، یکی از فایل‌های استاندارد وردپرس از مسیر نصب سایت (wp-content/plugins/) گم شده و باید بازیابی شود.

پیش از اعتماد به هر فایل بکاپ، محتوای واقعی آن را بررسی کنید. اگر درباره مجاز بودن یا نبودن یک نوع بازیابی خاص مطمئن نیستید، از منتور بپرسید.

#1405-04 هشدار فضای دیسک اولویت بالا
گزارش‌دهنده: سامانه مانیتورینگ · کانال: هشدار خودکار

مانیتورینگ نشان می‌دهد فضای دیسک به‌سرعت در حال پر شدن است. علت را پیدا کنید، آن را به‌شکل ایمن مدیریت کنید، و طوری اقدام کنید که این مشکل دوباره در آینده رخ ندهد — یعنی صرفاً «پاک‌کردن الان» کافی نیست.

روی این سرور بیش از یک فایل حجیم وجود دارد و همه فایل‌های حجیم لزوماً مشکل نیستند — برخی بکاپ‌های معتبر و لازم‌اند که نباید حذف شوند. پیش از حذف هر فایل حجیم، مطمئن شوید واقعاً همان چیزی است که فکر می‌کنید.
// OPTIONAL — EXTRA CREDIT

بخش امتیازی

این بخش اختیاری است و برای کسانی طراحی شده که تیکت‌های ۱ تا ۴ را زودتر تمام می‌کنند. حل نکردن آن، شما را از پیشنهاد قوی برای دوره باز نمی‌دارد.

#1405-B1 دسترسی یک حساب سرویس اختیاری
گزارش‌دهنده: تیم توسعه · کانال: تیکت داخلی

قرار است یک حساب کاربری مخصوص ابزارهای خودکار (deploy) به سرور متصل شود، اما اتصال با کلید (key-based) هنوز برقرار نیست. این حساب باید بتواند بدون رمز عبور و صرفاً با کلید SSH وارد شود.

هشدار جدی: پیش از هر تغییری در تنظیمات SSH، صحت نحوی (syntax) تنظیمات را بررسی کنید و مطمئن شوید نشست فعلی خودتان یا دسترسی سایر ادمین‌ها قطع نخواهد شد. اشتباه در این بخش می‌تواند دسترسی SSH را کاملاً از بین ببرد.
#1405-B2 گزارش کیفیت داده مشتریان اختیاری
گزارش‌دهنده: تیم کسب‌وکار · کانال: تیکت داخلی

یک فایل خروجی از اطلاعات مشتریان در مسیر خانه کاربر deploy (زیر exports/) وجود دارد. از شما خواسته شده گزارشی متنی دقیقاً با نام data-quality-report.txt در همان مسیر بسازید که دقیقاً چهار خط زیر را به همین شکل داشته باشد (کلید=مقدار، هرکدام یک عدد صحیح):

total_records=<تعداد کل رکوردها، بدون شمردن سطر عنوان>
invalid_emails=<تعداد رکوردهایی که فرمت ایمیل‌شان نامعتبر است>
duplicated_email_values=<تعداد مقدارهای یکتای ایمیل که بیش از یک بار دیده شده‌اند>
duplicate_extra_records=<تعداد رکوردهای اضافه‌ای که همان ایمیل تکراری را دارند>

برای روشن شدن تفاوت دو عدد آخر: اگر یک ایمیل خاص در ۳ رکورد مختلف تکرار شده باشد، duplicated_email_values عدد ۱ را اضافه می‌کند (چون فقط یک مقدار یکتا تکراری است)، اما duplicate_extra_records عدد ۲ را اضافه می‌کند (چون ۲ رکورد «اضافه» نسبت به اولین باری که آن ایمیل دیده شده وجود دارد).

نحوه استخراج این اعداد با خودتان است.

// WRAP-UP

در پایان آزمون

وضعیت نهایی سرور شما بررسی می‌شود.

سپس از شما خواسته می‌شود اقدامات خود را برای هر تیکت شفاهی توضیح دهید: چه فرضیه‌ای داشتید، چه شواهدی پیدا کردید، چرا آن راه‌حل را انتخاب کردید، و چطور آن را تست کردید.

موفق باشید.