اکنون اجزای زیادی داریم؛ تحویل خوب یعنی همهٔ آن‌ها در یک سناریوی روشن و قابل بازیابی کار کنند. امشب سرویس را از دید کاربر، مدیر و ممیز بررسی می‌کنیم.

این جلسه بخشی از دورهٔ آپاچی در ۵۰ شب است. قرارداد نام‌ها، مسیرها و روش اعمال تغییر را در راهنمای دوره بخوان.

محیط: مسیر اصلی event/FPM روی یکی از چهار توزیع؛ سپس همان معیارها را روی هر توزیعی که تمرین کرده‌ای تکرار کن. اجرای توزیع دیگر را بدون شاهد انجام‌شده اعلام نکن.

سناریوی تحویل#

www.example.test سایت ثابت، app.example.test ورودی برنامه و مسیرهای ws/events، wp.example.test WordPress و admin.example.test ورودی mTLS هستند. backendها فقط loopback یا شبکهٔ خصوصی کنترل‌شده دارند. CGI/mod_php در Cloneهای مستقل و محدود باقی می‌مانند، نه در مسیر اصلی.

قابلیتپذیرش مثبتپذیرش منفی
میزبان‌هامحتوای درست برای هر نامHost ناشناس بدون محتوای برنامه
TLS و HTTP/2CA/نام معتبر و h2 واقعینام، CA یا نسخهٔ نامجاز رد شود
هدرهامقدار یکتا در 200 و 404CSP اجراییِ ناسازگار شناسایی شود
کنترل دسترسیIP و هویت مجازIP دیگر و جعل هدر رد شود
mTLSگواهی کلاینت و نقش درستبدون گواهی یا کاربرد نامجاز رد شود
proxyپاسخ برنامه و redirect صحیحbackend عمومی و TLS نامعتبر رد شود
WebSocket/SSEپیام echo و جریان به‌موقعOrigin نامجاز و idle نامتناسب آشکار شود
WordPressورود، مطلب، تصویر و cronراز و کد داخل upload قابل دریافت نباشد
بهره‌برداریrotation، تمدید و بازیابی واقعیخرابی backend و نزدیک‌شدن انقضا هشدار دهد
CISگزارش نسخه‌دار با شاهدیافتهٔ باز یا exception پنهان نشود

در proxy، خرابی یک backend و برگشت آن را نیز بررسی کن؛ برای عملیات غیرقابل تکرار، قرارداد برنامه لازم است. برای IPv6، allowlist و firewall را با آدرس مستقل راهنما آزمایش کن.

بستهٔ تحویل#

نسخهٔ OS، revision بسته‌های Apache/PHP/MariaDB، ماژول‌ها، configهای فعال، نقشهٔ IP/نام‌ها، مالکیت مسیرها، برنامهٔ تمدید و نسخه‌های وابستگی را ثبت کن. runbook یعنی دستورالعمل عملیاتی: تشخیص 5xx، restart مجاز، بررسی گواهی، بازیابی WordPress و مسئول هر اقدام را بنویس.

اسرار داخل گزارش عمومی نیستند؛ فقط محل نگه‌داری امن، مسئول دسترسی و روش بازیابی ذکر می‌شود. از مدیر دیگر بخواه با همین مستند، یک Clone را بازیابی کند. اگر او به حافظهٔ تو وابسته شد، تحویل هنوز کامل نیست.

تمرین پایانی: یک config اشتباه و یک backend خاموش را در دو نوبت جدا شبیه‌سازی کن. زمان تشخیص و بازگشت را ثبت کن، سپس تمام آزمون‌های لازم را دوباره بگیر. مطالعهٔ ۵۰ درس با اجرای آزمایش‌ها یکی نیست؛ وضعیت مطالعه، اجرا و تأیید را در دفترچه جدا نگه دار.

منبع: مستندات Apache 2.4 ، مدیریت پیشرفتهٔ WordPress ، مرجع CIS Apache .