תהליך הקמת האתר המבוסס קוד פתוח ותוכנה חופשית
במאמר הזה ברצוני לתאר את תהליך הקמת האתר הנוכחי – זה שאתם צופים בו כעת – מתוך כוונה לשתף בתהליך עצמו וגם לעזור למי שמעונין בהקמת אתר אישי ביתי. תחילה נשאלת השאלה העקרונית – מדוע כדאי לבנות אתר אישי לעומת פתיחת דף פייסבוק לדוגמא? ובנוסף - מה היתרון של אתר ביתי לעומת שכירת דומיין מחוות שרתים כלשהי? התשובות כאן כמובן תלויות בנטייה האישית של כל אחד, אולם אתר אישי מאפשר חופש בחירה וחופש פעולה ללא צנזורה של 'אח גדול' כמו פייסבוק וכפיפות לתנאים מגבילי זכויות וכו. היתרון באתר ביתי נובע מחסכון כספי בדמי שכירה ובשליטה ישירה על האתר. יש לציין שאין כוונה במאמר זה להציג מדריך מפורט, אלא מתווה כללי עם הפניות למדריכים מפורטים יותר.
לכאורה נוצר רושם שבכדי להקים אתר ביתי דרוש ידע נרחב ומקצועיות רבה בכל הנושא הטכנולוגי שקשור למחשבים, מערכות הפעלה וכו. אולם ברצוני לתאר את התהליך שבו הקמתי את האתר, שאמנם דורש ידע, אך מדובר על רמה שאולי מעט יותר מעל הממוצע, אך לא מעבר לכך. אני מהנדס חומרה ובתחום עיסוקי היומיומי אינני עוסק בתוכנה או מערכות הפעלה. אולם במהלך השנים האחרונות, כשניסיתי למצוא תחליפים למערכת ההפעלה של מיקרוסופט, שמשיקולים שונים מאסתי בה - מעבר לעלות הכספית מצאתי שמחשב בין כמה שנים בודדות כבר מפסיק לעבוד בצורה יעילה והופך לאיטי יותר ויותר – התחלתי להתענין במערכת ההפעלה לינוקס ובכל התחום של קוד פתוח ותוכנה חופשית. דרך אגב - מיום שהתוודעתי ללינוקס, הפסקתי לרכוש מחשבים חדשים, ואני משתמש ביעילות במחשבים שהיו רגע לפני השלכתם לרחוב, מחברות שאני עובד עימן.
לאור הפיכת פייסבוק ל’אח הגדול’ שמחליט מה יפורסם ומה לא, עוקב אחרינו, מעביר פרטים אישיים לצד ג' ומנהל מניפולציות על תודעתינו >> מזהם תודעה גלובלי, וכמי שנטייתו הטבעית היא לחופש והתנערות מכבלים, ואינו מעונין לעבוד חינם אצל מעסיק כמו מר צוקרברג… העדפתי להקים אתר אישי שיבוסס על מערכות פתוחות עם מגוון האפשרויות שבהן וחופש הבחירה. אמנם ההתחלה היא לא קלה יחסית, במיוחד למי שלא בא מהתחום, אבל לאחר עקומת לימוד לא קשה במיוחד שתלויה בזמן הפנוי, בכישורים האישיים ועוד, מגיע השלב של קטיפת הפירות המתגמלת. אישית, אני סבור שכל אחד יכול ולפחות חייב לעצמו את הנסיון להכיר את המערכות הפתוחות. אין זו חכמה גדולה להיות משתמש בלבד בכל האפליקציות היפות ובמכשירים הסלולריים, מבלי להבין מה קורה מאחורי הקלעים. שליטה על המערכות הנל מניבה הנאה מרובה יותר מפירות עידן טכנולוגי שבו אנו חיים. לטעמי חוסר היכרות עם המערכות הנל היא סוג של נכות טכנולוגית שמשפיעה גם על הבטחון העצמי ועוד. העידן הטכנולוגי עם ריבוי הפורומים בארץ ובחול מאפשר לכולם גישה חופשית למגוון מרשים של היצע פורה. במיוחד ראוי לציון הפורום הישראלי: https://whatsup.org.il – שמאוד עוזר בכל התחום של לינוקס וקוד פתוח. אנו חיים בעידן של נגישות למידע ומדריכים מצוינים וחינמיים ברשת וביוטיוב. ניתן ללמוד מהבית תחומים חדשים תוך צפיה במדריכים מעולים בחינם – וחבל שלא לנצל אותם ולהשאר רק משתמשים. אמנם יש לא מעט מדריכים בעברית ברשת, אולם כמובן שכדאי להצטייד בידע טכני/בסיסי באנגלית, אם רוצים להינות מההיצע הגדול ברחבי האינטרנט. ישנו קורס מומלץ בעברית שמובל על ידי מרצים מעולים, לתכנות בשפת פייתון, מהשלב הבסיסי ביותר, במסגרת פרוייקט קמפוס - דרך אגב: קמפוס הוא פרויקט חינמי מבורך שמנגיש ידע ברמה אקדמית, יש שם עוד קורסים רבים מומלצים במגוון נושאים נרחב!!!:
https://campus.gov.il/courses/course-v1:TAU+ACD_TAU_cs101x+2019_2/about
מי שמעונין לרכוש ידע מקיף מרמת ה'אפס ואחת' עד לרמת תכנות, רשת האינטרנט ובינה מלאכותית - הכל ברמה הבסיסית עם הסברים בהירים - מוזמן לצפות בקורס מבוא לתכנות של אונ' הרווארד:
https://online-learning.harvard.edu/course/cs50-introduction-computer-science
אז בואו נתחיל:
לפני הכל יש להבין שכל אתר בין אם הוא אישי ביתי ובין אם הוא מאוחסן אי שם בחוות שרתים כלשהי, בנוי סביב מחשב כלשהו. כלומר מדובר במחשב בעל חומרה שכוללת: מעבד מרכזי (CPU), זכרון נדיף (RAM זמני) לצורך עיבוד נתונים וזכרון קבוע (דיסק קשיח) שמאחסן את מערכת ההפעלה וכל הנתונים. את החומרה הזו מנהלת מערכת הפעלה כלשהי – מיקרוסופט, אפל או לינוקס. במקרה דנן נדבר מעתה והלאה על לינוקס, שזו מערכת הפעלה פתוחה וחופשית שאלפי אנשים סביב העולם שותפים בפיתוחה ובכל החבילות הקשורות אליה, שביחד יוצרות את מערכת ההפעלה הכוללת, שמאפשרת את כל הפעילות שתתואר להלן. יש לשים לב שמבחינה מקצועית גרידא, המושג לינוקס מדבר על המערכת הבסיסית ביותר (קרנל) שמתווכת בין המשתמש לבין המעבד המרכזי, אבל בשפת היומיום כשאומרים לינוקס מתכוונים להפצות לינוקס השונות, שכוללות את מערכת ההפעלה עם החבילות השונות שמסביבה – ידובר בהמשך. דרך אגב – רוב מוחלט של השרתים בעולם מבוססים לינוקס, כמו כן מערכת ההפעלה הסגורה של אפל, ומערכת אנדרואיד. וכעת ננסה לתאר מבנה של שרת טיפוסי ואילו משימות עליו לבצע – התיאור כאן הוא כללי ביותר ונועד לצורך ההבנה הבסיסית, וכמובן שכל אחד מוזמן לחפש בגוגל התיחסויות יותר מפורטות ומקצועיות, בהתאם לרמת התענינותו.
שרת הוא למעשה מחשב שיודע לקבל בקשות מגולשים ולשלוח להם קבצים בהתאמה. נניח שאנחנו גולשים לאתר מסוים ולוחצים על לשונית מסוימת שאמורה להציג רשימת מוצרים. השרת מקבל את הדרישה ומיד שולח קובץ שמכיל את הרשימה המבוקשת. כמובן שהשרת יודע לטפל בו זמנית בכמה בקשות ולנהל תור לצורך מענה תקין. בכדי שכל הפעילות הזו תתנהל, עלינו לספק מחשב שכולל חומרה שתוארה לעיל, מערכת הפעלה – לינוקס מהפצה מסוימת, ותוכנת שרת – apache, nginx etc.
המערך הנל אמנם מאפשר את התצורה הבסיסית של שרת שיודע לשלוח קבצים במענה לדרישת הגולשים, אולם לצורך בניה וניהול תוכן מורכב שמכיל האתר, יש צורך בתוכנת ניהול תוכן: CMS, שמנהלת ושומרת את כל התוכן בבסיס נתונים. תוכנות CMS החופשיות המובילות הן: wordpress, joomla, drupal ולכל אחת יש יתרונות וחסרונות כפי שיתואר בהמשך. בסיס הנתונים החופשי המקובל היום הוא MySQL.
כעת נטפל בכל מרכיב בנפרד ולאחר במערכת הכוללת:
חומרה – למרות שכל מחשב ישן יכול למלא יפה את המשימה של אתר אישי ביתי, יש לתת את הדעת על העלות השוטפת הגבוהה יחסית – אתר עובד 24/7 ומכיוון שמחשב רגיל צורך לא מעט הספק שמתבטא בהתחממות לא מבוטלת שדורשת קירור ע"י מאוורר – הדבר הופך ללא כלכלי כשמשווים את העלות למול שכירת דומיין. לכן עלינו לחפש פתרון כלכלי יותר, ולמזלינו בשנים האחרונות הופיע המוצר המפתיע: raspberry PI. נחמד לבחון גלגולו של מוצר כקוריוז מענין – מדובר על מחשב קטן ויחסית דל אמצעים שתוכנן בתחילה לצרכי לימוד בלבד – חומרה בסיסית מבוססת מעבד arm עם תקשורת רשת, כניסות ויציאות. ניתן להתקין עליו מערכת הפעלה (נניח לינוקס) ותוכנות מסוימות כמו פייתון וכו, ולכתוב כל מיני תוכניות שיפעילו מערכת השקיה לדוגמא, ועוד ועוד. תחילה המוצר יוצר בכמויות של אלפים בודדים ונמכר במחיר שווה לכל נפש של 35$. אולם תוך זמן קצר משתמשי לינוקס ברחבי העולם הבחינו בפוטנציאל הרב שטמון במוצר הנל, והחלו להריץ עליו את ההפצות השונות של לינוקס ולהפוך אותו ל: סטרימר (עם התקנת קודי), שרת גיבוי לרשת מקומית, וגם התקנת שרת והפיכתו לשרת ביתי. עם הזמן יצאו גרסאות מתקדמות יותר של עוגת הפטל (=raspberry PI) הנחמדה הזו, ונכון לשעת כתיבת שורות אלו הגרסה האחרונה היא: raspberry PI3 B – זו הגרסה שבידי - מדובר בכרטיס די קטן בגודל: 85X56 מ"מ, כפי שניתן לראות בתמונה בראשית המאמר. למזלינו החברה המיצרת שומרת על מחיר אחיד לכל הדגמים החדשים: 35$ בלבד, דבר שהפך אותו למאוד פופולרי שנמכר במיליוני יחידות... היתרון הגדול ומחולל השינוי שבמוצר זה הוא צריכת ההספק הנמוכה ביותר (כ 3W), שאינו מצריך קירור עם מאוורר (אלא אם כן מעמיסים אותו במטלות גרפיות כבדות), וביחד עם זאת משאבי חומרה יפים שמאפשרים פעילות שרת במימדים קטנים עד בינוניים.
המוצר הנוכחי מכיל מעבד עם 4 ליבות, זכרון RAM 1GB, וכניסות ויציאות די מרשימות: HDMI, IO,WIFI, ETHERNET, BT. מתחבר אליו כרטיס זכרון SD (מחליף את הדיסק הקשיח שבמחשב רגיל). להלן קישור למפרט המוצר:
https://www.raspberrypi.org/products/raspberry-pi-3-model-b/
מערכת הפעלה - כעת צריך להחליט איזו הפצת לינוקס מתאימה כמערכת הפעלה לשרת שלנו. נתחיל מלמטה – ככל שמתקרבים לברזלים (לחומרה) מתקבלת בדרך כלל הפצה קלה מהירה ויעילה יותר > דוגמא כזו היא: הפצת ג'נטו. אכן מדובר בהפצה מאוד מינימלית קלה ויעילה, אולם דורשת עקומת לימוד די קשה לצורך הכרת המערכת וניהולה. מעבר לכך במקרה שלנו יש עקב אכילס בהקשר של ג'נטו – ג'נטו מבוססת על חבילות תוכנת מקור, שדורשות קומפילציה לצורך קבלת קבצים בינארים שמוכנים לעבודה. לצורך כך דרוש כח מיחשוב לא מבוטל במהלך עדכוני התוכנה השוטפים, שידרוש הרבה זמן ומשאבים מכרטיס כמו PI. עקב השיקולים הנל נראה שג'נטו פחות מתאימה, ומכיוון שאני לא הכי מכיר את ארץ', ולא בטוח שהיא עשויה להתאים למטרה שלנו, דילגתי הישר לדביאן. דביאן נחשבת למערכת שהכי מתאימה לשרתים – אמנם לא מדובר בהפצה הכי מתקדמת ויעילה, אך מאוד יציבה, נוחה לעדכון ומהירה דיה, ואינה דורשת משאבים רבים. דרך אגב: הפצת לינוקס הנפוצה ביותר אובונטו, מבוססת על דביאן ומכילה תוספות גרפיות ועוד, לצורך קבלת ידידותיות משופרת, למי שפחות רגיל בפקודות שורה בקונסול - אישית אני ממליץ למי שמתלבט בבחירת מערכת הפעלה למחשב שלו, בין אובונטו לדביאן - לבחור בדביאן - המאמץ אינו גדול אך מאוד משתלם - מקבלים מערכת הפעלה הרבה יותר מהירה, יעילה וגמישה, ועדיין ידידותית ויציבה הרבה יותר מהפצות כמו ג'נטו או ארץ'. במקרה של הכרטיס שלנו PI, דביאן הכינו גרסה מיוחדת רזה ותפורה לפי הצרכים, ולמעשה זו ההפצה המומלצת על ידי ספקי PI – ההפצה נקראת raspbian. היא כוללת מעבר למערכת ההפעלה הרגילה גם ממשק גרפי יפה. את תהליך התקנת מערכת ההפעלה המפורט ניתן למצוא באתר הרשמי של raspberry.
לאחר התקנת מערכת ההפעלה יש להתקין ולקנפג את החבילות הדרושות הנוספות – יש באתר הרשמי עזרה בנושא. SSH דרוש לצורך תקשורת מוצפנת לכרטיס PI ממחשב רגיל שמחובר לרשת המקומית. כך בעצם אין צורך בחיבור למסך, ולמעשה ניתן לעבוד מטרמינל של מחשב מרוחק, כאילו על הכרטיס עצמו. כדאי להמנע מתקשורת לא מוצפנת כמו telnet.
שרת: בחרתי בשרת מהיר ויעיל כמו nginx.
תוכנת ניהול התוכן CMS - לכל תוכנה יש יתרונות וחסרונות שניתן לראות מתוך השוואות באתרים שונים, אך ככלל ניתן לאמר: בקצה אחד נמצאת וורדפרס - היא הכי נפוצה בזכות הידידותיות, נוחות השימוש וריבוי התוספים (פלאגינים). הקהל הגדול שלה שמביא תמיכה בפורומים שונים, מסייע אף הוא. אולם מדובר בתוכנה כבדה יחסית שעלולה להעיק על מחשב PI דל משאבים, וריבוי התוספים מחליש את יכולת הבקרה והסיכוי לפירצות אבטחה גדל. בקצה השני נמצאת דרופל שנחשבת להכי פחות ידידותית, דורשת עקומת לימוד משמעותית, עבודה עם פקודות שורה בקונסול והבנה במערכת ההפעלה, PHP ובסיס הנתונים. עקב כך, היא הכי פחות נפוצה אך יחד עם זאת, המשתמשים בה הם מקצועיים יותר וישנה קהילה איכותית של מפתחי מודולים למגוון רחב של שימושים. כך שהיא נחשבת לתוכנה עם היכולת הגבוהה ביותר לישום מירב הדרישות מאתר אינטרנט, ובד בבד מערכת די רזה ויעילה בעלת זכרון מטמון (cache) מתוחכם, שנבנית מודולרית בהתאם לצרכים, ואינה דורשת משאבים מרובים. כך מתקבלת מערכת די סגורה עם בקרה יעילה, שמביאה לרמת האבטחה הגבוהה מבין שלושת התוכנות. יש גם פורום מקצועי שתומך במקרה שנתקלים בבעיה מסוימת. ג'ומלה נמצאת בין לבין - מבחינת התפוצה, ידידותיות, נוחות תחזוקה, רמת אבטחה ומגוון האפשרויות. לאחר שקלא וטריא, בחרתי בתוכנת CMS מסוג drupal – כאמור, המערכת דורשת עקומת לימוד יחסית ארוכה לעומת WP, JOOMLA אבל מי שכבר מנוסה בפקודות שורה של לינוקס, ונעזר בכל מיני מדריכים ברשת וביוטיוב, יכול לעבור את המשוכה די בקלות, ואז לקבל מערכת מאוד מתוחכמת, גם קלה וזריזה וגם יחסית די מאובטחת, ובעלת אפשרויות מגוונות ביותר. דרך אגב: האתר של הבית הלבן מנוהל על ידי דרופל. נעזרתי במדריך הבא לצורך התקנת המערך הנל: https://www.linuxbabe.com/linux-server/drupal-8-ubuntu-16-04-nginx-mariadb-php7
ולאחר הוספתי את מנהל החבילות composer שמקל על עדכוני דרופל.
נעזרתי בשירות החינמי של noip שמאפשר שם דומיין פרטי ובנוסף Free Dynamic DNS (נדרש עבור IP ביתי לא קבוע). נדרש אימות וחידוש הדומיין מדי חודש - כנראה שיש שירותים יותר נוחים שלא דורשים חידוש אבל אין בעיה ובינתים אני מרוצה גם מזה.
הוספתי גם שירות SSL לאתר בכדי לאבטח את פרטי המשתמשים. כל התקשורת בין הגולשים לאתר מוצפנת ומאובטחת כפי שניתן לראות מהכתובת https ומסימול המנעול הירוק. השירות החינמי הוא דרך Let's Encrypt שדורש חידוש כל 3 חודשים - ניתן להוסיף חידוש אוטומטי תוכנתי, אך בינתים לא הצלחתי להפעיל אותו, גם כך זה לא נורא. בצעתי את התקנת SSL לפי מדריך הבא:
https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-on-ubuntu-14-04
זיהו - האתר חי בועט ונושם, ואתם מוזמנים לשאול אם משהו לא ברור, להעיר ולהאיר, וגם לקרוא סיפורים ושירים שמפורסמים כאן באתר - קריאה מהנה!
תגובות