learn

نصب لاراول در CentOS Stream 9؛ PHP، Composer و Apache

راهنمای نصب تازه Laravel با تفکیک مالک کد از کاربر اجرا و حفاظت از فایل‌های خصوصی پروژه.

نصب لاراول در CentOS Stream 9 به PHP سازگار، Composer و تنظیم درست وب‌سرور نیاز دارد. این راهنما برای پروژهٔ تازهٔ Laravel 13 و Apache با PHP-FPM است؛ مسیر ارتقای برنامهٔ موجود نیست. روی سرور دارای سایت یا کنترل‌پنل، تنظیمات این نمونه را بدون تطبیق جایگزین نکنید.

پیش‌نیاز نصب لاراول در CentOS

طبق مستند استقرار Laravel، شاخهٔ 13 حداقل PHP 8.3 و مجموعه‌ای از افزونه‌ها را نیاز دارد. ابتدا مخازن واقعی را بررسی کنید؛ خانوادهٔ به‌روز EL9 stream نسخهٔ 8.3 دارد، اما باید در خروجی همین سرور موجود باشد.

cat /etc/os-release
dnf module list php
sudo dnf module install php:8.3/common
sudo dnf install httpd php-cli php-fpm php-mbstring php-xml php-pdo php-mysqlnd unzip acl policycoreutils-python-utils
php -v
php -m

این نصب برای محیط تازه و بدون stream متعارض است. در محیط موجود، جابه‌جایی شاخه به برنامهٔ ارتقا نیاز دارد. نبود افزونه را با بستهٔ همان PHP برطرف کنید؛ گزینهٔ ignore-platform-reqs راه‌حل ناسازگاری نیست.

Composer و ساخت پروژه

Composer را از منبع رسمی با بررسی امضای نصب‌کننده نصب کنید و فرمان composer را در PATH حساب استقرار قرار دهید. سپس composer --version را بررسی کنید. ساخت پروژه را با کاربر عادیِ دارای sudo انجام دهید؛ Composer پروژه را با root اجرا نکنید.

مسیر نمونه باید تازه و خالی باشد. دستور زیر مالک آن را کاربر فعلی می‌گذارد:

sudo install -d -o "$(id -un)" -g apache -m 0750 /var/www/hn-laravel
cd /var/www/hn-laravel
composer create-project laravel/laravel . "13.*"
composer check-platform-reqs
php artisan --version

check-platform-reqs نسخه و افزونه‌های PHP واقعی CLI را بررسی می‌کند. نسخه و اکستنشن‌های FPM نیز باید با برنامه سازگار باشند.

تنظیم محیط و دیتابیس

فایل .env را بررسی کنید. برای محیط عمومی، APP_ENV=production و APP_DEBUG=false باشد و APP_URL نشانی واقعی HTTPS را نشان دهد. رمزها و .env نباید در مخزن عمومی قرار گیرند. تنظیمات محیطی Laravel مرجع این گزینه‌هاست.

در نصب تازه، SQLite پیش‌فرض است و معمولاً فایل آن و جدول‌ها ایجاد می‌شوند. وجود pdo_sqlite و موفق بودن مرحلهٔ migration را کنترل کنید. برای استفادهٔ وب، فایل SQLite را به مسیر خصوصیِ قابل‌نوشتن مانند storage/app/database.sqlite منتقل و DB_DATABASE را به مسیر کامل آن تنظیم کنید؛ این انتقال فقط برای نمونهٔ تازهٔ بدون استفاده است.

اگر دیتابیس دیگری انتخاب می‌کنید، آن را با حساب محدود برنامه ایجاد و تنظیم کنید. migration روی دیتابیس واقعی تغییر ساختار می‌دهد. APP_KEY معمولاً در نصب ساخته می‌شود؛ فقط اگر در پروژهٔ تازه خالی است php artisan key:generate را اجرا کنید. تعویض کلیدِ برنامهٔ فعال می‌تواند دادهٔ رمزگذاری‌شده را غیرقابل خواندن کند.

مجوزها و SELinux

در این مثال کاربر FPM برابر apache فرض شده است؛ آن را با pool واقعی تطبیق دهید. کد برای کاربر اجرا خواندنی باشد و نوشتن فقط به storage و bootstrap/cache محدود شود:

sudo setfacl -R -m u:apache:rX /var/www/hn-laravel
sudo setfacl -R -m u:apache:rwX /var/www/hn-laravel/storage /var/www/hn-laravel/bootstrap/cache
sudo setfacl -R -d -m u:apache:rwX /var/www/hn-laravel/storage /var/www/hn-laravel/bootstrap/cache
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/hn-laravel/storage(/.*)?'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/hn-laravel/bootstrap/cache(/.*)?'
sudo restorecon -Rv /var/www/hn-laravel

این قواعد برای مسیر تازه‌اند؛ اگر قاعده از قبل وجود دارد آن را بررسی کنید. برچسب پایدار SELinux با semanage و restorecon اعمال می‌شود. مجوز 777، مالک کردن کل کد توسط وب‌سرور یا خاموش کردن SELinux لازم نیست.

تنظیم Apache روی پوشه public

در فایل اختصاصی /etc/httpd/conf.d/hn-laravel.conf نمونهٔ زیر را با دامنهٔ واقعی تنظیم کنید. ریشهٔ وب باید فقط public باشد:

<VirtualHost *:80>
    ServerName app.example.com
    DocumentRoot /var/www/hn-laravel/public
    <Directory /var/www/hn-laravel/public>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

AllowOverride در این محدوده اجازهٔ استفاده از .htaccess پروژه را می‌دهد. پیکربندی PHP-FPM بسته و ماژول rewrite باید فعال باشند. سپس:

sudo php-fpm -t
sudo httpd -t
sudo systemctl enable --now php-fpm httpd
sudo systemctl reload httpd

آزمون و انتشار واقعی

پاسخ دامنه و مسیرهای داخلی را بررسی کنید. خطای مجوز را در لاگ Apache، FPM و storage/logs دنبال کنید؛ موفق بودن صفحهٔ خوشامدگویی فقط شروع آزمون است. درگاه وب را در ناحیهٔ درست فایروال طبق راهنمای Apache در EL9 تنظیم و پیش از ورود اطلاعات کاربران HTTPS معتبر را تکمیل کنید؛ باز کردن 443 به‌تنهایی گواهی ایجاد نمی‌کند.

اگر رابط پروژه build لازم دارد، وابستگی‌ها و خروجی آن را با نسخهٔ سازگار Node بسازید. صف‌ها، زمان‌بندی، ایمیل، بکاپ و آزمون بازیابی نیز مطابق نیاز برنامه تنظیم می‌شوند. artisan serve جای سرویس عمومی Apache/PHP-FPM نیست.

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

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

مطالب مرتبط

ارسال نظر

فهرست مطالب