می‌خواهیم نام www.example.test به محتوای خودمان برسد. VirtualHost یا میزبان مجازی، تنظیمات یک سایت را روی یک IP و پورت مشخص از سایت‌های دیگر جدا می‌کند.

این جلسه بخشی از دورهٔ آپاچی در ۵۰ شب است. قرارداد نام‌ها، مسیرها و روش اعمال تغییر را در راهنمای دوره بخوان.

محیط: وب‌سرور نصب‌شده، headers و rewrite آماده، متغیر WWW_CONF مطابق راهنما.

فایل و پیکربندی سایت#

sudo install -d -m 755 /var/www/apache-lab/public
printf '%s\n' 'apache-lab static OK' | sudo tee /var/www/apache-lab/public/index.html
sudo chmod 644 /var/www/apache-lab/public/index.html

این فایل ثابت متعلق به root می‌ماند؛ وب‌سرور فقط آن را می‌خواند. محتوای زیر را در فایل WWW_CONF شاخهٔ خودت قرار بده:

<VirtualHost *:80>
    ServerName www.example.test
    DocumentRoot /var/www/apache-lab/public
    <Directory /var/www/apache-lab/public>
        Options -Indexes -Includes -ExecCGI
        AllowOverride None
        Require all granted
    </Directory>
    ErrorLog /var/log/apache2/www-error.log
    CustomLog /var/log/apache2/www-access.log combined
</VirtualHost>

در Alma/Rocky فقط مسیر دو لاگ را به /var/log/httpd/ تغییر بده. AllowOverride None خواندن .htaccess را غیرفعال می‌کند و تنظیمات را در فایل اصلی سایت نگه می‌دارد. -Indexes فهرست فایل‌های پوشهٔ بدون index را می‌بندد.

در Debian/Ubuntu sudo a2ensite 100-www و sudo a2dissite 000-default را اجرا کن. در Alma/Rocky فایل داخل conf.d خودکار خوانده می‌شود. وضعیت برچسب فایل را طبق شب هفتم بررسی کن، سپس روال اعمال تغییر را انجام بده.

نتیجهٔ قابل تشخیص#

sudo "$APACHE_CTL" -S
curl --resolve www.example.test:80:192.168.56.10 http://www.example.test/

برای شاخهٔ RHEL آدرس .30 را جایگزین کن. --resolve نام HTTP را حفظ می‌کند و اتصال را به IP آزمایشگاه می‌برد. باید متن apache-lab static OK دیده شود و لاگ سایت یک ورودی تازه داشته باشد.

بازگشت: فایل سایت را از نسخهٔ پشتیبان برگردان؛ در Debian می‌توانی آن را با a2dissite 100-www غیرفعال کنی. پس از هر بازگشت نیز syntax test و reload لازم است.

منبع: نمونه‌های VirtualHost .