איך לעבור שרת ולהשאיר את האתר באוויר
הבוקר העברתי את טוקוד לשרת חדש, אחרי שעד עכשיו האתר רץ יחד עם עוד כמה מערכות על אותו השרת. זה משהו שרציתי לעשות כבר תקופה ולא הייתי בטוח איך לגשת לזה. סך הכל לא היה כל כך נורא בזכות כמה טריקים קטנים שעזרו לי לעבור תוך כדי שהאתר נשאר באוויר. הנה רשימת הטריקים שלי ועוד אחד ששכחתי.
1. העתקת נתונים בקליק עם Linode Volumes
העברת מידע בין שרתים עם rsync יכולה לקחת זמן. מאחר וכל השרתים שלי מאוחסנים ב Linode הצלחתי להשתמש במנגנון ה Volumes שלהם כדי להעביר מידע בקלות בין השרת הישן לחדש.
זה עובד ככה:
מתקינים שרת חדש באותו Data Center כמו השרת הישן.
יוצרים Volume ומחברים אותו לשרת הישן.
מעתיקים אל ה Volume הזה את כל המידע שאתם רוצים לקבל בשרת החדש.
בלחיצת כפתור "מעבירים" את ה Volume לשרת החדש ומעתיקים ממנו את כל המידע למערכת הקבצים של השרת החדש.
בצורה כזאת אפשר להעתיק את כל היישומים, תיקיית הבית, סקריפטים וגיבוי מלא של בסיס הנתונים בתוך דקות. כשמסיימים אפשר למחוק את ה Volume דרך התפריטים של Linode.
2. בדיקה שהכל עובד לפני שמחליפים את ה DNS
בצד של השרת החדש אחרי מספר התקנות והעברת כל המידע היה נראה שהכל מוכן להתחיל לרוץ. בשביל לא לקחת סיכונים כדאי לחכות קצת עם שינוי הגדרות ה DNS. במקום, אפשר לשנות את כתובת החיפוש המקומית על המחשב.
בלינוקס או מק חפשו את הקובץ /etc/hosts
ובחלונות את הקובץ c:\Windows\System32\Drivers\etc\hosts
. בתוך הקובץ הוסיפו שורה שאומרת שכל פעם שאתם מחפשים את הדומיין שלכם המחשב יילך לשרת החדש, למרות שב DNS מופיע עדיין השרת הישן. בשבילי זה נראה כך:
176.58.101.87 www.tocode.co.il
עכשיו אפשר להתחבר מהמחשב שלכם לשרת החדש וזה יראה כאילו האתר כבר באוויר (או לפחות אם הכל עבד). אם יש בעיות תוכלו לפתור אותן לפני שכולם רואים.
3. העתקת המפתחות והתעודות מהשרת הישן
אני משתמש ב LetsEncrypt בשביל לקבל תעודות SSL ולכן כל התעודות נשמרות בתיקיה /etc/letsencrypt
. אם מעתיקים את התיקיה הזאת במלואה מהשרת הישן לחדש, כל חיבורי ה HTTPS ימשיכו לעבוד גם על השרת החדש.
במילים אחרות זה בסדר גמור ששני שרתים ישתמשו באותו זמן באותו מפתח פרטי ובאותה תעודת SSL.
4. הטריק שלא עשיתי - הגדרת שכפול נתונים
הטריק היחיד בספר שדילגתי עליו היה הזרמה קבועה של הנתונים מבסיס הנתונים בשרת הישן לשרת החדש עד להחלפה המסודרת של המערכת. זה אומר שנתונים שהשתנו בבסיס הנתונים בשעתיים שעבדתי על התקנת השרת החדש לא נכנסו לשרת החדש והייתי צריך להעביר ידנית אנשים שקנו מנוי באותו זמן.
בדיעבר עדיף היה ליצור Replication בין בסיס הנתונים הישן לחדש כך שהנתונים היו מועתקים בזמן אמת בין המערכות. כאן יש מדריך איך לעשות את זה ב Postgresql אם נצטרך לעבור שוב:
https://www.howtoforge.com/tutorial/postgresql-replication-on-ubuntu-15-04/
אחרי שהכל עובד אפשר להחליף את כתובת ה IP בשרת ה DNS ולקוות לטוב. במקרה שלי המעבר לשרת החדש היה כמעט חלק. עכשיו אפשר להנות מהזיכרון החדש ומהביצועים המשופרים.