דלג לתוכן הראשי

יצירת מארח וירטואלי (Virtual Host) באפאצ’י

תוכן המאמר

במדריך זה נסביר איך להגדיר מארח וירטואלי - vhost - בשרת אפאצ'י. זהו מאמר נוסף בסדרת מאמרים בנושא תחזוקת שרתים ולינוקס. כברירת המחדל, Apache מגיש את התוכן שלו מספרייה הממוקמת ב- /var/www/ תוך שימוש בתצורה הכלולה ב- /etc/apache2/sites-available/000-default.conf. במקום לשנות את קובץ התצורה של ברירת המחדל של אתר האינטרנט, ניצור מארח וירטואלי חדש. מארחים וירטואליים מאפשרים לנו להגדיר מספר דומיינים על שרת אפאצ'י אחד. לשם כך ניצור ספרייה בתוך /var/www/ עבור אתר לדוגמה שנקרא לו your_domain. צרו את ספריית השורש עבור your_domain באופן הבא:

sudo mkdir /var/www/your_domain

כעת נגדיר הרשאות על הספרייה עם משתנה הסביבה $USER, שאמור להתייחס למשתמש המערכת הנוכחי שלך:

sudo chown -R $ USER: $ USER / var/www/your_domain

נפתח קובץ הגדרות חדש תחת ספריית sites-available של Apache באמצעות עורך שורת הפקודה. בדוגמא שלנו אנחנו משתמשים ב-nano:

sudo nano /etc/apache2/sites-available/your_domain.conf

הדביקו את ההגדרות הבאות:

<VirtualHost *:80> ServerName your_domain ServerAlias www.your_domain ServerAdmin webmaster@localhost DocumentRoot /var/www/your_domain ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>

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

/var/www/your_domain

ניתן לבדוק את Apache ללא שם דומיין, על ידי הסרת האפשרויות ServerName ו-ServerAlias או על ידי הוספת תו # בתחילת השורות של כל אפשרות. כעת ניתן להשתמש ב-a2ensite כדי להפעיל את המארח הווירטואלי הזה:

sudo a2ensite your_domain

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

sudo a2dissite 000-default

כדי לוודא שקובץ התצורה שלכם לא מכיל שגיאות תחביר, ניתן להריץ:

sudo apache2ctl configtest

לבסוף, יש לטעון מחדש את אפאצ'י כדי שהשינויים ייכנסו לתוקף:

sudo systemctl טען מחדש את apache2

האתר החדש שלכם פעיל, אבל ספריית השורש שלו - /var/www/your_domain - ריקה.

תרחיש 1: מארח וירטואלי לפי שם דומיין (Name-based)

זה התרחיש הנפוץ ביותר. שרת אחד מארח מספר אתרים שכל אחד שלהם דומיין משלו (example1.com, example2.com), וכל הבקשות מגיעות לאותו IP. Apache מבחין ביניהם דרך כותרת ה-Host של הבקשה.

<VirtualHost *:80>
    ServerName example1.com
    ServerAlias www.example1.com
    DocumentRoot /var/www/example1
    ErrorLog ${APACHE_LOG_DIR}/example1-error.log
    CustomLog ${APACHE_LOG_DIR}/example1-access.log combined
</VirtualHost>

שמרו לקובץ /etc/apache2/sites-available/example1.conf, הפעילו עם a2ensite example1 ועשו systemctl reload apache2.

תרחיש 2: HTTPS עם Let's Encrypt

היום, רוב האתרים מחייבים HTTPS. לאחר התקנת certbot, הריצו certbot --apache -d example1.com -d www.example1.com. certbot יקפיץ אוטומטית את ה-VirtualHost לפורט 443 עם תעודת SSL, ויוסיף הפניה מ-HTTP ל-HTTPS.

חשוב: ודאו שפורט 443 פתוח בחומת האש (ufw allow 443/tcp) ושרשומת ה-A של הדומיין מצביעה על השרת לפני שאתם מריצים את certbot — אחרת ולידציית domain-control תיכשל.

בעיות נפוצות + פתרון

  • "AH00558: Could not reliably determine the server's fully qualified domain name" — הוסיפו ServerName 127.0.0.1 לקובץ /etc/apache2/apache2.conf.
  • שני VirtualHost נטענים על אותו דומיין — בדקו את הסדר עם apache2ctl -S; הראשון הוא ברירת מחדל לבקשות שלא תואמות שום ServerName.
  • שינויים בקובץ קונפיג לא מורגשים — חובה לעשות systemctl reload apache2 אחרי כל שינוי (לא רק restart).

בשרתים המנוהלים שלנו, יצירת אתר חדש דרך cPanel מגדירה את ה-VirtualHost אוטומטית עם תעודת SSL פעילה. VPS מנוהל כולל את הניהול הזה כסטנדרט.


2026 © אחסון לינוקס - אחסון אתרים מאז 2011

Visa Mastercard American Express PayPal Bitcoin