آپاچی؛ شب ۵: اولین میزبان مجازی با DocumentRoot مستقل
فهرست نوشته
میخواهیم نام 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 .