
مقدمه
وبسرور آپاچی (Apache) از قابلیتی به نام Virtual Hosts (میزبانهای مجازی) برای مدیریت چندین دامنه روی یک نمونه واحد استفاده میکند. به طور مشابه، PHP-FPM با استفاده از یک دیمون (Daemon) به مدیریت چندین نسخه PHP روی یک سرور میپردازد. با ترکیب Apache و PHP-FPM میتوانید چندین اپلیکیشن وب مبتنی بر PHP را میزبانی کنید؛ به طوری که هر کدام از نسخه متفاوتی از PHP استفاده کنند و همگی روی یک سرور و به صورت همزمان در حال اجرا باشند. این قابلیت بسیار کاربردی است، زیرا اپلیکیشنهای مختلف ممکن است به نسخههای متفاوتی از PHP نیاز داشته باشند، در حالی که برخی پیکربندیهای سرور مانند LAMP استاندارد فقط توانایی مدیریت یک نسخه را دارند. ترکیب آپاچی با PHP-FPM همچنین راهحلی مقرونبهصرفهتر نسبت به میزبانی هر اپلیکیشن روی یک سرور مجزا است.
PHP-FPM گزینههای پیکربندی پیشرفتهای نیز برای لاگبرداری stderr و stdout، ریاستارت در مواقع اضطراری و تولید تطبیقی پردازشها (Adaptive Process Spawning) ارائه میدهد که برای سایتهای با ترافیک بالا بسیار مفید است. در واقع، استفاده از آپاچی به همراه PHP-FPM یکی از بهترین معماریها برای میزبانی اپلیکیشنهای PHP، به ویژه از نظر عملکرد محسوب میشود.
نکته: از آنجایی که سیستمعامل CentOS 8 به پایان عمر خود (EOL) رسیده است، در این آموزش نسخه مدرنتر، یعنی آلمالینوکس 9 (AlmaLinux 9) را جایگزین کردهایم. همچنین از نسخههای جدیدتر و پشتیبانیشدهی PHP (8.1 و 8.2) استفاده کردهایم.
در این آموزش شما دو وبسایت PHP را روی یک سرور پیکربندی خواهید کرد. هر سایت از دامنه خودش استفاده کرده و هر دامنه نسخه PHP اختصاصی خود را اجرا خواهد کرد. دامنه اول site1.your_domain نسخه PHP 8.1 و دامنه دوم site2.your_domain نسخه PHP 8.2 را اجرا خواهند کرد.
پیشنیازها
- یک سرور آلمالینوکس 9 (AlmaLinux 9) با حداقل ۱ گیگابایت رم که طبق راهنمای راهاندازی اولیه سرور پارمین کلود پیکربندی شده باشد (شامل یک کاربر غیر روت با دسترسی sudo و فایروال فعال).
- وبسرور آپاچی روی سرور شما نصب و پیکربندی شده باشد.
- یک نام دامنه که به سرور پارمین کلود شما اشاره داشته باشد. در این آموزش از دو زیردامنه استفاده خواهید کرد که هر کدام باید با یک رکورد A در تنظیمات DNS شما تعریف شوند:
site1.your_domainوsite2.your_domain.
مرحله ۱ — نصب نسخههای PHP 8.1 و 8.2 با PHP-FPM
پس از تکمیل پیشنیازها، اکنون نسخههای 8.1 و 8.2 PHP را همراه با PHP-FPM و چندین افزونه (Extension) اضافی نصب خواهید کرد. برای نصب چندین نسخه از PHP، باید مخزن Remi را روی سیستم خود نصب و فعال کنید. این مخزن جدیدترین نسخههای پشته PHP را برای توزیعهای مبتنی بر RHEL (مانند آلمالینوکس) فراهم میکند.
با استفاده از دستور زیر، مخزن Remi (و مخزن EPEL) را به سیستم خود اضافه کنید:
ابتدا بررسی کنیم چه نسخههایی از PHP در مخزن Remi در دسترس هستند:
خروجی مشابه زیر را خواهید دید که نشاندهنده در دسترس بودن نسخههای مختلف است:
سپس، ماژول پیشفرض PHP را ریست کرده و ماژول PHP 8.1 از Remi را فعال کنید:
اکنون نصب php81 و php81-php-fpm را آغاز کنید:
- پکیج
php81یک متاپکیج است که برای اجرای اپلیکیشنهای PHP استفاده میشود. - پکیج
php81-php-fpmمفسر FastCGI Process Manager را فراهم میکند که به عنوان یک دیمون اجرا شده و درخواستهای Fast/CGI را دریافت میکند.
اکنون همین روند را برای نسخه PHP 8.2 تکرار کنید. php82 و php82-php-fpm را نصب کنید:
پس از نصب هر دو نسخه PHP، سرویس php81-php-fpm را استارت کرده و آن را برای اجرا در زمان بوت سرور فعال کنید:
سپس وضعیت سرویس را بررسی کنید تا از فعال بودن آن مطمئن شوید:
خروجی باید نشان دهد که سرویس active (running) است.
این روند را برای سرویس php82-php-fpm نیز تکرار کنید:
در این نقطه، شما دو نسخه مختلف PHP را روی سرور خود نصب کردهاید. در مرحله بعد، ساختار دایرکتوری برای هر وبسایتی که میخواهید راهاندازی کنید ایجاد خواهید کرد.
مرحله ۲ — ایجاد ساختار دایرکتوری برای هر دو وبسایت
در این بخش، شما یک دایرکتوری ریشه (Document Root) و یک صفحه ایندکس برای هر کدام از دو وبسایت خود ایجاد میکنید.
ابتدا دایرکتوریهای ریشه را برای هر دو سایت ایجاد کنید:
به طور پیشفرض، وبسرور آپاچی با کاربر و گروه apache اجرا میشود. برای اطمینان از داشتن مالکیت و دسترسیهای صحیح روی دایرکتوریهای وبسایت خود، دستورات زیر را اجرا کنید:
سپس یک فایل info.php در داخل دایرکتوری ریشه هر وبسایت ایجاد کنید. این فایل اطلاعات نسخه PHP هر وبسایت را نمایش خواهد داد. با سایت اول شروع کنید:
خط زیر را به آن اضافه کنید:
/var/www/site1.your_domain/info.php
فایل را ذخیره کرده و ببندید. اکنون فایل info.php را برای سایت دوم کپی کنید:
وبسرور شما اکنون دایرکتوریهای ریشه مورد نیاز برای سرو دادن اطلاعات به بازدیدکنندگان را دارد. در مرحله بعد، آپاچی را برای کار با دو نسخه متفاوت PHP پیکربندی خواهید کرد.
مرحله ۳ — پیکربندی آپاچی برای هر دو وبسایت
در این بخش، شما دو فایل پیکربندی Virtual Host ایجاد میکنید. این کار به دو وبسایت شما اجازه میدهد تا به صورت همزمان با دو نسخه متفاوت PHP کار کنند.
برای اینکه آپاچی بتواند این محتوا را سرو کند، باید فایلهای میزبان مجازی (Virtual Host) با دستورالعملهای صحیح ایجاد کنید. شما دو فایل پیکربندی جدید در دایرکتوری /etc/httpd/conf.d/ ایجاد خواهید کرد.
ابتدا فایل پیکربندی جدیدی برای site1.your_domain ایجاد کنید. در اینجا آپاچی را هدایت میکنید تا محتوا را با استفاده از PHP 8.1 رندر کند:
محتوای زیر را اضافه کنید. مطمئن شوید که مسیر دایرکتوری، نام سرور و نسخه PHP با تنظیمات شما مطابقت داشته باشد:
/etc/httpd/conf.d/site1.your_domain.conf
در این فایل:
DocumentRoot: مسیر دایرکتوری ریشه وبسایت شماست.ServerName: آدرس URL زیردامنه اول شماست.SetHandler: مسیر فایل سوکت PHP-FPM برای نسخه 8.1 را مشخص میکند.
فایل را ذخیره کرده و ببندید.
سپس، فایل پیکربندی جدیدی برای site2.your_domain ایجاد کنید. این زیردامنه را برای اجرای PHP 8.2 تنظیم خواهید کرد:
محتوای زیر را اضافه کنید:
/etc/httpd/conf.d/site2.your_domain.conf
فایل را ذخیره کرده و ببندید. سپس، فایل پیکربندی آپاچی را از نظر خطاهای نحوی (Syntax) بررسی کنید:
باید خروجی Syntax OK را مشاهده کنید:
در نهایت، سرویس آپاچی را ریاستارت کنید تا تغییرات اعمال شوند:
اکنون که آپاچی را برای سرو دادن هر سایت پیکربندی کردهاید، آنها را تست خواهید کرد تا مطمئن شوید نسخههای صحیح PHP در حال اجرا هستند.
مرحله ۴ — تست وبسایتها
در این مرحله، دو وبسایت را برای اجرای دو نسخه متفاوت PHP پیکربندی کردهاید. اکنون نتایج را تست کنید.
مرورگر وب خود را باز کرده و به هر دو سایت http://site1.your_domain و http://site2.your_domain بروید. شما دو صفحه را مشاهده خواهید کرد که اطلاعات نسخه PHP را نشان میدهند.
به عنوانها (Titles) دقت کنید. صفحه اول نشان میدهد که site1.your_domain در حال اجرای نسخه 8.1 است. صفحه دوم نشان میدهد که site2.your_domain در حال اجرای نسخه 8.2 است.
اکنون که سایتهای خود را تست کردید، فایلهای info.php را حذف کنید. از آنجایی که این فایلها حاوی اطلاعات حساسی درباره سرور شما هستند و برای کاربران غیرمجاز قابل دسترسی میباشند، یک آسیبپذیری امنیتی محسوب میشوند. برای حذف هر دو فایل، دستورات زیر را اجرا کنید:
شما اکنون یک سرور واحد دارید که دو وبسایت با دو نسخه متفاوت PHP را مدیریت میکند. البته PHP-FPM تنها به این یک کاربرد محدود نمیشود.
نتیجهگیری
شما اکنون با ترکیب Virtual Host ها و PHP-FPM توانستهاید چندین وبسایت با نسخههای متفاوت PHP را روی یک سرور واحد میزبانی کنید. تنها محدودیت عملی برای تعداد سایتهای PHP و نسخههایی که سرویس آپاچی شما میتواند مدیریت کند، قدرت پردازشی سرور شماست.
از اینجا به بعد، میتوانید ویژگیهای پیشرفتهتر PHP-FPM مانند تولید تطبیقی پردازشها (Adaptive Process Spawning) یا نحوه لاگبرداری stderr و stdout را بررسی کنید. همچنین میتوانید وبسایتهای خود را با گواهینامههای رایگان TLS/SSL از Let’s Encrypt ایمنسازی نمایید.
از همراهی شما با پارمین کلود سپاسگزاریم.




