העברת אתר וורדפרס עם כמה עשרות עמודים זה קל. העברת אתר עם 20,000 פוסטים, 15 שנה של תגובות, וספריית מדיה בגודל של דיסק קשיח קטן, זה סיפור אחר לגמרי. timeout אחד, ייצוא חתוך אחד, טבלה אחת שפספסתם, ופתאום יש לכם פוסטים שבורים, תמונות חסרות, או מסד נתונים שמאבד תוכן בשקט בלי שאף אחד שם לב עד שלקוח מתלונן שלושה שבועות אחר כך.
אם אתם מתכננים שירות העברת וורדפרס לאתר גדול, העצה הרגילה (לייצא, לייבא, סיימנו) פשוט לא מספיקה. הנה איך עושים את זה בלי שום דבר שייעלם.
למה אתרי וורדפרס גדולים נשברים במהלך העברה
רוב הכשלים בהעברה של אתרים גדולים נובעים מכמה סיבות חוזרות:
- מגבלות זמן ריצה של PHP שנגמרות באמצע ייצוא או ייבוא
- טבלאות מסד נתונים שגדולות מדי בשביל phpMyAdmin או כלי ייצוא בסיסיים
- נתונים מסודרים (serialized), כמו הגדרות widget או אפשרויות של תוספים, שנהרסים כתוצאה מחיפוש והחלפה פשוטים של כתובת האתר
- קבצי מדיה שנמצאים מחוץ למבנה תיקיית ה-uploads הרגיל, במיוחד אחרי שנים של שינויים בתוספים
- רשומות postmeta יתומות או גרסאות ישנות שמנפחות את מסד הנתונים ומאטות את כל התהליך
אף אחת מהבעיות האלה לא נדירה במיוחד. הן פשוט מופיעות הרבה יותר, ופוגעות הרבה יותר, כשמדובר באלפי פוסטים ולא בעשרות.
שלב 1: לנקות לפני שמזיזים משהו
זה השלב שכמעט כולם מדלגים עליו, והוא זה שחוסך הכי הרבה כאבי ראש.
- מחקו גרסאות ישנות של פוסטים. אתר עם שנים של עריכות יכול בקלות להכיל יותר שורות של גרסאות מאשר פוסטים בפועל.
- רוקנו את האשפה של פוסטים, עמודים ומדיה.
- הסירו תגובות ספאם ותגובות שלא אושרו ושלא צריך אותן.
- בדקו אם יש רשומות postmeta יתומות שנשארו מתוספים שכבר לא בשימוש.
כתבנו בעבר על ניקוי מסד נתונים לוורדפרס, וזה רלוונטי ישירות כאן. מסד נתונים קטן ונקי יותר מתייצא מהר יותר, מתייבא מהר יותר, והסיכוי שהוא ייתקע באמצע התהליך נמוך בהרבה.
שלב 2: לגבות הכול לפני שנוגעים בכלום
לפני כל העברה, אתם צריכים גיבוי מלא של גם הקבצים וגם מסד הנתונים, לא רק ייצוא של טבלת הפוסטים. תתייחסו לגיבוי הזה כרשת ביטחון: אם משהו משתבש באמצע ההעברה, אתם רוצים להיות מסוגלים לשחזר את האתר המקורי בדיוק כפי שהיה.
אנחנו מריצים גיבויים אוטומטיים על כל שרת, כך שתמיד תוכלו לשחזר מנקודה ידועה כתקינה. לקראת העברה, כדאי גם ליצור גיבוי ידני טרי ממש לפני שמתחילים, כדי שיהיה לכם תמונת מצב מדויקת של נקודת ההתחלה. ראו איך עובד הגיבוי והשחזור אם אתם רוצים את כל הפרטים.
שלב 3: אל תסתמכו על קובץ ייצוא יחיד לאלפי פוסטים
כלי הייצוא המובנה של וורדפרס (כלים > ייצוא) עובד טוב לאתרים קטנים. לאתר גדול, הוא לרוב נתקע, מגיע ל-timeout, או מייצר קובץ XML כל כך גדול שלייבא אותו חזרה הופך לפרויקט בפני עצמו.
להעברות גדולות, העברת מסד נתונים ישירה היא בדרך כלל אמינה יותר מהדרך של ייצוא/ייבוא WXR:
- ייצאו את מסד הנתונים ישירות דרך SSH באמצעות mysqldump, שמתמודד עם טבלאות גדולות הרבה יותר טוב מכלים מבוססי דפדפן.
- העבירו את קובץ מסד הנתונים הדחוס לשרת החדש.
- ייבאו אותו ישירות בשרת החדש, שוב דרך שורת הפקודה, ולא דרך ממשק אינטרנט.
- בנפרד, סנכרנו את תיקיית wp-content/uploads (וכל תיקיית תוכן מותאמת אחרת) באמצעות rsync או כלי דומה כדי שספריות מדיה גדולות יעברו בלי להיתקל ב-timeout.
אם המארח הנוכחי שלכם נותן לכם גישת SSH, כל התהליך הזה הרבה פחות כואב מאשר להתמודד עם מגבלות העלאה בדפדפן.
טיפול בטוח בשינוי כתובת האתר
ברגע שמסד הנתונים נוחת על השרת החדש, צריך לעדכן את כתובת האתר בכל מקום שבו היא מופיעה, כולל בתוך מערכים מסודרים (serialized) שבהם משתמשים widgets, הגדרות ערכת נושא, וחלק מהתוספים. חיפוש והחלפה פשוטים יהרסו כל נתון מסודר שהם נוגעים בו, כי מחרוזות מסודרות כוללות את מספר התווים המדויק של הטקסט שהן מכילות. אם משנים את אורך הטקסט בלי לעדכן את המספר הזה, וורדפרס כבר לא יכול לקרוא את הנתונים.
השתמשו בכלי חיפוש והחלפה שנבנה במיוחד למסדי נתונים של וורדפרס, כזה שמבין נתונים מסודרים ומעדכן את הספירות האלה באופן אוטומטי. זה חשוב עוד יותר באתרים גדולים, שבהם שורת options אחת פגומה יכולה להפיל את כל לוח הניהול.
שלב 4: לבדוק הכול לפני שמפנים את ה-DNS
לפני שמפעילים משהו בפועל, בדקו את האתר שהועבר ביסודיות בכתובת הזמנית שלו או בסביבת staging:
- ודאו שמספר הפוסטים הכולל תואם בדיוק לאתר המקורי
- בדקו פוסטים מדגמיים משנים שונות, לא רק מהתקופה האחרונה
- בדקו שתמונות ראשיות ותמונות בתוך הפוסטים נטענות, במיוחד בפוסטים ישנים
- בדקו שהתגובות שלמות ומסודרות נכון בתור שרשורים
- ודאו שארכיוני קטגוריות ותגיות מציגים את מספר הפוסטים הנכון
- בדקו בנפרד סוגי תוכן מותאמים (מוצרים, פריטי תיק עבודות, אירועים), כי קל לפספס אותם
סביבת staging ממש שימושית כאן. אתם יכולים להריץ את כל תהליך האימות בלי שום סיכון לאתר החי, ולעבור בפועל רק אחרי שהכול נבדק.
שלב 5: טיפול בהפניות ו-SEO לפני העלייה לאוויר
כשיש אלפי פוסטים, אפילו שינויים קטנים במבנה הכתובות יכולים להשפיע על כמות עצומה של עמודים מאונדקסים. אם מבנה הקישורים הקבועים נשאר זהה, זה פחות דאגה. אבל אם משהו במבנה הכתובת משתנה, תצטרכו מפת הפניות, לא רק הפניה גורפת לדף הבית.
זה נושא גדול מספיק בפני עצמו. אם אתם רוצים את התמונה המלאה, כיסינו אותו באיך שירות העברת וורדפרס מקצועי שומר על ה-SEO שלכם במעבר בין מארחים.
שלב 6: ניטור צמוד אחרי המעבר
ברגע שה-DNS התעדכן והשרת החדש פעיל, שימו עין על הדברים ב-48 עד 72 השעות הראשונות. עקבו אחרי שגיאות 404 בכלי האנליטיקס שלכם, בדקו את יומני השגיאות של השרת, וודאו שיש ניטור זמינות פעיל כדי שתתפסו כל בעיה ברגע שהיא קורית ולא תשמעו עליה מגולש. כדאי שיהיה לכם ניטור זמינות שפעיל עוד לפני שמתחילים את ההעברה, כדי שיהיה לכם תמונה ברורה של לפני ואחרי.
לסיכום
העברה של אתר וורדפרס גדול מתבססת על סבלנות ואימות, לא על קיצורי דרך. נקו את מסד הנתונים קודם, גבו הכול, העבירו את מסד הנתונים והקבצים בנפרד דרך שורת הפקודה ולא דרך טופס העלאה בדפדפן, השתמשו בחיפוש והחלפה שבטוח לנתונים מסודרים, ואמתו הכול ביסודיות לפני המעבר בפועל. אלפי פוסטים זה הרבה תוכן לאבד. אם תתייחסו להעברה עם תשומת הלב שהתוכן הזה מגיע לו, כל שירות העברת וורדפרס טוב יבטיח שכלום לא ילך לאיבוד.