آموزش اجرای هم‌زمان چند نسخه PHP روی یک سرور با Apache و PHP-FPM در Ubuntu 24.04

مقدمه

وب‌سرور 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 استفاده خواهد کرد.

پیش‌نیازها

قبل از شروع آموزش، موارد زیر را آماده کنید:

  1. یک سرور ابری با سیستم‌عامل Ubuntu 24.04 و دسترسی به کاربر دارای مجوزهای sudo (می‌توانید سرور ابری خود را از پارمین کلود تهیه کنید).

  2. وب‌سرور Apache که روی سرور نصب و فعال شده باشد.

  3. دو ساب‌دامنه یا دامنه که رکورد A آن‌ها به آدرس IP سرور شما اشاره کند (مانند site1.your_domain و site2.your_domain).

گام اول — نصب نسخه‌های PHP 8.2 و PHP 8.3 به همراه PHP-FPM

برای نصب هم‌زمان چند نسخه PHP روی اوبونتو، ابتدا باید مخزن رسمی و معتبر Ondřej Surý PPA را به سیستم اضافه کنیم:

Bash

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 و پیش‌نیازهای ارتباط با وب‌سرور نصب می‌شوند:

Bash

sudo apt-get install php8.2 php8.2-fpm php8.2-mysql libapache2-mod-fcgid -y

۲. نصب نسخه PHP 8.3

همین مراحل را برای PHP 8.3 نیز تکرار کنید:

Bash

sudo apt-get install php8.3 php8.3-fpm php8.3-mysql -y

۳. بررسی وضعیت سرویس‌ها

پس از اتمام نصب، وضعیت فعال بودن سرویس‌های PHP-FPM را بررسی کنید:

Bash

sudo systemctl status php8.2-fpm
sudo systemctl status php8.3-fpm

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

Bash

sudo systemctl start php8.2-fpm
sudo systemctl start php8.3-fpm

۴. فعال‌سازی ماژول‌های لازم در Apache

برای اینکه Apache بتواند درخواست‌های PHP را به سرویس‌های FPM هدایت کند، ماژول‌های زیر را فعال کرده و Apache را ری‌استارت کنید:

Bash

sudo a2enmod actions fcgid alias proxy_fcgi
sudo systemctl restart apache2

گام دوم — ساخت ساختار دایرکتوری وب‌سایت‌ها

در این مرحله دایرکتوری اصلی (Document Root) و یک فایل تست برای هر دو وب‌سایت می‌سازیم.

ایجاد پوشه‌های سایت:

Bash

sudo mkdir -p /var/www/site1.your_domain
sudo mkdir -p /var/www/site2.your_domain

تنظیم دسترسی‌ها و مالکیت پوشه‌ها برای وب‌سرور:

Bash

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 سایت اول:

Bash

sudo nano /var/www/site1.your_domain/info.php

کد زیر را داخل فایل بگذارید و آن را ذخیره کنید:

PHP

<?php phpinfo(); ?>

همین فایل را برای سایت دوم کپی کنید:

Bash

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)

فایل کانفیگ جدید را باز کنید:

Bash

sudo nano /etc/apache2/sites-available/site1.your_domain.conf

محتوای زیر را درون آن قرار دهید (آدرس دامنه را با دامنه خود جایگزین کنید):

Apache

<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)

فایل کانفیگ سایت دوم را بسازید:

Bash

sudo nano /etc/apache2/sites-available/site2.your_domain.conf

محتوای زیر را قرار دهید:

Apache

<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>

۳. فعال‌سازی تنظیمات

بررسی صحت دستورات و کانفیگ‌ها:

Bash

sudo apachectl configtest

اگر خروجی Syntax OK دریافت کردید، سایت‌های جدید را فعال و سایت پیش‌فرض را غیرفعال کنید:

Bash

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 را حذف کنید تا اطلاعات حساس سرور شما در دسترس عموم قرار نگیرد:

Bash

sudo rm /var/www/site1.your_domain/info.php
sudo rm /var/www/site2.your_domain/info.php

💡 نکته ویژه توسعه‌دهندگان PHP (افزایش سرعت Composer)

در صورتی که پروژه‌های وب شما مبتنی بر فریم‌ورک‌هایی مانند لاراول (Laravel) یا سیمفونی (Symfony) هستند، برای نصب بسیار سریع‌تر پکیج‌های PHP و عدم برخورد با محدودیت‌های بین‌المللی بر روی سرورهای پارمین کلود، مخزن Composer سرور خود را به میرور اختصاصی زیر تغییر دهید:

Bash

composer config -g repo.packagist composer https://composer.parmincloud.ir

جمع‌بندی

شما با موفقیت وب‌سرور Apache را به همراه PHP-FPM پیکربندی کردید تا دو نسخه متفاوت PHP را به صورت هم‌زمان روی یک سرور اوبونتو ۲۴.۰۴ مدیریت کند. این روش از نظر مصرف منابع رم و پردازنده کاملاً بهینه است و امکان توسعه پروژه‌های متعدد روی یک سرور ابری را به شما می‌دهد.

از همراهی شما با پارمین کلود سپاسگزاریم.

Click to rate this post!
[Total: 0 Average: 0]

نظرات کاربران

دیدگاهی بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *