learn

نصب Apache در AlmaLinux 9؛ پیکربندی سایت و VirtualHost

راهنمای راه‌اندازی سایت آزمایشی روی شاخهٔ به‌روز AlmaLinux 9، با حفظ مسیر آموزش قدیمی 9.1.

نصب Apache در AlmaLinux با بستهٔ httpd انجام می‌شود. این صفحه در ابتدا برای AlmaLinux 9.1 منتشر شده بود؛ 9.1 اکنون انتشار قدیمی شاخهٔ 9 است. برای استفادهٔ واقعی، سیستم را در همان شاخه به‌روز نگه دارید و بسته‌ها را روی انتشار قدیمی ثابت نکنید.

پیش‌نیاز نصب Apache در AlmaLinux

دسترسی sudo، دامنهٔ قابل تنظیم و سروری بدون تداخل وب‌سرور لازم است. در سیستم دارای کنترل‌پنل از روش مدیریت همان پنل استفاده کنید. تغییر دستی فایل‌های تحت مدیریت پنل می‌تواند بعداً بازنویسی شود.

یادداشت انتشار 9.1 برای شناخت نسخهٔ اولیه مفید است، اما فهرست بسته‌های آن مرجع دائمی نصب امروز نیست. به‌روزرسانی سیستم را با توجه به سرویس‌های موجود و نیاز احتمالی به راه‌اندازی مجدد برنامه‌ریزی کنید.

sudo dnf upgrade
sudo dnf install httpd

ساخت پوشه و صفحهٔ نمونه

برای یک سایت تازه، پوشه‌ای اختصاصی زیر /var/www بسازید. example.com فقط نام نمونه است و باید در تمام مسیرها و تنظیمات با نام واقعی جایگزین شود:

sudo mkdir -p /var/www/example.com/html

یک فایل index.html با متن آزمایشی داخل این پوشه قرار دهید. فایل موجود یک سایت فعال را بازنویسی نکنید. وب‌سرور باید اجازهٔ خواندن فایل و عبور از پوشه‌های مسیر را داشته باشد؛ مجوز نوشتن عمومی یا 777 لازم نیست.

VirtualHost بدون پیوند نمادین اشتباه

در چیدمان متداول بستهٔ httpd، فایل‌های conf داخل /etc/httpd/conf.d/ خوانده می‌شوند. یک فایل جدید به نام /etc/httpd/conf.d/example.com.conf بسازید. مطابق میزبانی مبتنی بر نام در Apache، دامنه باید به ریشهٔ فایل همان سایت اشاره کند:

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/example.com/html
    <Directory /var/www/example.com/html>
        Options -Indexes
        AllowOverride None
        Require all granted
    </Directory>
    ErrorLog /var/log/httpd/example.com-error.log
    CustomLog /var/log/httpd/example.com-access.log combined
</VirtualHost>

برای این سایت ایستا، فهرست‌کردن پوشه خاموش است و .htaccess لازم نیست. برنامه‌ای مانند وردپرس نیازهای rewrite متفاوتی دارد که باید جدا تنظیم شوند. دستور قدیمی ساخت لینک فایل به همان پوشهٔ conf.d نادرست و غیرضروری بود؛ اینجا چنین لینکی نمی‌سازیم.

بررسی تنظیمات و SELinux

sudo apachectl configtest
sudo httpd -S
ls -Zd /var/www/example.com/html

آزمون باید Syntax OK بدهد و نگاشت میزبان درست باشد. در راهنمای خانوادهٔ RHEL 9، محتوای وب به برچسب مناسب SELinux نیاز دارد. برای مسیر متعارف بالا، برچسب پیش‌فرض را بازاعمال کنید:

sudo restorecon -Rv /var/www/example.com

اگر DocumentRoot خارج از مسیر متعارف است، سیاست مسیر باید جدا تعریف شود. خاموش کردن SELinux برای رفع خطای دسترسی، جای بررسی مجوز و برچسب درست را نمی‌گیرد.

راه‌اندازی و فایروال

sudo systemctl enable --now httpd
systemctl status httpd --no-pager
sudo firewall-cmd --state
sudo firewall-cmd --get-active-zones

فعال بودن firewalld را پیش‌فرض نگیرید. اگر از آن استفاده می‌کنید، zone متصل به رابط سایت را پیدا کنید. در فرمان‌های نمونهٔ زیر public را با zone واقعی عوض کنید:

sudo firewall-cmd --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=http

طبق راهنمای firewall-cmd، تنظیم زمان اجرا و دائمی جدا هستند؛ این دو فرمان همان مجوز مشخص را در هر دو ثبت می‌کنند. قواعد SSH و سایر سرویس‌ها را حذف نکنید. فایروال ارائه‌دهنده هم ممکن است به تنظیم نیاز داشته باشد.

آزمون دامنه و مرحلهٔ بعد

رکوردهای DNS را بررسی کنید و با دامنهٔ واقعی وارد سایت شوید. دیدن صفحهٔ پیش‌فرض از IP، صحت VirtualHost دامنه را اثبات نمی‌کند. برای آزمون محلی می‌توانید درخواست را با هدر نام میزبان بفرستید:

curl -I -H 'Host: example.com' http://127.0.0.1/

سپس محتوا و لاگ همان سایت را بررسی کنید. برای تغییرات بعدی، پس از configtest موفق از sudo systemctl reload httpd استفاده کنید. پیش از ورود کاربران واقعی، HTTPS، تمدید گواهی و نیازهای برنامه را نیز تکمیل کنید.

مطالعهٔ مرتبط

بازبینی فنی: ۱۴ آبان ۱۴۰۵. تاریخ انتشار اولیه و نشانی قبلی حفظ شده‌اند.

مطالب مرتبط

ارسال نظر

فهرست مطالب