اجرای چندین نسخه PHP بر روی یک سرور Debian 10
سرور مجازی وب Apache از هاست های مجازی برای مدیریت دامنه های متعدد در یک مثال استفاده می کند. به طور مشابه ، PHP-FPM از یک Daemon برای مدیریت چندین نسخه PHP در یک نمونه واحد استفاده می کند. می توانید از Apache و PHP-FPM با هم برای میزبانی چند برنامه وب PHP استفاده کنید ، هر یک با استفاده از نسخه متفاوت PHP ، همه در یک سرور مجازی یکسان و همه به طور همزمان. این کار از آن جهت مفید است که برنامه های مختلف ممکن است به نسخه های مختلف PHP نیاز داشته باشند ، اما برخی از پشته های سرور مجازی ، مانند پشته LAMP که به طور مرتب پیکربندی شده است ، فقط می تواند یکی را مدیریت کند. ترکیب Apache با PHP-FPM نیز یک راه حل مقرون به صرفه تر نسبت به میزبانی هر برنامه به طور خاص است.
PHP-FPM همچنین گزینه های پیکربندی برای ورود به سیستم stderr و stdout ، ریستارت اضطراری و spawning روند تطبیقی را ارائه می دهد ، که برای سایت های دارای بار سنگین مفید است. در حقیقت ، استفاده از Apache با PHP-FPM یکی از بهترین پشته ها برای میزبانی برنامه های PHP است ، به خصوص وقتی صحبت از عملکرد میشود.
در این آموزش دو سایت PHP را به صورت یکجا تنظیم خواهید کرد. هر سایت از دامنه خود استفاده می کند و هر دامنه نسخه PHP خود را مستقر می کند. اولی ، site1.your_domain ، PHP 7.0 را مستقر می کند. دومی ، site2.your_domain ، PHP 7.2 را مستقر می کند.
پیش نیازها
• یک سرور مجازی Debian 10 با حداقل 1 گیگابایت رم که طبق راهنمای راه اندازی سرور مجازی اولیه با Debian 10تنظیم شده باشد و شامل کاربر sudo غیر ریشه و فایروال تنظیم شده باشد.
• سرور مجازی وب Apache که با دنبال کردن نحوه نصب وب سرور مجازی Apache در Debian 10تنظیم و پیکربندی شده است.
• نام دامنه تنظیم شده که به سرور مجازی Debian 10 شما اشاره کند. برای اهداف این آموزش ، ما از دو زیر دامنه استفاده خواهیم کرد که هر یک با یک رکورد A در تنظیمات DNS ما مشخص شده اند: site1.your_domain و site2.your_domain.
مرحله 1 – نصب PHP نسخه های 7.0 و 7.2 با PHP-FPM
با تکمیل پیش نیازها، اکنون نسخه های PHP 7.0 و 7.2 و همچنین PHP-FPM و چندین پسوند اضافی را نصب خواهید کرد. اما برای تحقق این امر ، ابتدا باید مخزن Sury php را به سیستم خود اضافه کنید.
ابتدا چندین بسته مورد نیاز از جمله curl ، wget و gnupg2 را نصب کنید:
⦁ $ sudo apt-get install curl wget gnupg2 ca-certificates lsb-release apt-transport-https -y
⦁
بسته های فوق به شما امکان می دهد تا به مخزن Sury php دسترسی پیدا کنید و این کار را با اطمینان انجام دهید. sury php یک مخزن شخص ثالث یا PPA (بایگانی بسته های شخصی) است که PHP 7.4 ، 7.3 ، 7.2 ، 7.1 و 7.0 را برای سیستم عامل Debian ارائه می دهد. همچنین نسخه های به روز تر PHP را نسبت به مخازن رسمی Debian 10 ارائه می دهد و به شما امکان می دهد نسخه های مختلف PHP را روی همان سیستم نصب کنید.
سپس ، کلید بسته را وارد کنید:
⦁ $ wget https://packages.sury.org/php/apt.gpg
⦁
⦁ $ sudo apt-key add apt.gpg
اکنون مخزن Sury php را به سیستم خود اضافه کنید:
⦁ $ echo “deb https://packages.sury.org/php/ $(lsb_release -sc) main” | sudo tee /etc/apt/sources.list.d/php7.list
⦁
مخزن را به روز کنید:
⦁ $ sudo apt-get update -y
⦁
سپس ، php7.0 ، php7.0-fpm ، php7.0-mysql ، libapache2-mod-php7.0 و libapache2-mod-fcgid را با دستورات زیر نصب کنید:
⦁ php7.0 ابربسته ای است که می تواند برای اجرای برنامه های PHP استفاده شود.
⦁ php7.0-fpm مفسر مدیریت سریع فرآیند را فراهم می کند که به عنوان یک Daemon اجرا می شود و درخواست های سریع / CGI را دریافت می کند.
⦁ php7.0-mysql PHP را به پایگاه داده MySQL متصل می کند.
⦁ libapahce2-mod-php7.0 ماژول PHP را برای وب سرور مجازی Apache ارائه می دهد.
⦁ libapache2-mod-fcgid شامل یک mod_fcgid است که تعدادی از نمونه های برنامه CGI را برای رسیدگی به درخواست های همزمان شروع می کند.
حالا فرایند را برای نسخه PHP 7.2 تکرار کنید. php7.2 ، php7.2-fpm ، php7.2-mysql و libapache2-mod-php7.2 را نصب کنید.
⦁ $ sudo apt-get install php7.2 php7.2-fpm php7.2-mysql libapache2-mod-php7.2 -y
⦁
پس از نصب هر دو نسخه PHP ، سرویس php7.0-fpm را شروع کنید:
⦁ $ sudo systemctl start php7.0-fpm
⦁
بعد ، وضعیت سرویس php7.0-fpm را بررسی کنید:
⦁ $ sudo systemctl status php7.0-fpm
⦁
خروجی زیر را مشاهده خواهید کرد:
Output
● php7.0-fpm.service – The PHP 7.0 FastCGI Process Manager
Loaded: loaded (/lib/systemd/system/php7.0-fpm.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2020-04-04 08:51:47 UTC; 1min 17s ago
Docs: man:php-fpm7.0(8)
Main PID: 13016 (php-fpm7.0)
Status: “Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec”
Tasks: 3 (limit: 1149)
Memory: 19.1M
CGroup: /system.slice/php7.0-fpm.service
├─13016 php-fpm: master process (/etc/php/7.0/fpm/php-fpm.conf)
├─13017 php-fpm: pool www
└─13018 php-fpm: pool www
Apr 04 08:51:47 debian10 systemd[1]: Starting The PHP 7.0 FastCGI Process Manager…
Apr 04 08:51:47 debian10 systemd[1]: Started The PHP 7.0 FastCGI Process Manager.
با تکرار این روند ، اکنون سرویس php7.2-fpm را شروع کنید:
⦁ $ sudo systemctl start php7.2-fpm
⦁
و سپس وضعیت سرویس php7.2-fpm را بررسی کنید:
⦁ $ sudo systemctl status php7.2-fpm
⦁
خروجی زیر را مشاهده خواهید کرد:
Output
● php7.2-fpm.service – The PHP 7.2 FastCGI Process Manager
Loaded: loaded (/lib/systemd/system/php7.2-fpm.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2020-04-04 08:52:52 UTC; 1min 32s ago
Docs: man:php-fpm7.2(8)
Process: 22207 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/7.2/fpm/pool.d/www.conf 72 (code=exite
Main PID: 22204 (php-fpm7.2)
Status: “Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec”
Tasks: 3 (limit: 1149)
Memory: 12.0M
CGroup: /system.slice/php7.2-fpm.service
├─22204 php-fpm: master process (/etc/php/7.2/fpm/php-fpm.conf)
├─22205 php-fpm: pool www
└─22206 php-fpm: pool www
Apr 04 08:52:52 debian10 systemd[1]: Starting The PHP 7.2 FastCGI Process Manager…
Apr 04 08:52:52 debian10 systemd[1]: Started The PHP 7.2 FastCGI Process Manager.
در آخر ، باید چندین ماژول را فعال کنید تا سرویس Apache2 شما بتواند با چندین نسخه PHP کار کند:
⦁ $ sudo a2enmod actions fcgid alias proxy_fcgi
⦁
⦁ actions برای اجرای اسکریپت های CGI بر اساس نوع رسانه یا روش درخواست استفاده می شود.
⦁ fcgid یک جایگزین با کارایی بالا برای mod_cgi است که تعداد کافی از نمونه های برنامه CGI را برای رسیدگی به درخواست های همزمان شروع می کند.
⦁ alias برای نگاشت قسمت های مختلف سیستم فایل میزبان در درخت سند و هدایت URL ارائه میشود.
⦁ proxy_fcgi به Apache امکان می دهد تا درخواست ها را به PHP-FPM ارسال کند.
اکنون سرویس Apache را مجدداً راه اندازی کنید تا تغییرات خود را اعمال کنید:
⦁ $ sudo systemctl restart apache2
⦁
در این مرحله شما دو نسخه PHP را روی سرور مجازی خود نصب کرده اید. در مرحله بعد ، برای هر وب سایتی که می خواهید مستقر شوید ، یک ساختار دایرکتوری ایجاد خواهید کرد.
مرحله 2 – ایجاد ساختارهای دیرکتوری برای هر دو وب سایت
در این بخش ، یک دایرکتوری اصلی اسناد و صفحه فهرست برای هر دو وب سایت خود ایجاد می کنید.
ابتدا دایرکتوری های اصلی سند را برای site.your_domain و site2.your_domain ایجاد کنید:
⦁ $ sudo mkdir /var/www/site1.your_domain
⦁
⦁ $ sudo mkdir /var/www/site2.your_domain
به طور پیش فرض ، وب سرور مجازی Apache به عنوان یک کاربر www-data و گروه www-data به کار می رود. برای اطمینان از مالکیت صحیح و مجوزهای دیرکتوری های root وب سایت خود ، دستورات زیر را اجرا کنید:
⦁ $ 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 هر وب سایت نمایش داده می شود. با site1 شروع کنید:
⦁ $ sudo nano /var/www/site1.your_domain/info.php
⦁
خط زیر را اضافه کنید:
/var/www/site1.your_domain/info.php
<?php phpinfo(); ?>
فایل را ذخیره کنید و ببندید. اکنون فایل info.php که در سایت2 ایجاد کرده اید را کپی کنید:
⦁ $ sudo cp /var/www/site1.your_domain/info.php /var/www/site2.your_domain/info.php
⦁
اکنون وب سرور مجازی شما باید دیرکتوری های ریشه اسناد را که هر سایت برای ارائه اطلاعات به بازدید کنندگان نیاز دارد در اختیار داشته باشد. در مرحله بعدی ، وب سرور مجازی Apache خود را پیکربندی خواهید کرد تا با دو نسخه مختلف PHP کار کند.
مرحله 3 – پیکربندی Apache برای هر دو وب سایت
در این بخش دو فایل پیکربندی میزبان مجازی ایجاد خواهید کرد. با این کار دو وب سایت شما قادر خواهند بود همزمان با دو نسخه مختلف PHP کار کنند.
برای اینکه Apache بتواند این محتوا را ارائه دهد ، باید یک فایل میزبان مجازی با بخشنامه های صحیح ایجاد کنید. به جای تغییر فایل پیکربندی پیش فرض واقع در /etc/apache2/sites-available/000-default.conf ، دو فایل جدید را در دیرکتوری / etc / apache2 / سایتهای موجود ایجاد خواهید کرد.
ابتدا یک فایل پیکربندی میزبان مجازی جدید برای وب سایت site1.your_domain ایجاد کنید. در اینجا شما Apache را به ارائه محتوا با استفاده از php7.0 هدایت می کنید:
⦁ $ sudo nano /etc/apache2/sites-available/site1.your_domain.conf
⦁
محتوای زیر را اضافه کنید. اطمینان حاصل کنید که مسیر دیرکتوری وب سایت ، نام سرور مجازی و نسخه PHP با تنظیمات شما مطابقت دارد:
/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
<Directory /var/www/site1.your_domain>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
<FilesMatch \.php$>
# For Apache version 2.4.10 and above, use SetHandler to run PHP as a fastCGI process server
SetHandler “proxy:unix:/run/php/php7.0-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>
در این فایل ، DocumentRoot را به دایرکتوری جدید و ServerAdmin را به ایمیلی که ادمین سایت your_domain می تواند به آن دسترسی داشته باشد ، به روز کرده اید. همچنین ServerName را به روز کرده اید ، که دامنه پایه را برای این پیکربندی میزبان مجازی ایجاد می کند ، و یک دستورالعمل SetHandler برای اجرای PHP به عنوان سرور مجازی فرآیند fastCGI اضافه کرده اید.
فایل را ذخیره کنید و ببندید.
در مرحله بعدی ، یک فایل پیکربندی میزبان مجازی جدید برای وب سایت site2.your_domain ایجاد کنید. برای استقرار php7.2 این زیر دامنه را مشخص می کنید:
⦁ $ sudo nano /etc/apache2/sites-available/site2.your_domain.conf
⦁
محتوای زیر را اضافه کنید. دوباره مطمئن شوید که مسیر دیرکتوری وب سایت ، نام سرور مجازی و نسخه PHP با اطلاعات منحصر به فرد شما مطابقت دارد:
/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
<Directory /var/www/site2.your_domain>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
<FilesMatch \.php$>
# For Apache version 2.4.10 and above, use SetHandler to run PHP as a fastCGI process server
SetHandler “proxy:unix:/run/php/php7.2-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>
پس از اتمام فایل را ذخیره و ببندید. سپس فایل پیکربندی Apache را برای هرگونه خطای نحوی بررسی کنید:
⦁ $ sudo apachectl configtest
⦁
خروجی زیر را مشاهده خواهید کرد:
Output
Syntax OK
سپس ، هر دو فایل پیکربندی میزبان مجازی را فعال کنید:
⦁ $ sudo a2ensite site1.your_domain
⦁
⦁ $ sudo a2ensite site2.your_domain
اکنون سایت پیش فرض را غیرفعال کنید ، زیرا به آن نیاز نخواهید داشت:
⦁ $ sudo a2dissite 000-default.conf
⦁
در آخر ، سرویس Apache را مجدداً اجرا کنید تا تغییرات خود را به اجرا درآورید:
⦁ $ sudo systemctl restart apache2
⦁
اکنون که Apache را برای سرویس دهی به هر سایت پیکربندی کرده اید ، آنها را آزمایش می کنید تا مطمئن شوید که نسخه های مناسب PHP در حال اجرا هستند.
مرحله 4 – آزمایش هر دو وب سایت
در این مرحله ، شما برای اجرای دو نسخه مختلف از PHP ، دو وب سایت پیکربندی کرده اید. حالا نتایج را آزمایش کنید.
مرورگر وب خود را باز کنید و از هر دو سایت http: //site1.your_domain و http: //site2.your_domain بازدید کنید. دو صفحه را مشاهده خواهید کرد که به شکل زیر است:
عناوین را یادداشت کنید. صفحه اول نشان می دهد که site1.your_domain نسخه 7.0 PHP را مستقر کرده است. دومی نشان می دهد که site2.your_domain نسخه 7.2 PHP را مستقر کرده است.
اکنون که سایت های خود را آزمایش کرده اید ، فایل های info.php را حذف کنید. از آنجا که حاوی اطلاعات حساس در مورد سرور مجازی شما هستند و برای کاربران غیرمجاز قابل دسترس میباشند ، یک تهدید امنیتی به حساب خواهند آمد. برای حذف هر دو فایل ، دستورات زیر را اجرا کنید:
⦁ $ sudo rm -rf /var/www/site1.your_domain/info.php
⦁
⦁ $ sudo rm -rf /var/www/site2.your_domain/info.php
اکنون یک سرور مجازی Debian 10 منزوی دارید که دارای دو وب سایت با دو نسخه مختلف PHP است. با این حال PHP-FPM به این یک برنامه محدود نمی شود.
نتیجه
اکنون میزبان های مجازی و PHP-FPM را برای ارائه خدمات به چندین وب سایت و نسخه های مختلف PHP در یک سرور مجازی واحد ترکیب کرده اید. تنها محدودیت عملی روی تعداد سایت های PHP و نسخه های PHP که سرویس Apache شما قادر به کنترل آن است قدرت پردازش نمونه شماست.
از اینجا ممکن است به بررسی ویژگیهای پیشرفته تر PHP-FPM بپردازید ، مانند فرآیند spawning تطبیقی آن یا اینکه چگونه می تواند sdtout و stderr را وارد کند. از طرف دیگر ، اکنون می توانید وب سایت های خود را ایمن کنید. برای انجام این کار ، می توانید آموزش ما در مورد چگونگی تأمین امنیت سایتهای خود با مجوزهای رایگان TLS / SSL را از Let’s Encrypt دنبال کنید.
از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :
پارامترهای پیش فرض در جاوا اسکریپت – اجرای چندین نسخه PHP بر روی یک سرور Debian 10
نحوه راه اندازی یک پروژه React با برنامه React – نصب و ایمن سازی phpMyAdmin در اوبونتو 18
پیکربندی یک تایید اعتبار مجاز(CA) در CentOS 8 – تنظیم برنامه Node.js برای تولید در CentOS 7
نصب MariaDB در اوبونتو 18.04 – ایمن کردن Apache با Let’s Encrypt در Debian 10
نحوه نصب Node.js در CentOS 8 – بازنویسی URL را با mod_rewrite برای Apache در Debian 10
راه اندازی فایروال با استفاده از firewalld در CentOS 8 – نصب وب سرور Apache در Debian 10
اضافه کردن و حذف کاربران در CentOS 8 – نصب Apache Tomcat 9 در Debian 10
نصب و استفاده از PostgreSQL در CentOS 8 – راه اندازی سرور اولیه با Debian 10
نصب MariaDB در CentOS 8 – چگونه با JSX عناصر واقعی ایجاد کنیم
نصب و پیکربندی VNC در Debian 10 – استفاده از سرور از راه دور Docker
نصب و ایمن سازی Grafana در اوبونتو 18 – نحوه نصب Git در CentOS 8
نصب Git در Debian 10 – نصب و پیکربندی Zabbix برای ردیابی ایمن سرورهای
نحوه نصب Node.js در Debian 10 – نصب وب سرور Apache در CentOS 7
نحوه نصب Webmin در Debian 10 – نصب و پیکربندی Zabbix برای ردیابی ایمن سرور
نصب وردپرس با بانک اطلاعاتی در اوبونتو – ساخت و استقرار سرور GraphQL با Node.js و MongoDB
نصب پایتون 3 و تنظیم نویسی محلی macOS – نصب و ایمن سازی phpMyAdmin با Nginx در سرور
نصب Nagios 4 و نظارت بر سرور اوبونتو 18 – نصب Python 3 و تنظیم یک محیط برنامه نویسی
نحوه نصب R بر روی Debian 10 – راه اندازی سرور Prisma روی اوبونتو 18.04
نصب و پیکربندی Laravel با LEMP در اوبونتو 18 – نصب و پیکربندی pgAdmin 4 در Server Mode
نصب Python 3 و تنظیم برنامه نویسی CentOS 8 – نصب Jitsi Meet در Ubuntu 18.04
کلمات کلیدی خرید سرور
خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا – خرید سرور مجازی ارزان هلند – vps – خرید vps هلند – خرید سرور مجازی آمریکا – خرید vps فرانسه – تست vps – سرور مجازی تست – سرور مجازی ویندوز – ارزانترین vps – خرید وی پی اس – vps ارزان –
https://vpsgol.net/product/vps-germany/
https://vpsgol.net/product/vps-usa/
https://vpsgol.net/product/vps-france/
https://vpsgol.net/product/vps-canada/
https://vpsgol.net/product/vps-poland/
https://vpsgol.net/product/vps-netherlands/
https://vpsgol.net/product/vps-england/