آپاچی؛ شب ۳۹: اجرای WordPress با mod_php و PHP-CGI
فهرست نوشته
WordPress وابسته به یک روش خاص اجرای PHP نیست. امشب یک deployment یکسان را در دو Clone با mod_php و PHP-CGI میسنجیم تا تفاوت هویت اجرا، ظرفیت و تنظیمات روشن شود.
این جلسه بخشی از دورهٔ آپاچی در ۵۰ شب است. قرارداد نامها، مسیرها و روش اعمال تغییر را در راهنمای دوره بخوان.
محیط: دو Clone Debian/Ubuntu از آمادهسازی شب سیوهشتم؛ یکی با شاخهٔ شب سیودوم و دیگری با شب سیوسوم. آنها همزمان IP یکسان نداشته باشند.
یک برنامه، دو handler#
در هر Clone فایل سایت 140-wp-legacy.conf را فعال کن:
<VirtualHost *:443>
ServerName wp.example.test
DocumentRoot /var/www/wordpress/public
SSLEngine on
SSLCertificateFile /etc/apache-lab/tls/www.crt
SSLCertificateKeyFile /etc/apache-lab/tls/www.key
DirectoryIndex index.php
<Directory /var/www/wordpress/public>
Options +FollowSymLinks -Indexes -ExecCGI -Includes
AllowOverride None
Require ip 192.168.56.20
</Directory>
</VirtualHost>
در Clone mod_php، همان ماژول PHP فعال فایل را پردازش میکند. در Clone CGI، ScriptAlias، Action و policy wrapper شب سیوسوم را داخل همین میزبان اضافه کن و در Directory WordPress AddHandler lab-php .php بگذار. handler FPM نباید در هیچکدام فعال باشد.
چون هر دو روش این آزمایش با کاربر Apache اجرا میشوند، گروه config را در همین Clone به APACHE_USER تغییر بده و حالت 640 را نگه دار. فقط پوشهٔ wp-content/uploads را برای همین runtime نوشتنی کن؛ کد WordPress root-owned باقی بماند. این تغییر گروه را به مسیر اصلی pool مستقل منتقل نکن.
نصب و مقایسه#
به https://wp.example.test/wp-admin/install.php با CA معتبر برو، حساب مدیر یکتا بساز و نصب جدولها را کامل کن. پیش از نصب، یک check.php موقت داخل همین DocumentRoot بگذار: در mod_php باید apache2handler و در CGI باید cgi-fcgi بدهد. بعد آن را حذف کن.
یک نوشته بساز، وارد و خارج شو، تصویر upload کن و صفحهٔ front-end را ببین. rewrite، جلوگیری از اجرای PHP در upload و backup را طبق شبهای چهلویکم و چهلودوم روی همین Clone نیز اعمال کن. محدودیت IP برای این آزمایش legacy باقی میماند.
تمرین و بازگشت: مصرف حافظه و هویت کارگر دو مدل را ثبت کن؛ از نتیجهٔ یک درخواست، ادعای برتری ظرفیت نساز. هر دو Clone را خاموش و مسیر اصلی event/FPM را بازیابی کن. روی Alma/Rocky 9، برای تقلید mod_php بستهٔ نامعتبر نصب نمیکنیم؛ WordPress با FPM در شب بعد تکمیل میشود.
منبع: وبسرورهای WordPress ، رابطهای PHP .