Tuesday, March 25, 2014

Configure apache to use php-fpm



Apache httpd 2.4.x sử dụng mod_proxy_fcgi  php_fpm. Chi tiết bên dưới sẽ hướng dẫn bạn cấu hình php-fpm virtual host.
Code:
[root@linux24h httpd.d]# cd /usr/local/php/etc
[root@linux24h etc]# cp php-fpm.conf.default php-fpm.conf
[root@linux24h etc]# vim php-fpm.conf
Bỏ dấu “;” tại các dòng:
Code:
include=etc/fpm.d/*.conf
pid = run/php-fpm.pid
error_log = log/php-fpm.log
log_level = notice
listen.allowed_clients = 127.0.0.1
Sau đó nhấn ESC  :wq để thoát ra và lưu lại.

Tạo thư mục chứa các file cấu hình của virtual host:
Code:
[root@linux24h etc]# mkdir fpm.d
Tạo file cấu hình cho host linux24h.com
Code:
[root@linux24h etc]# vim fpm.d/linux24h.com.conf
Thêm vào các dòng như bên dưới:
Code:
[linux24h]
;listen = /var/run/php5-fpm/linux24h.com.sock
listen = 127.0.0.1:9002
listen.allowed_clients = 127.0.0.1
listen.owner = linux24h
listen.group = linux24h
user = linux24h
group = linux24h
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
chdir = /
Để php-fpm có thể tự khởi động khi reboot server:
  • Tạo file php-fpm:
Code:
[root@linux24h ~]#vim /etc/init.d/php-fpm
  • Nội dung như bên dưới và lưu tại /etc/init.d/
Code:
#! /bin/sh
### BEGIN INIT INFO
# Provides:          php-fpm
# Required-Start:    $all
# Required-Stop:    $all
# Default-Start:    2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts php-fpm
# Description:      starts the PHP FastCGI Process Manager daemon
### END INIT INFO
php_fpm_BIN=/usr/local/php/sbin/php-fpm
php_fpm_CONF=/usr/local/php/etc/php-fpm.conf
php_fpm_PID=/usr/local/php/var/run/php-fpm.pid
php_opts="--fpm-config $php_fpm_CONF"
wait_for_pid () {
        try=0
        while test $try -lt 35 ; do
                case "$1" in
                        'created')
                        if [ -f "$2" ] ; then
                                try=''
                                break
                        fi
                        ;;
                        'removed')
                        if [ ! -f "$2" ] ; then
                                try=''
                                break
                        fi
                        ;;
                esac
                echo -n .
                try=`expr $try + 1`
                sleep 1
        done
}
case "$1" in
        start)
                echo -n "Starting php-fpm "
                $php_fpm_BIN $php_opts
                if [ "$?" != 0 ] ; then
                        echo " failed"
                        exit 1
                fi
                wait_for_pid created $php_fpm_PID
                if [ -n "$try" ] ; then
                        echo " failed"
                        exit 1
                else
                        echo " done"
                fi
        ;;
        stop)
                echo -n "Gracefully shutting down php-fpm "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm is not running ?"
                        exit 1
                fi
                kill -QUIT `cat $php_fpm_PID`
                wait_for_pid removed $php_fpm_PID
                if [ -n "$try" ] ; then
                        echo " failed. Use force-exit"
                        exit 1
                else
                        echo " done"
                fi
        ;;
        force-quit)
                echo -n "Terminating php-fpm "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm is not running ?"
                        exit 1
                fi
                kill -TERM `cat $php_fpm_PID`
                wait_for_pid created $php_fpm_PID
                if [ -n "$try" ] ; then
                        echo " failed"
                        exit 1
                else
                        echo " done"
                fi
        ;;
        stop)
                echo -n "Gracefully shutting down php-fpm "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm is not running ?"
                        exit 1
                fi
                kill -QUIT `cat $php_fpm_PID`
                wait_for_pid removed $php_fpm_PID
                if [ -n "$try" ] ; then
                        echo " failed. Use force-exit"
                        exit 1
                else
                        echo " done"
                fi
        ;;
        force-quit)
                echo -n "Terminating php-fpm "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm is not running ?"
                        exit 1
                fi
                kill -TERM `cat $php_fpm_PID`
                wait_for_pid removed $php_fpm_PID
                if [ -n "$try" ] ; then
                        echo " failed"
                        exit 1
                else
                        echo " done"
                fi
        ;;
        restart)
                $0 stop
                $0 start
        ;;
        reload)
                echo -n "Reload service php-fpm "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm is not running ?"
                        exit 1
                fi
                kill -USR2 `cat $php_fpm_PID`
                echo " done"
        ;;
        *)
                echo "Usage: $0 {start|stop|force-quit|restart|reload}"
                exit 1
        ;;
esac
Code:
[root@linux24h ~] chkconfig --level 235 php-fpm on

Related Posts:

  • Copy a folder linux I'm a new Linux user. How do I copy a directory or folder under Linux operating system using command line options and bash shell?You can use various command to copy a folder under Linux operating systems. cp Command cp … Read More
  • Tối Ưu Hóa Và Bảo Mật Apache 1. Edit một số directive default trong httpd.conf để giảm thiểu việc lộ lọt thông tin cấu hình của máy chủ hoặc các tác vụ ko cần thiết:TraceEnable Off : Disable TRACE request methodServerSignature Off : Disable vi… Read More
  • What are the best linux permissions to use for websiteQuestion: I have a Linux web server running Apache2 that hosts several websites. Each website has its own folder in /var/www/. /var/www/contoso.com/ /var/www/contoso.net/ /var/www/fabrikam.com/ The base directory /var/www/… Read More
  • Giám sát hệ thống Linux với netstat Netstat là một công cụ hữu ích của Linux cho phép bạn kiểm tra những dịch vào nào đang kết nối đến hệ thống của bạn. Nó rất hữu ích trong việc phân tích cái gì đang xảy ra trên hệ thống của bạn khi bạn cố gắng ngăn chặn một … Read More
  • Hướng dẫn Chmod an toàn cho website DigiStar đề nghị CHMOD như sau để bảo vệ an toàn cho website tại host của DigiStar: 1) CHMOD thư mục Public_html thành 710 thay vì mặc định là 750 việc này sẽ giúp bạn bảo… Read More