مقدمه
وبسرور Apache با استفاده از قابلیت Virtual Hosts امکان مدیریت چندین دامنه روی یک سرور را فراهم میکند. به همین ترتیب، PHP-FPM (مدیریتکننده پردازشهای سریع PHP) نیز اجازه میدهد تا چند نسخه مختلف PHP به صورت همزمان روی یک سیستم اجرا شوند. ترکیب وبسرور Apache و PHP-FPM راهکاری فوقالعاده کاربردی و اقتصادی برای میزبانی چندین وباپلیکیشن مختلف است؛ بهخصوص زمانی که یکی از پروژههای شما به نسخه قدیمیتر نیاز دارد و پروژه دیگر از جدیدترین نسخه PHP استفاده میکند.
علاوه بر این، PHP-FPM قابلیتهای پیشرفتهای مانند مدیریت هوشمند پردازشها (Adaptive Process Spawning)، ثبت لاگهای مجزا و راهاندازی مجدد اضطراری را ارائه میدهد که تأثیر بهسزایی در افزایش سرعت و پایداری وبسایتهای پرترافیک دارد.
در این مقاله از وبلاگ پارمین کلود، نحوه راهاندازی همزمان دو وبسایت روی یک سرور را آموزش میدهیم. دامنه اول (site1.your_domain) از PHP 8.2 و دامنه دوم (site2.your_domain) از PHP 8.3 استفاده خواهد کرد.
پیشنیازها
قبل از شروع آموزش، موارد زیر را آماده کنید:
-
یک سرور ابری با سیستمعامل Ubuntu 24.04 و دسترسی به کاربر دارای مجوزهای
sudo(میتوانید سرور ابری خود را از پارمین کلود تهیه کنید). -
وبسرور Apache که روی سرور نصب و فعال شده باشد.
-
دو سابدامنه یا دامنه که رکورد A آنها به آدرس IP سرور شما اشاره کند (مانند
site1.your_domainوsite2.your_domain).
گام اول — نصب نسخههای PHP 8.2 و PHP 8.3 به همراه PHP-FPM
برای نصب همزمان چند نسخه PHP روی اوبونتو، ابتدا باید مخزن رسمی و معتبر Ondřej Surý PPA را به سیستم اضافه کنیم:
sudo apt-get install software-properties-common -y
sudo add-apt-repository ppa:ondrej/php -y
sudo apt-get update -y
۱. نصب نسخه PHP 8.2
با اجرای دستور زیر، نسخه PHP 8.2 به همراه ماژول FPM و پیشنیازهای ارتباط با وبسرور نصب میشوند:
sudo apt-get install php8.2 php8.2-fpm php8.2-mysql libapache2-mod-fcgid -y
۲. نصب نسخه PHP 8.3
همین مراحل را برای PHP 8.3 نیز تکرار کنید:
sudo apt-get install php8.3 php8.3-fpm php8.3-mysql -y
۳. بررسی وضعیت سرویسها
پس از اتمام نصب، وضعیت فعال بودن سرویسهای PHP-FPM را بررسی کنید:
sudo systemctl status php8.2-fpm
sudo systemctl status php8.3-fpm
اگر هر یک از سرویسها فعال نبودند، با دستورات زیر آنها را شروع کنید:
sudo systemctl start php8.2-fpm
sudo systemctl start php8.3-fpm
۴. فعالسازی ماژولهای لازم در Apache
برای اینکه Apache بتواند درخواستهای PHP را به سرویسهای FPM هدایت کند، ماژولهای زیر را فعال کرده و Apache را ریاستارت کنید:
sudo a2enmod actions fcgid alias proxy_fcgi
sudo systemctl restart apache2
گام دوم — ساخت ساختار دایرکتوری وبسایتها
در این مرحله دایرکتوری اصلی (Document Root) و یک فایل تست برای هر دو وبسایت میسازیم.
ایجاد پوشههای سایت:
sudo mkdir -p /var/www/site1.your_domain
sudo mkdir -p /var/www/site2.your_domain
تنظیم دسترسیها و مالکیت پوشهها برای وبسرور:
sudo chown -R www-data:www-data /var/www/site1.your_domain
sudo chown -R www-data:www-data /var/www/site2.your_domain
sudo chmod -R 755 /var/www/site1.your_domain
sudo chmod -R 755 /var/www/site2.your_domain
ساخت فایل info.php برای بررسی اطلاعات و نسخه PHP سایت اول:
sudo nano /var/www/site1.your_domain/info.php
کد زیر را داخل فایل بگذارید و آن را ذخیره کنید:
<?php phpinfo(); ?>
همین فایل را برای سایت دوم کپی کنید:
sudo cp /var/www/site1.your_domain/info.php /var/www/site2.your_domain/info.php
گام سوم — کانفیگ Virtual Host در Apache برای هر سایت
اکنون دو فایل تنظیمات Virtual Host میسازیم تا درخواستهای هر سایت به نسخه PHP مورد نظر ارجاع داده شوند.
۱. کانفیگ سایت اول (استفاده از PHP 8.2)
فایل کانفیگ جدید را باز کنید:
sudo nano /etc/apache2/sites-available/site1.your_domain.conf
محتوای زیر را درون آن قرار دهید (آدرس دامنه را با دامنه خود جایگزین کنید):
<VirtualHost *:80>
ServerAdmin admin@site1.your_domain
ServerName site1.your_domain
DocumentRoot /var/www/site1.your_domain
DirectoryIndex info.php index.php
<Directory /var/www/site1.your_domain>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php8.2-fpm.sock|fcgi://localhost"
</FilesMatch>
ErrorLog ${APACHE_LOG_DIR}/site1.your_domain_error.log
CustomLog ${APACHE_LOG_DIR}/site1.your_domain_access.log combined
</VirtualHost>
۲. کانفیگ سایت دوم (استفاده از PHP 8.3)
فایل کانفیگ سایت دوم را بسازید:
sudo nano /etc/apache2/sites-available/site2.your_domain.conf
محتوای زیر را قرار دهید:
<VirtualHost *:80>
ServerAdmin admin@site2.your_domain
ServerName site2.your_domain
DocumentRoot /var/www/site2.your_domain
DirectoryIndex info.php index.php
<Directory /var/www/site2.your_domain>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost"
</FilesMatch>
ErrorLog ${APACHE_LOG_DIR}/site2.your_domain_error.log
CustomLog ${APACHE_LOG_DIR}/site2.your_domain_access.log combined
</VirtualHost>
۳. فعالسازی تنظیمات
بررسی صحت دستورات و کانفیگها:
sudo apachectl configtest
اگر خروجی Syntax OK دریافت کردید، سایتهای جدید را فعال و سایت پیشفرض را غیرفعال کنید:
sudo a2ensite site1.your_domain
sudo a2ensite site2.your_domain
sudo a2dissite 000-default.conf
sudo systemctl restart apache2
گام چهارم — تست وبسایتها
حالا آدرسهای زیر را در مرورگر خود وارد کنید:
-
[http://site1.your_domain/info.php](http://site1.your_domain/info.php) -
[http://site2.your_domain/info.php](http://site2.your_domain/info.php)
مشاهده خواهید کرد که در سایت اول عبارت PHP Version 8.2.x و در سایت دوم عبارت PHP Version 8.3.x نمایش داده میشود.
هشدار امنیتی: پس از اتمام تست، حتماً فایلهای
info.phpرا حذف کنید تا اطلاعات حساس سرور شما در دسترس عموم قرار نگیرد:Bashsudo rm /var/www/site1.your_domain/info.php sudo rm /var/www/site2.your_domain/info.php
💡 نکته ویژه توسعهدهندگان PHP (افزایش سرعت Composer)
در صورتی که پروژههای وب شما مبتنی بر فریمورکهایی مانند لاراول (Laravel) یا سیمفونی (Symfony) هستند، برای نصب بسیار سریعتر پکیجهای PHP و عدم برخورد با محدودیتهای بینالمللی بر روی سرورهای پارمین کلود، مخزن Composer سرور خود را به میرور اختصاصی زیر تغییر دهید:
composer config -g repo.packagist composer https://composer.parmincloud.ir
جمعبندی
شما با موفقیت وبسرور Apache را به همراه PHP-FPM پیکربندی کردید تا دو نسخه متفاوت PHP را به صورت همزمان روی یک سرور اوبونتو ۲۴.۰۴ مدیریت کند. این روش از نظر مصرف منابع رم و پردازنده کاملاً بهینه است و امکان توسعه پروژههای متعدد روی یک سرور ابری را به شما میدهد.
از همراهی شما با پارمین کلود سپاسگزاریم.
نظرات کاربران