first of all, need to create a child process of CGI which located in /etc/init.d/php-common-Perso.sh
the PHP_INI_SCAN_DIR include all specification of fpm for each virtual host of apache:
relaunch the apache2, we can visit main.addepi.fr now.
prefix="/opt/php-5.3.6-full"; exec_prefix=${prefix}; php_fpm_BIN="${exec_prefix}/sbin/php-fpm"; php_fpm_CONF="/home/siteadm/common/php/Perso.conf"; php_fpm_PID="/home/siteadm/common/php/Perso.pid"; php_fpm_INI="/home/siteadm/common/php/Perso.ini"; PHP_INI_SCAN_DIR="/home/siteadm/common/php/vhost"; php_opts="--fpm-config $php_fpm_CONF -c $php_fpm_INI" export PHP_INI_SCAN_DIR; . /home/siteadm_admin/template/php/php-fpm-init.sh
the PHP_INI_SCAN_DIR include all specification of fpm for each virtual host of apache:
[HOST=main.addepi.fr] open_basedir = "/data/admin/" doc_root = "/data/admin/web" mail.log = "/data/admin/app/logs/php.mail.error.log" short_open_tag = 1 error_log = "/data/admin/app/logs/php.error.log" default_charset = "utf-8"and some other package loader like imagick.ini
; configuration for php imagick module extension=imagick.soIn fact, Perso.conf is still another php.ini for php-fpm, it contains only three lines:
pid = /home/siteadm/common/php/Perso.pid error_log = /home/siteadm/common/log/php-Perso_error.log include=/home/siteadm/common/php/Perso/*.confwhich is all the child fastcgi defination, here i add a /home/siteadm/common/php/Perso/main-php-default.conf file with:
[main-default] catch_workers_output = yes listen = /home/siteadm/common/php/Perso/main-php-default.sock listen.owner = root listen.group = hosts listen.mode = 0660 user = www-data ; normalement nobody group = hosts ;chroot = /data/admin pm = dynamic pm.max_children = 10 pm.start_servers = 1 pm.min_spare_servers = 1 pm.max_spare_servers = 2 pm.max_requests = 500 pm.status_path = /fpm-status ping.path = /fpm-ping ping.response = pong ;slowlog = {LOG_ROOT}/php-main_slow.log ;request_slowlog_timeout = 5s ; Variables d'environnement env[TMP] = /data/temp env[TMPDIR] = /data/temp env[TEMP] = /data/temp ; Directives de configuration bloquées ;php_admin_flag[param1] = on php_admin_value[open_basedir] = "/data/admin" php_admin_value[error_log] = "/data/admin/app/logs/php.error.log" php_admin_value[mail.log] = "/data/admin/app/logs/php.mail.error.log" php_admin_value[upload_tmp_dir] = "/data/temp" php_admin_value[session.save_path] = "/data/temp" php_admin_value[apc.stat] = "0" php_admin_value[apc.lazy_functions] = "0" php_admin_value[apc.lazy_classes] = "0"in this file, we define all the parameter of this child fastcgi process parameter. include his sock file, user, group temp folder etc. After we done this, need to launch the php-common-Perso.sh, which is also launching /home/siteadm_admin/template/php/php-fpm-init.sh contained by this .sh
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 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 ;; esacSo , we can start our fpm main and child process. and if we type: ps aux | grep main, we should see :
www-data 24417 0.0 0.9 346424 76508 ? S Dec03 0:03 php-fpm: pool main-defaultWell, from now we can use this as an external fastcgi socket. so i create an vhost like this: /etc/apache2/sites-available/main
FastCGIExternalServer /data/admin/cgi-bin/php-default -socket /home/siteadm/common/php/Perso/main-php-default.sock -pass-header Authorizationwell, you really do not need a file name: /data/admin/cgi-bin/php-default this is an alias of the socket name.DocumentRoot "/data/admin/web" ServerName main.addepi.fr ServerAlias main.addepi.fr ServerAdmin webmaster@addepi.fr CustomLog /data/admin/app/logs/apache.access.log combined ErrorLog /data/admin/app/logs/apache.error.log ScriptAlias /cgi-bin/ /data/admin/cgi-bin/ Action php-fpm /cgi-bin/php-default order allow,deny allow from all DirectoryIndex app.php AddHandler php-fpm .php Options -Indexes Order allow,deny Allow from env=REDIRECT_STATUS
relaunch the apache2, we can visit main.addepi.fr now.
评论
发表评论