آپاچی؛ شب ۴: فایلهای پیکربندی، Include و ماژولها
فهرست نوشته
یک directive درست در فایل خواندهنشده هیچ اثری ندارد. امشب یاد میگیریم Apache چه فایلهایی را میخواند و ماژول لازم برای هر قابلیت را چگونه پیدا کنیم.
این جلسه بخشی از دورهٔ آپاچی در ۵۰ شب است. قرارداد نامها، مسیرها و روش اعمال تغییر را در راهنمای دوره بخوان.
محیط: نصب شب دوم یا سوم؛ متغیرهای شاخهٔ خودت را از راهنما تعریف کرده باش.
یک منبع برای هر تنظیم#
sudo "$APACHE_CTL" -t -D DUMP_INCLUDES
sudo "$APACHE_CTL" -M
sudo "$APACHE_CTL" -V
Include فایل دیگری را وارد پیکربندی میکند؛ IncludeOptional نبودن فایل مطابق الگو را مجاز میداند. خروجی فرمان اول مسیرهای واقعاً خواندهشده را نشان میدهد. پیش از تغییر، از فایل هدف نسخهٔ پشتیبان با پسوند .bak بگیر؛ فایل پشتیبان نباید همچنان با الگوی *.conf بارگذاری شود.
در Debian/Ubuntu، فایلهای available پیشنهادهای قابل فعالسازیاند و پیوندهای enabled تعیین میکنند چه چیزی خوانده شود:
sudo a2enmod headers rewrite
sudo a2enconf apache-lab
فرمان دوم بعد از ساخت /etc/apache2/conf-available/apache-lab.conf با محتوای زیر اجرا میشود. در Alma/Rocky همان محتوا را در /etc/httpd/conf.d/00-apache-lab.conf قرار بده:
ServerName localhost
این نام پیشفرض global است؛ هر سایت در VirtualHost نام خودش را خواهد داشت. در RHEL برای headers و rewrite ابتدا httpd -M را ببین؛ بارگذاری دوبارهٔ ماژولِ موجود لازم نیست.
اعمال تغییر#
روال راهنما را انجام بده: آزمون نحو، reload، بررسی journal و یک درخواست تازه. reload پیکربندی را بازخوانی میکند؛ تغییر MPM یا مدل اجرای PHP ممکن است restart بخواهد. MPM مدل مدیریت فرایندها و threadهای Apache است؛ آن را در شب پانزدهم دقیقتر میبینیم.
آزمایش: در یک Clone نام directive را موقتاً اشتباه بنویس. انتظار داریم -t شکست بخورد و تغییر اعمال نشود. فایل سالم را برگردان و دوباره بررسی کن. از IfModule برای پنهان کردن نبودن یک ماژول امنیتی ضروری استفاده نکن.
منبع: فایلهای پیکربندی Apache ، a2enmod .