Skip to content

บันทึกการติดตั้ง PHP-FPM ร่วมกับ Apache2

Last updated on August 6, 2018

ได้ยินเสียงร่ำลือว่า PHP-FPM (FastCGI Process Manager) รับ load รับ concurrency ได้เยอะเพราะมีการจัดการ process ดีกว่า mod_php ทำให้ใช้ resource น้อยกว่า ฟีเจอร์อื่นๆ มีอะไรบ้างดูในลิงก์ต้นฉบับครับ

เครื่องที่ติดตั้งของผมเป็น Ubuntu ซอฟต์แวร์ที่ต้องการติดตั้งได้ด้วย APT เลยสบายหน่อย

Installation

ติดตั้ง Apache2 และ mpm-worker

$sudo aptitude install apache2 apache2-mpm-worker

ติดตั้ง module fastcgi, php-fpm, php5

$sudo aptitude install libapache2-mod-fastcgi php5-fpm php5

enable module

$sudo a2enmod actions fastcgi alias

Configuration

Apache2

เนื่องจากเราจะใช้ fastcgi handle ไฟล์ที่เขียนด้วย PHP ต้องคอนฟิกเพิ่มเติม โดยถ้าต้องการใช้เฉพาะ VirtaulHost ก็เพิ่มเฉพาะไฟล์คอนฟิก VirtaulHost นั้นใน /etc/apache2/sites-enabled/VHOST_CONF_FILE แต่ถ้าต้องการใช้ทุก VirtaulHost แบบ global ก็เพิ่มไว้ที่ /etc/apache2/conf.d/php5-fpm.conf  (ถ้าไม่มีไฟล์ให้สร้างใหม่) โดยเพิ่มคำสั่งตามนี้

<IfModule mod_fastcgi.c>
    AddHandler php5-fcgi .php
    Action php5-fcgi /php5-fcgi
    Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
    FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -host 127.0.0.1:9000 -pass-header Authorization
</IfModule>

FPM

1. /etc/php5/fpm/php.ini

ไฟล์คอนฟิกทั้งหมดของ  php-fpm อยู่ที่ /etc/php5/fpm 

ตอนนี้ php.ini ของเราจะไม่ได้ใช้ที่เดิมที่ /etc/php5/apache2/php.ini  แล้วนะครับ ถ้าจะคอนฟิกอะไรเพิ่มให้ไปคอนฟิกที่ /etc/php5/fpm/php.ini  แทน เช่นผมติดตั้ง MongoDB driver ก็ต้องไปเพิ่ม extension=mongo.so  แทน

2. /etc/php5/fpm/pool.d/www.conf

ไฟล์นี้เป็นการคอนฟิก process manager ของ fpm แต่ละคน แต่ละงานใช้ไม่เหมือนกันก็เอาตามความเหมาะสมครับ ส่วนของผมเป็นตามนี้

[www]
pm = dynamic
pm.max_children = 10
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_spare_servers = 5
pm.max_requests = 500

เสร็จแล้วก็ restart ทั้ง Apache2 และ FPM

$sudo service apache2 reload
$sudo service php-fpm reload

อ้างอิง

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.