XAMPP / WAMP – דומיינים על מחשב הפיתוח הלוקאלי?!

יולי 15, 2013

בין אם אנחנו רוצים לעבוד בנוח, ובין אם אנחנו רוצים להתקין מערכת ניהול תוכן שמחייבת אותנו לעבוד על דומיין, לפעמים אנחנו רוצים לעבוד ישירות על דומיין.
ומה קורה אם אין לנו עדיין דומיין, לא רכשנו אחסון, או קודם כל רוצים לעבוד לוקאלית?
בדרך כלל מה שנעשה הוא נקים שרת XAMPP או WAMP על המחשב שלנו ונעבוד בתתי תיקיות תחת דומיין ה- localhost, אבל מה נעשה? לפעמים יש דרישות לדומיין. אז מה עושים?

שלב א’ – התקנה והגדרת שרת האינטרנט
קודם כל נגדיר שרת XAMPP או WAMP כרגיל.
במקרה זה אנו מדברים על ממערכת הפעלה Windows, אם אתם עובדים עם מערכת הפעלה אחרת זה תהליך דומה מאוד.
נתקין את השרת ונוודא שאנחנו יכולים לגשת אל localhost מהדפדפן (Chrome יכול טיפה להציק, לפעמים הוא רוצה לחפש בגוגל במקום להכנס לאן שרצינו, אז במיוחד בשבילו נכתוב http://localhost)
כשנראה את העמוד It Works! או העמוד ברירת המחדל של XAMMP אנחנו נוכל לעבור לשלב הבא.

שלב ב’ – הגדרת השרת לעבודה מול דומיינים
כעת אנחנו רוצים לערוך את ההגדרות של apache.
נכנס לתיקיה C:\wamp\bin\apache\apache2.2.22\conf ונפתח את הקובץ httpd.conf בעורך הטקסט החביב עלינו ונחפש את השורה הבאה:

Include conf/extra/httpd-vhosts.conf

אם מופיע סימן ה- # בתחילת השורה – נמחק את הסימן.
נפעיל מחדש את apache ניכנס ל- localhost ונוודא שהכל פועל כרגיל.

שלב ג’ – הגדרת דומיינים
כעת שהשרת מוגדר לעבוד עם דומיינים אנחנו יכולים להגדיר את הדומיינים ב apache.
כדי לעשות זאת, נגיע לתיקיה C:\wamp\bin\apache\apache2.2.22\conf\extra ונפתח את הקובץ httpd-vhosts.conf.
כנראה שהקובץ מגיע כבר עם כמה הגדרות לדוגמה, אבל אנחנו נתחיל מ-0. נמחק את תוכן הקובץ (כמובן לאחר גיבוי של הקובץ המקורי) ונתחיל.
קודם כל נוסיף את השורה הבאה:

NameVirtualHost *:80

אם apache מוגדר לרוץ על פורט אחר מ-80, נגדיר את הפורט המתאים.

אם תנסו לגשת עכשיו אל localhost אתם תוכלו לראות שהשרת לא מוצא את האתר – זה מפני שלא הגדרנו את הדומיין, השרת מחפש דומיין בשם localhost ולא מוצא כזה.
לכן אנחנו נוסיף את הדבר הבא:

<VirtualHost *:80>
    DocumentRoot "C:\wamp\bin\apache\apache2.2.22\htdocs"
    ServerName localhost
</VirtualHost>

מה שאנחנו בעצם עושים הוא להגדיר לשרת כתובת שברגע שינסו לגשת אליה, השרת ינתב אותה על פי הכללים שנגדיר כאן. כמו שיש לנו בקובץ httpdocs.conf שמוגדרת תיקית בית (DocumentRoot ) לשרת localhost, אנו מגדירים כאן תיקית בית לכל “מארח”, או לכל דומיין שאנחנו רוצים להגדיר.
נפרט על כל ההגדרות כאן בהמשך.

כעת אנחנו נגדיר דומיין נוסף. נניח שנרצה לעבוד על דומיין my-local-domain.me (כן, זה אפשרי להגדיר סיומת [או TLD] משלנו).
כל דומיין שנרצה להגדיר יהיה בתוך תגי <VirtualHost>
נגדיר אותו כך:

<VirtualHost *:80>
        DocumentRoot "C:\Users\Ilan\Dropbox\web dev\my-local-domain"
        ServerName my-local-domain.me
	 <Directory "C:\Users\Ilan\Dropbox\web dev\my-local-domain">
            AllowOverride All
            Order Allow,Deny
            Allow from all
            Require all granted
       </Directory>
</VirtualHost>

נפשט קצת את מה שאנחנו עושים:
DocumentRoot – התיקיה שבה אנחנו שמים את תוכן האתר. אני עובד בתיקיה לכל אתר תחת תיקיה שמייועדת לכך בדרופ-בוקס, לכן הנתיב שלי נראה כך: C:\Users\Ilan\Dropbox\web dev\my-local-domain
ServerName – בעצם כתובת הדומיין
<Directory> – כאן אנו מאגדים את ההגדרות לתיקיה הראשית של האתר, תוכן זה יהיה דומה לתוכן של קובץ .htaccess שאנחנו יכולים לשים באתר שלנו. הנתיב שאנחנו שמים פה צריך ליהיות זהה לזה של ה DocumentRoot.
AllowOverride, Order, Deny, Allow – אנחנו מגדירים הרשאות לתיקיה. קודם כל נגדיר AllowOverride כך שנוכל להשתמש בקבצי .htaccess. ניתן להגדיר זאת גם ל- none כדי לא לאפשר קבצים אלו. לאחר מכן,
אנו מגדירים הרשאות גישה לתיקיה. Order לא ממש משנה לנו מפני שאנחנו מגדירים גישה לכולם ולא חוסמים. Allow from all מגדיר שכולם יכולים לגשת לאתר.
אם נרצה לדוגמה לאפשר גישה רק מהמחשב הנוכחי נגדיר כך:

Order Deny,Allow
Deny from all
Allow from 127.0.0.1

נגדיר את הסדר קודם כל לחסום ואז להרשות, נגדיר חסימה להכל, ואז נגדיר גישה פרטנית רק ל- 127.0.0.1.
באותה מידה נוכל להרשות גישה רק לרשת המקומית אם נוסיף אחרי ה Allow בנוסף את השורה הבאה:

Allow from 192.168.1

כל כתובות הIP שמתחילות ב 192.168.1.* יוכלו לגשת לאתר שלנו.
Require all granted – תחת WAMP אין להגדיר את זה, אך XAMPP דורש זאת כדי לעבוד כמו שצריך – ללא זה נקבל שגיאה 403 – forbidden
בנוסף נוכל להגדיר כאן עוד כמה הגדרות כמו Options -Indexes כדי לבטל תצוגת תיקיות אם אין לנו קובץ index.html או index.php

שלב ד’ – אחרון חביב – הגדרת דומיין בקובץ hosts
אם כל מה שעשינו עד עכשיו לא הספיק לכם כדי לחזור בכם ולעבוד מול localhost פשוט, נשאר לנו להגדיר דבר אחד קטן נוסף.
אם ננסה עכשיו לגשת לדומיין שלנו, my-local-domain.me, נראה שהדפדפן לא יודע על מה אנחנו מדברים ופשוט יעשה חיפוש בגוגל. זה קורה מפני שהדפדפן בודק בשרתי DNS שמוגדרים לו (בד”כ השרתים של ספקית האינטרנט אלא אם הגדרנו משהו אחר בהגדרות של הראוטר/מודם) ולא מוצא כתובת IP שמוגדרת לכתובת my-local-domain.me – זאת כמובן מפני שלא רשמנו דומיין כזה.
כדי לעקוף את הבעיה הזאת, אנחנו יכולים להגדיר את הכתובת בשרת DNS משלנו. הכוונה כמובן לשרת הפנימי של המחשב שלנו. לכל מחשב יש קובץ hosts שבו ניתן להגדיר עקיפה להגדרות של שרתי ה DNS שמוגדרים אצלנו.
תחת Windows הקובץ נמצא בנתיב הבא:

C:\Windows\System32\drivers\etc

כדי לערוך אותו תחת מערכת הפעלה ויסטה ומעלה יש לפתוח את פנקס הרשימות כמנהל, לכן נלחץ קליק ימני על notepad ונבחר ב- run as administrator.
נבחר ב- File > Open ונגיע לתיקיה הזאת. etc היא תיקיה מוסתרת, וכך גם הקובץ שאנחנו מחפשים, לכן נרצה להגדיר להציג תיקיות וקבצים מוסתרים (נמצא בהגדרות תיקיה).
עכשיו, גם אם אנחנו מציגים קבצים מוסתרים, לא נראה כלום בתיקיה. יש לבחור בתיבת הבחירה מעל כפתור ה Open את סינון הקבצים – נבחר שיציג את כל הקבצים (All files *.*) ואז נפתח את הקובץ Hosts (שימו לב, הקובץ ללא סיומת!)
אנחנו יכולים לראות דוגמה לרשומה בקובץ באחת מהשורות שמתחילה ב-# (שורות אלו הם הערות)
נוסיף את הדומיין שלנו לקובץ בצורה הבאה:

127.0.0.1 my-local-domain.me

ניתן להוסיף עוד דומיינים באותה השורה על ידי הפרדה ברווח, לדוגמה:

127.0.0.1 my-local-domain.me sub.my-local-domain.me news.my-local-domain.me

כעת אנחנו יכולים לגשת לכתובת my-local-domain.me בדפדפן ונוכל לראות את האתר שלנו.
אבל, לצערינו, כדי לגשת לאתר ממחשבים אחרים נצטרך להגדיר את הדומיין שלנו בקבצי Hosts של המחשבים כולם. מאותם המחשבים ברשת נגדיר את הIP הפנימי של המחשב (192.168.1.*), ואם אנחנו רוצים לגשת לאתר ממחשב ברשת אחרת, נגדיר את הכתובת IP החיצונית שלנו.
דבר נוסף שיש לעשות כדי שנוכל להתחבר ממחשב מרשת אחרת הוא ליצור חוק port forward בראוטר שיפנה את הפורט 80 למחשב שמריץ את השרת.

כמה דברים נוספים:

  • במערכות מבוססות UNIX, שזה בערך כל הפצה של לינוקס ומאקינטוש קובץ ה- Hosts הוא בנתיב /etc/hosts (ה- hosts כאן הוא הקובץ, שוב ללא סיומת) וגם דורש הרשאות מנהל ראשי (root) כדי לערוך אותו.
  • במאקינטוש יש תוכנה מעולה בשם Mamp Pro שמגדירה הכל בעצמה כמו גם מכילה בה את השרת ומסד הנתונים MySQL. התוכנה עולה 60$, אך אם הולכים להשתמש בה לטווח ארוך אני חושב שהיא שווה בהחלט את המחיר.

השאר תגובה