בלוג
Docker עבור וורדפרס: מדוע קונטיינרים מבודדים משנים הכל
לקוח אחד לא יכול להפיל לקוח אחר. אתר אחד לא יכול להדביק אתר אחר. זו הארכיטקטורה מאחורי פלטפורמת האירוח של PAGEnza.
אירוח וורדפרס מסורתי ממקם מספר אתרים על שרת אחד. הם חולקים PHP, הם חולקים גישה למערכת הקבצים, ולעיתים קרובות הם חולקים שרת מסד נתונים. זה בסדר עד שזה לא - וכאשר זה לא, זו בעיה רצינית.
PAGEnza מספק כל אתר וורדפרס בקונטיינר Docker משלו. פוסט זה מסביר מה המשמעות של זה בפועל ומדוע זה חשוב לסוכנויות המנהלות אתרי לקוחות מרובים.
בעיית האירוח המשותף
בתוכנית אירוח משותפת טיפוסית או אפילו VPS בסיסי עם התקנות וורדפרס מרובות:
תחרות משאבים: אתר אחד שמקבל עלייה בתעבורה מאט את כל שאר האתרים בשרת. תוסף לא מותאם כראוי באתר A פוגע בביצועים באתר B.
זליגת אבטחה: אם התקנת וורדפרס אחת נפגעת - דרך תוסף פגיע, סיסמה חלשה, או גרסת ליבה מיושנת - תוקף שמקבל גישה למערכת הקבצים יכול לעיתים קרובות לקרוא קבצים מאתרים אחרים באותו שרת.
קונפליקטים בגרסאות PHP: אתר A זקוק ל-PHP 7.4 עבור תוסף ישן. אתר B זקוק ל-PHP 8.2 עבור אחד חדש יותר. באירוח משותף, אתה בוחר אחד.
חשיפת מסד נתונים: שרתי מסד נתונים משותפים פירושם הרשאת משתמש אחת שאינה מוגדרת כראוי יכולה לחשוף נתונים של אתרים אחרים.
קונטיינרים של Docker פותרים את כל אלה ברמת התשתית.
מהו קונטיינר בפועל
קונטיינר Docker הוא תהליך קל משקל ומבודד שיש לו משלו:
- מערכת קבצים (הקונטיינר לא יכול לראות קבצים מחוץ לגבולותיו)
- מחסנית רשת (כתובת IP משלו, פורטים משלו)
- מרחב תהליכים (הוא לא יכול לראות תהליכים של קונטיינרים אחרים)
- מגבלות משאבים (מגבלות CPU וזיכרון)
הוא חולק את ליבת המארח עם קונטיינרים אחרים, אך כל מה שמעל הליבה מבודד. זה לא מכונה וירטואלית מלאה - זה מתחיל בשניות, לא בדקות, ומשתמש בחלק קטן מהמשאבים.
עבור וורדפרס, קונטיינר יחיד מריץ: Nginx, PHP-FPM, וקבצי וורדפרס. מסד הנתונים פועל בקונטיינר נפרד, המחובר רק לקונטיינר וורדפרס הספציפי הזה.
כיצד PAGEnza מספק אתר
כאשר אתה יוצר אתר לקוח חדש ב-PAGEnza, הנה מה שקורה בפחות מ-45 שניות:
- קונטיינר Docker חדש מופעל מתמונת וורדפרס בסיסית
- וורדפרס מוגדר עם מסד נתונים טרי על מופע MariaDB המשותף (מבודד לפרטי האימות של אותו קונטיינר)
- תוסף PAGEnza מותקן ומופעל אוטומטית
- מארח וירטואלי Nginx מוגדר עם תת-הדומיין של הלקוח
- SSL מונפק באמצעות Let's Encrypt
- הקונטיינר נרשם ב-reverse proxy עם כללי הניתוב הנכונים
הלקוח מקבל כתובת URL כמו clientname.pagenza.com שפעילה תוך 45 שניות מהקשה על "צור אתר". אין תצורה ידנית של שרת, אין SSH, אין המתנה ל-DNS (עבור תת-הדומיין - הפצת DNS של דומיין מותאם אישית היא נפרדת).
בידוד קונטיינרים בפועל
מגבלות זיכרון: לכל קונטיינר יש מגבלת זיכרון ניתנת להגדרה. אם תוסף שרץ ללא שליטה גורם לעלייה חדה בזיכרון באתר של לקוח אחד, הוא לא יכול לצרוך זיכרון שהוקצה לקונטיינרים אחרים. האתר עשוי להאט או להחזיר 503 - אך זה לא ישפיע על לקוחות אחרים.
בידוד מערכת קבצים: קבצי הוורדפרס של לקוח A בלתי נראים לחלוטין לקונטיינר של לקוח B. לתוסף שנפגע באתר של לקוח A אין דרך לקבצים של לקוח B.
בידוד רשת: קונטיינרים מתקשרים רק דרך גשרי רשת מוגדרים. קונטיינר מסד הנתונים של לקוח A מקבל חיבורים רק מקונטיינר הוורדפרס של לקוח A - לא מקונטיינר אחר במערכת.
PHP לכל קונטיינר: מכיוון שכל קונטיינר מריץ מופע PHP-FPM משלו, אתה יכול להריץ גרסאות PHP שונות עבור לקוחות שונים. התוסף הישן של לקוח A שזקוק ל-PHP 7.4 פועל היטב לצד המחסנית המודרנית של לקוח B על PHP 8.2.
דומיינים מותאמים אישית
ההגדרה ברירת המחדל מעניקה לכל לקוח תת-דומיין *.pagenza.com. עבור לקוחות שרוצים דומיין משלהם, התהליך הוא:
- הלקוח מצביע את רשומת ה-A של הדומיין שלו לכתובת ה-IP של שרת PAGEnza
- בלוח המחוונים של PAGEnza, אתה מזין את הדומיין המותאם אישית
- תצורת ה-reverse proxy מתעדכנת אוטומטית
- SSL מונפק עבור הדומיין המותאם אישית באמצעות Let's Encrypt
האפשרויות siteurl ו-home של וורדפרס מתעדכנות בהתאם. מנקודת מבטו של הלקוח, האתר שלו פשוט עובד בדומיין שלו - ללא הפניה, ללא תת-דומיין הנראה למבקרים.
מה זה אומר לסוכנויות
היתרון המעשי לסוכנויות המריצות אתרי לקוחות מרובים:
מהירות Onboarding: הקצאת אתר לקוח חדש לוקחת פחות מדקה. אין הגדרת שרת, אין cPanel, אין התקנת וורדפרס ידנית.
הפרדת לקוחות: אתר כל לקוח מבודד באמת. לקוח שמתקין תוסף בעייתי משפיע רק על האתר שלו.
סקלאביליות: הוספת לקוח חדש לא דורשת הקצאת שרת חדש. תשתית הקונטיינרים מתרחבת ליכולת המארח, והוספת קיבולת נוספת היא עניין של הוספת צמתים מארחים נוספים.
התאוששות מאסון: מכיוון שכל אתר נמצא בקונטיינר, גיבוי ושחזור פועלים ברמת הקונטיינר. שחזור אתר של לקוח בודד אינו משפיע על לקוחות אחרים.
הפשרה היא שאירוח קונטיינרים עולה יותר לאתר מאשר אירוח משותף. אך עבור סוכנויות שבהן אמינות האתר והפרדת לקוחות אינם ניתנים למשא ומתן, הכלכלה עובדת - במיוחד כאשר נלקחים בחשבון חיסכון בזמן ההקצאה.