跳至主要内容

install god dame fastgci and fpm on our server.

first of all, need to create a child process of CGI which located in /etc/init.d/php-common-Perso.sh

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.so

In 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/*.conf
which 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
        ;;

esac

So , 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-default 
Well, 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 Authorization

        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




well, you really do not need a file name: /data/admin/cgi-bin/php-default this is an alias of the socket name.
relaunch the apache2, we can visit main.addepi.fr now.

评论

此博客中的热门博文

jquery on 的问题

return false  from  within a jQuery event handler  is effectively the same as calling both  e.preventDefault and  e.stopPropagation  on the passed  jQuery.Event object. e.preventDefault()  will prevent the default event from occuring,  e.stopPropagation()  will prevent the evet from bubbling up and  return false  will do both. Note that this behaviour differs from  normal  (non-jQuery) event handlers, in which, notably,  return false   does  not  stop the event from bubbling up . 所以on前半部分的selector必须是静态的。

chrome extension Error: attempting to use a disconnected prot object

if you get this error: Port error: Could not establish connection. Receiving end does not exist. miscellaneous_bindings:236 chromeHidden.Port.dispatchOnDisconnect miscellaneous_bindings:236 Uncaught Error: Attempting to use a disconnected port object miscellaneous_bindings:58 PortImpl.postMessage miscellaneous_bindings:58 responseCallback miscellaneous_bindings:143 xhr.onreadystatechange That means you have make some mistake as this discussed: This is caused when a connection get closed. For example if you open a tab that has the content_script injected, it opens a connection, the tab is closed, and then the background_page tries to pass a message. It will fail because the tab is no longer active to receive the message. In your case I would guess that as tabs close and new tabs open you are attempting to post messages with the old tabId instead of creating a new connection to the new tab. I would recommend reading through the  long-lived connections s

工作合同 , 离职,工会 相关

转自战法: 平常受主管和同事歧视和欺负,准备把他们告到 Prud'hommes, 所以最近和工会的人走的比较近,学会如何 monter un dossier, 和一些保护自己的方法,特别想跟大家分享。 1. Il faut acter 也就是说,如果同事对你有行为或言语上的 Harcèlement, 当下不要过激,但是一定要给主管发一封邮件。 邮件可以保存下来作为证据。 邮件是 Daté 的,可以记录时间日期。 只要邮件是你发的,对方回不回都无所谓,因为你已经公开表示了不满。 如果是言语骚扰,邮件里一定要引用同事骚扰你的原话。 邮件不要有攻击性,你的请求一定是合理的,但是让对方很难回复。比如我主管不批我的RTT,因为他说“RTT不能半天半天的批”,于是工会的哥们帮我起草了一封邮件,就说“我这个月想提交RTT申请的时候,惊讶地发现四月份的申请被拒了。我不明白,全公司的员工都可以请半天的RTT,为什么我不行?而且你已经批了我三月份两个半天RTT的申请。“ 2. Prise d'acte 如果公司没有很好的履行合同,没有支付工资,同事对你有骚扰,甚至是暴力,等等,你就可以立刻终止你的合同。 这个很厉害,不要轻易使用。因为如果法官判定你的请求不合理,就要赔偿公司 Préavis 的钱。 相关链接: http://vosdroits.service-public.fr/F24409.xhtml http://www.journaldunet.com/management/pratique/contrats/4643/la-prise-d-acte.html http://www.juritravail.com/Actualite/prise-acte-rupture-par-salarie/Id/2136  (prise d'acte 和 démission 的区别) 3. 保存邮件 最好是把你所有的邮件都保存在U盘上,备份在自己家的电脑,以免公司突然给你来个 mise à pied, 你就没办法带走任何证据了。但是千万不要大张旗鼓地做,要不然公司就会怀疑你要做什么对公司不好的事。 4. 最有,一些有用链接: http://vosdroits.service-public.fr/particuliers/N19806.xh