مستند کانفیگ آپاچی برای استفاده از fastcgi و php-fpm روی دبیان

شرح مسئله

قبل از اجرای این مستند شرح‌مسئله همین مستند برای اوبونتو را مطالعه کنید.

نصب

اولین گام اینست که آپاچی را همراه با ماژول fastcgi نصب کنید:

apt-get install apache2-mpm-worker

ماژول FPM در مخازن رسمی دبیان نیست. پس باید فایل مخازن را باز کنید و موارد لازم را به آن اضافه کنید:

nano /etc/apt/sources.list

برای سیستم‌عامل دبیان در مخازن non-free هست پس باید این ۳ خط در فایل موجود باشد:

deb http://ftp.us.debian.org/debian wheezy main contrib non-free
deb http://security.debian.org/ wheezy/updates main contrib non-free
deb http://ftp.debian.org/debian/ wheezy-updates main contrib non-free

گام بعد نصب PHP همراه پشتیبانی از PHP5-FPM است:

apt-get update && apt-get install libapache2-mod-fastcgi php5-fpm php5

لود کردن ماژول‌ها

گام بعد فعال کردن ماژول php5-fpm هست. برای این منظور باید ماژول actions را فعال کنیم:

a2enmod actions

در بعضی موارد ممکن است PHP-FPM به صورت دیفالت روی پورت ۹۰۰۰ لیسن کند. برای جلوی‌گیری از overhead تی‌سی‌پی باید طوری تنظیم شود که به جای پورت ۹۰۰۰ از سوکت یونیکس استفاده کند. در اینجا باید اطمینان پیدا کنیم php-fpm به جای TCP از سوکت UNIX استفاده می‌کند:

grep -E '^\s*listen\s*=\s*[a-zA-Z/]+' /etc/php5/fpm/pool.d/www.conf

خروجی این کامند اگر این نبود باید برخی از تنظیمات php-fpm اصلاح شود:

listen = /var/run/php5-fpm.sock

با دستور زیر ورژن آپاچی را چک کنید:

apache2 -v

بسته به اینکه ورژن آپاچی شما ۲.۲ یا قدیمی‌تر است یا ۲.۴ یا جدیدتر تنظیمات مربوطه را در فایل زیر وارد کنید:

nano /etc/apache2/mods-enabled/fastcgi.conf

تنظیمات نسخه ۲.۲ آپاچی:

<IfModule mod_fastcgi.c>
 AddType application/x-httpd-fastphp5 .php
 Action application/x-httpd-fastphp5 /php5-fcgi
 Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
 FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization
</IfModule>

تنظیمات نسخه ۲.۴ آپاچی:

<IfModule mod_fastcgi.c>
 AddType application/x-httpd-fastphp5 .php
 Action application/x-httpd-fastphp5 /php5-fcgi
 Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
 FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization
 <Directory /usr/lib/cgi-bin>
  Require all granted
 </Directory>
</IfModule>

با دستور زیر مطمئن شوید که تنظیمات انجام شده روی آپاچی مشکل دستوری ندارد:

apache2ctl configtest

اگر خروجی دستور Ok نبود مشکل را پیدا و برطرف کنید. اگر Ok بود آپاچی را ریست کنید:

service apache2 restart

اطمینان از اعمال درست تنظیمات