- צבר – בלוג עם קוצים - http://tsabar.no-ip.org/blog -

המדריך לשרת ביתי: חלק ראשון – שרת אינטרנט

מידי פעם אני רואה שאלות בפורומים ולעיתים רחוקות גם שואלים אותי באופן אישי: איך מרימים שרת ביתי?

התשובה היא, כמובן, שזה תלוי: תלוי מה הדרישות מהשרת הביתי. כמו שלכל אחד יש תוכנות אחרות במחשב, כמו שלכל אחד יש טפט שונה ברקע שולחן העבודה, כך גם תלוי למה אתם צריכים שרת ביתי.

התשובה (הפשוטה) שלי לשאלה האם מישהו צריך שרת ביתי היא באופן גורף לא. לאף אחד (כולל אותי) אין באמת צורך בשרת ביתי, אבל שרת ביתי יכול לשמש לשדרוג הרשת הביתית. למעשה, כמעט לכל בעיה ניתן למצוא פתרון "ענני", ולרוב גם חינמי. הבעיות שאין להם פתרון פשוט, הן לרוב בעיות איזוטריות או לא משמעותיות.

שרת ביתי יכול לשמש למגוון שירותים שונים, שהטריוויאלי שבהם הוא שרת ווב עם אתר אינטרנט שיושב על המחשב בבית. אבל הוא יכול לשמש לעוד המון דברים אחרים: שרת שיתוף אינטרנט ביתי ("ראוטר למתקדמים"), שרת שיתוף קבצים ביתי, שרת גיבוי אוטומטי, שרת בסיס נתונים, שרת הדפסה, שרת לאתר אינטרא-נט, שרת דוא"ל, שרת שמות מתחם (DNS), שרת למטרות פיתוח, שרת לוגים, שרת לשליפת מידע מהרשת באופן אוטומטי, שרת לשליטה על תאורת הבית [1] (אפשר גם להמשיך בקו הזה וליצור "בית חכם"), שרת לשיבוש האינטרנט הביתי*, שרת התחברות מרחוק, שרת משחקים עם חברים, שרת מוסיקה [2], שרת פרוקסי, שרת גישה חופשית לרשת להתחברות ממקום עבודה עם הגבלות אינטרנט, שרת קשר חברתי – SIP, VOIP, XMPP, ועוד. ההגבלה היחידה על כמות האפשרויות היא רק דמיונו של המשתמש.

אחד הדברים שכל אחד שרוצה להרים שרת ביתי צריך לשאול את עצמו זה האם הוא יודע מה הוא רוצה לעשות עם השרת. אם התשובה לא ברורה, ואין פה איזשהי מטרה לימודית – עזבו, שרת ביתי זה לא בשבילכם. אם בכל זאת החלטתם להרים שרת – המדריך הבא יכול לעזור לכם.

הנחת הבסיס שלי לגבי הידע שלכם במחשבים היא שאתם בעלי ניסיון בסיסי או יותר בניהול מערכת לינוקס אובונטו. המדריך לשרת ביתי לא ילמד אותכם איך להתקין אובונטו או איך להתחבר איתו לאינטרנט – בשביל זה יש המון מדריכים ברשת, כולל מדריכים מעולים בעברית. הדבר היחיד שדרוש בשביל להפוך מחשב שמריץ אובונטו לשרת ביתי זה קישור לאינטרנט. המדריך אינו מיועד למי שרוצה ללמוד לעומק על שרתים ורשתות (הוא יכול להיות נקודת פתיחה, לא יותר), ואינו מיועד למי שרוצה שרת שהוא יותר מאשר שרת ביתי עם מספר מועט של משתמשים שמחוברים אליו ברגע נתון. אינני מתכוון לכסות נושאי אבטחה או אופטימיזציה, אלא רק הרמת השירותים עם הגדרות ברירת מחדל (בשיטת "אם זה עובד, אל תיגע"). בנוסף – את כל הפקודות הדרושות אכתוב בצורתן הטקסטואלית, וזה מכיוון שלא בא לי להתעסק עם סוגים שונים של שולחנות עבודה ושפות מערכת שונות, וכמובן לא עם מערכות שהותאמו אישית ושהכפתורים כבר לא במקומם הראשוני. סיבה שניה לבחירה בפקודות טקסטואליות במדריך היא בשביל להתאים לאפשרות של מי שרוצה להתקין שרת ביתי על גרוטאה במקום לזרוק, ומתקין אובונטו (גירסת שרת) ללא ממשק משתמש גרפי.

במדריך הנוכחי אסקור הקמת שרת אינטרנט פשוט (HTTP), בפרקים הבאים אסקור סוגי שרתים אחרים שאפשר להעמיס על שרת ביתי.

בשביל להרים שרת ווב, כזה שאפשר לגלוש אליו, צריך להתקין "שרת LAMP", שזה קיצור של Linux Apache Mysql Php. לינוקס זה מערכת ההפעלה, אפאצ'י זה תוכנת השרת ש"מדברת" עם הדפדפן של הגולשים ומביאה אליהם את המידע לפי הכתובת, MySQL זה בסיס נתונים, ו-PHP זה שפת סקריפטים שבה כותבים את תוכן האתר. הדפים שיוצגו למשתמש כתובים בשפה שנקראת HTML, והם הפלט של הסקריפטים שנכתוב ב-PHP. הדפים יעברו בין השרת לדפדפן של הגולש בפרוטוקול שנקרא HTTP (בדיוק כמו שמתחילה כל כתובת אינטרנט).

בשביל אתר עם כמה דפים סטטיים לא חייבים להתקין MySQL, אבל (כמעט) כל פלטפורמה מוכנה דורשת גם בסיס נתונים מאחוריה. לפיכך מומלץ מאוד להתקין הכל יחד, וזה גם מפשט את תהליך ההתקנה עצמו (וכמו שכבר כתבתי, אין בכוונתי לעבור על הגדרות התאמות והעדפות לכל צורך).

התקנת השרת מתחילה בהתקנה של האפשרות להתקין תוכנות לפי משימה:

sudo apt-get install tasksel

כאן תידרשו לכתוב את סיסמת המנהל. לאחר מכן הפעילו את tasksel:

sudo tasksel

בחרו את האפשרות LAMP server ע"י ירידה עם החיצים וסימון עם מקש רווח. כעת לחצו על אנטר.

אפשרות אחרת, במקום לבחור את השרת LAMP בתוך התפריט, להגיד ל-tasksel להתקין מיד את lamp:

sudo tasksel install lamp-server

לאחר שכל הקבצים ירדו והותקנו, יש לכם שרת HTTP. מזל טוב! אפשר להתחיל ליהנות.

גילשו לכתובת http://localhost/ [3], שם אתם צריכים לראות את הדף שמבשר לכם שהשרת עובד ("It works!").

פרט קטן וחשוב: אתם יכולים לגשת לאתר על המחשב שלכם עי הקלדת הכתובת http://localhost/ [3] או ע"י מספר ה-IP העצמי של המחשב בכתובת http://127.0.0.1/ [4].

בואו ננסה לשנות מעט את תוכן האתר:

cd /var/www/
sudo mv index.html page1.html
sudo nano index.php

באובונטו עם ממשק גרפי אפשר להחליף את השורה האחרונה ב:

sudo gedit index.php

כדי לקבל את עורך הטקסט הגרפי של אובונטו (מקביל ל"פנקס רשימות").

במסך עריכת הקובץ, רשמו:

<?php phpinfo(); ?>

שמרו ע"י Ctrl+O, וצאו מהמסך ע"י Ctrl+X.

כעת גלשו שוב לאתר על השרת שלכם, שם יחכו לכם הרבה נתונים על השרת שלכם.

החל מעכשיו, הספריה /var/www/ היא ספרית הבית של האתר החדש שלכם. לאחר התקנת והפעלה ראשונה של השרת, כדאי מאוד להכיר את מערכת הקבצים של לינוקס. אי אפשר לערוך סתם כל קובץ בתוך הספריה /var/www/, כי צריך הרשאות מתאימות לשם כך. אני לא ממליץ על עריכת קבצים כל הזמן עם הרשאות משתמש על (sudo), ולכן ההמלצה שלי היא לקשר את הספריה של האתר לתוך ספרית הבית שלכם, וכתיבת האתר בהרשאות הרגילות.

אז לפני שאתם כותבים דברים נוספים לקבצים בתוך /var/www/, הנה הפעולות שיקלו עליכם את העריכה בעתיד:

sudo rm -rf /var/www/
mkdir ~/MySite/
sudo ln -s ~/MySite/ /var/www/
echo "<?php phpinfo(); ?>" > ~/MySite/index.php

החל מעכשיו, הספריה MySite שבתוך ספרית הבית שלכם היא הספריה של האתר שלכם. כל קובץ שתשימו שם יהיה קיים באתר שלכם. לדוגמא: אם תעתיקו לספריה קובץ תמונה בשם IMG_0001.JPG, תוכלו לגלוש לכתובת http://localhost/IMG_0001.JPG ולראות שם את התמונה. אם תשימו בספריה הזו קבצי זיפ למשל, תוכלו "להוריד" אותם מהאתר שלכם ע"פ שם הקובץ שלהם. אותו דבר תקף לגבי ספריות: קובץ בשם file.txt שיהיה בתוך ספריה בשם dir בתוך הספריה של האתר שלכם, יהיה זמין גם בכתובת http://localhost/dir/file.txt. בשלב זה, ספריות שבהם אין קובץ בשם index.php יציגו את הקבצים שיש בתוכם. לשינוי כמה הגדרות בסיסיות בקשר להצגת הקבצים בספריות האתר, קראו כאן [5] את ההסבר שלי מהתקופה שבה גם אני הרמתי את האתר שלי על השרת הביתי.

בשלב זה אתם יכולים להתקין על השרת שלכם את "וורדפרס [6]", תוכנה פופולרית לניהול בלוגים כמו זה, או להתקין את "phpBB [7]" לניהול מערכת פורומים, או לכתוב אתר בעצמכם, בשפת HTML הסטטית, או בשפת צד-שרת דינמית כמו PHP, Perl או Python.

במידה והשרת הביתי שלכם לא יושב מאחורי ראוטר, אלא מחובר ישירות לאינטרנט, זה גם הזמן להזמין את חברים שלכם לבקר באתר החדש שלכם – תנו להם את מספר ה-IP שלכם (אפשר לברר אותו כאן [8]) ותגידו להם לכתוב את המספר הזה בדפדפן שלהם. אם אתם מאחורי נתב, תצטרכו להפנות את פורט 80 TCP אל השרת שלכם.

בהצלחה!

נ.ב.: אשמח לשמוע הערות והארות, וכמובן גם אם המדריך עזר למישהו. לבקשות עזרה אנא פנו לפורומים המיועדים לכך באובונטו ישראל [9] או ווטסאפ [10].

חלקים נוספים במדריך לשרת ביתי:

חלק שני – התחברות מרחוק [11]

חלק שלישי – שיתוף אינטרנט ביתי [12]

חלק רביעי – שרת פרוקסי מאובטח [13]

* לדוגמא: יצירת אתר אינטרנט שיגיב על כל בקשה עם דף ריק, בתוספת שרת DNS שידווח שפייסבוק זה הוא עצמו, וכך לחסוך הרבה פניות מיותרות לסקריפטים בשרתים מרוחקים.