interhost

הבלוג
הכל על שרתים, תקשורת ולינוקס

ארכיון פוסטים מהחודש "מרץ, 2010"

הוספת דומיינים ב-Apache

יום שלישי, 9 במרץ, 2010

היום אראה לכם איך מוספים דומיינים חדשים (VirtualHosts) ב-Apache 2.2.x. אגב אתם יודעים מה המשמעות של VirtualHost?
אובכן הוא למעשה מאפשר להגדיר הוסטים (דומיינים) שונים על אותה כתובת IP ומכאן נובע שמו "VirtualHost" הוא למעשה הוסט וירטואלי שיושב על הוסט (כתובת) פיזית אחת.

כעקרון בצורת עבודה נכונה צריך להגדיר VirtualHost פעם אחת עבור כל כתובת IP חדשה ש-Apache מאזין בה (או  עבור כל פורט חדש נוסף). את ההגדרה עושים בעזרת הפקודה:

NameVirtualHost 10.10.10.50

לאחר הגדרה זו ניתן להגדיר כמה הוסטים וירטואליים שרוצים שישבו על הכתובת הזאת.

להלן ההגדרה המלאה של הדומיין החדש:

<VirtualHost 10.10.10.50>
ServerName domain.com
ServerAlias www.domain.com
ServerAdmin admin@domain.com
DocumentRoot /home/domain/public_html
#        CustomLog /var/log/httpd/domains/domain.com.log combined
#        ErrorLog /var/log/httpd/domains/domain.com.error.log
<Directory "/home/domain/public_html">
Options +FollowSymLinks -Indexes
AllowOverride All
</Directory>

ScriptAlias /cgi-bin/ /home/domain/public_html/cgi-bin/

<Directory "/home/domain/public_html/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

כל הגדרה של VirtualHost צריכה להיסגר בסופה (בדומה לHTML) בצורה:

</VirtualHost>

תחילה מגדירים את ה ServerName זאת בכדי שה-APACHE ידע מהפניה עליו לאיזה דומיין (וירטואלהוסט) שייכת הפניה.
אם רוצים להגדיר מספר שמות ניתן לעשות זאת ב-ServerAlias.

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

לאחר שהגדרנו את תיקיית האב בעזרת שינוי משתנה ה-DocumentRoot עלינו להגדיר את הנתיב אל הקבצים (של התיקיה) כ-Directory, הגדרה זאת חיונית כדי להחיל הגדרות ותנאים של Apache על התיקיה. כמו למשל הגדרת -Indexes אשר חוסמת הגדרת רשימת קבצים של התיקיה אם לא נמצא קובץ index.html.

אם הולכים להישתמש בסקריפטים של cgi (perl) באתר אז יש צורך גם לצור תיקיית cgi-bin תחת תיקיית ה-public_html ולהגדיר אותה בהתאם כמו בדוגמא.

פרמט הScriptAlias מאפשר להגדיר נתיב "וירטואלי" שיהיה נגיש וובית, כעקרון זה שימושי אם רוצים למקם את תיקיית cgi-bin מחוץ ל-Directory (מטעמי אבטחה).

אם עובדים במערכת Debian את הגדרות ה VirtualHosts רצוי לשים בקובץ נפרד עבור כל דומיין ולמקם את הקובץ בנתיב הבא:

/etc/apache2/sites-enabled/

ב-CENTOS לא עובדים לצערי בשיטה כזאת. אפשר לבנות את המערך לבד או פשוט למקם את ההגדרות הסוף קובץ ה-httpd.conf שנמצא ב-

/etc/httpd/conf/httpd.conf

לאחר השינויים יש לשמור ולאתחל את ה-Apache, למי שלא יודע עושים זאת כך:

: /etc/init.d/apache2 restart

CentOS: /etc/init.d/httpd restart

להורדת קובץ דוגמא של הגדרת וירטואל הוסט לחץ כאן.