apache-worker-and-php-fpm
Apache worker เหมาะสำหรับ web server ที่ต้องรับโหลดหนักแต่มีทรัพยากรในระบบไม่เยอะมาก เนื่องจาก Apache worker จะมีการใช้ memory ที่น้อยกว่า Prefork mode

การติดตั้ง Apache worker ให้รองรับการทำงานร่วมกับ PHP จะมีความยุ่งยากมากกว่าแบบ Prefork เนื่องจากว่า Apache worker ไม่รองรับการทำงานร่วมกับ PHP module ดังนั้นจึงจำเป็นต้องทำการติดตั้ง PHP FastCGI และ PHP-FPM เข้ามาใช้งานแทน

การติดตั้ง Apache worker + PHP FastCGI + PHP-FPM บน Ubuntu 12.04 LTS

  1. Login เป็น root user ด้วยคำสั่ง
    $ sudo su -
  2. เนื่องจาก php fastcgi ubuntu ได้เก็บ package ไว้ที่ repo multiverse ดังนั้นจึงต้องทำการ add multiverse เข้าไปยังไฟล์ /etc/apt/sources.list
    root@Ezylinux:~# vi /etc/apt/sources.list
    และเพิ่มข้อมูลด้านล่างลงไป
    deb http://us.archive.ubuntu.com/ubuntu/ precise multiverse
    deb-src http://us.archive.ubuntu.com/ubuntu/ precise multiverse
    deb http://us.archive.ubuntu.com/ubuntu/ precise-updates multiverse
    deb-src http://us.archive.ubuntu.com/ubuntu/ precise-updates multiverse
  3. หลังจากแก้ไขไฟล์ /etc/apt/sources.list เรียบร้อยแล้ว ก็จะทำการติดตั้ง Apache worker, PHP fastcgi และ PHP FPM ด้วยคำสั่ง
    root@Ezylinux:~# apt-get install apache2-mpm-worker libapache2-mod-fastcgi php5-fpm php5
  4. แก้ไขการตั้งค่า PHP FPM โดยให้ listen ที่ TCP port 9000
    root@Ezylinux:~# vi /etc/php5/fpm/pool.d/www.conf
    และให้เพิ่มข้อมูลด้านล่างเข้าไป
    listen = 127.0.0.1:9000
  5. เปิดการใช้งาน fastcgi และ alias modules ด้วยคำสั่ง
    root@Ezylinux:~# a2enmod actions fastcgi alias
    และให้เพิ่มข้อมูลด้านล่างไปที่ไฟล์ /etc/apache2/apache2.conf
    <IfModule mod_fastcgi.c>
    AddHandler php5-fcgi .php
    Action php5-fcgi /php5-fcgi
    Alias /php5-fcgi /usr/lib/cgi-bin/php
    FastCgiExternalServer /usr/lib/cgi-bin/php -host 127.0.0.1:9000 -pass-header Authorization
    </IfModule>
  6. ติดตั้ง PHP modules อื่นๆเพิ่มเติม
    root@Ezylinux:~# apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl
  7. Start PHP-FPM service ด้วยคำสั่ง
    root@Ezylinux:~# service php-fpm start
  8. Start Apache service ด้วยคำสั่ง
    root@Ezylinux:~# service apache2 start

การทดสอบการติดตั้ง apache worker และ PHP-PFM

  1. สร้างไฟล์ phpinfo โดยสร้างไฟล์ที่ /var/www/info.php
    root@Ezylinux:~# vi /var/www/info.php
  2. เพิ่ม phpinfo funtion เข้าไปตามตัวอย่าง
    <?php phpinfo(); ?>
  3. ทดสอบด้วยการเปิดเวป โดยเข้าไปยัง URL ตามนี้ http://YOURIP/info.php (YOURIP คือ IP ของ Web Server)phpinfo apache worker php fastcgi php fpm