آپاچی؛ شب ۵۰: پروژهٔ نهایی و تحویل وبسرور قابل نگهداری
فهرست نوشته
اکنون اجزای زیادی داریم؛ تحویل خوب یعنی همهٔ آنها در یک سناریوی روشن و قابل بازیابی کار کنند. امشب سرویس را از دید کاربر، مدیر و ممیز بررسی میکنیم.
این جلسه بخشی از دورهٔ آپاچی در ۵۰ شب است. قرارداد نامها، مسیرها و روش اعمال تغییر را در راهنمای دوره بخوان.
محیط: مسیر اصلی 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/2 | CA/نام معتبر و h2 واقعی | نام، CA یا نسخهٔ نامجاز رد شود |
| هدرها | مقدار یکتا در 200 و 404 | CSP اجراییِ ناسازگار شناسایی شود |
| کنترل دسترسی | 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 .