这是我在实验中碰到的问题,我们在定义php-fpm为资源的时候,用php程序包自带的脚本会报错。
笔者花了很多时间尝试了各种办法,最后找到了一位网友写的脚本,可以解决。
脚本如下:
<code>#!/bin/sh</code>
<code>#=======================================================================================</code>
<code># php-fpm - this script start and stop the php-fpm daemon</code>
<code>#</code>
<code># chkconfig 35 on</code>
<code># description: php-fpm is a FastCGI web server.</code>
<code># processname: php-fpm</code>
<code># config: /usr/local/php/etc/php-fpm.conf</code>
<code># pidfile: /var/run/php-fpm.pid</code>
<code>PATH=</code><code>/usr/local/sbin</code><code>:</code><code>/usr/local/bin</code><code>:</code><code>/sbin</code><code>:</code><code>/bin</code><code>:</code><code>/usr/sbin</code><code>:</code><code>/usr/bin</code>
<code> </code>
<code>BINFILE=</code><code>"/usr/local/php/sbin/php-fpm"</code>
<code>CFGFILE=</code><code>"/usr/local/php/etc/php-fpm.conf"</code>
<code>PIDFILE=</code><code>"/var/run/php-fpm.pid"</code>
<code>LOCKFILE=</code><code>"/var/lock/php-fpm.lock"</code>
<code>RETVAL=0</code>
<code>start() {</code>
<code> </code><code>[[ -x $BINFILE ]] || </code><code>exit</code> <code>5</code>
<code> </code><code>[[ -f $CFGFILE ]] || </code><code>exit</code> <code>6</code>
<code> </code>
<code> </code><code>if</code> <code>[[ `</code><code>ps</code> <code>aux | </code><code>grep</code> <code>php-fpm: | </code><code>grep</code> <code>-</code><code>v</code> <code>grep</code> <code>| </code><code>wc</code> <code>-l` -gt 0 ]]; </code><code>then</code>
<code> </code><code>echo</code> <code>"The php-fpm is already running."</code>
<code> </code><code>return</code> <code>1</code>
<code> </code><code>fi</code>
<code> </code><code>$BINFILE -t ></code><code>/dev/null</code> <code>2>&1</code>
<code> </code><code>if</code> <code>[[ $? -</code><code>ne</code> <code>0 ]]; </code><code>then</code>
<code> </code><code>echo</code> <code>"The php-fpm configure has error."</code>
<code> </code><code>echo</code> <code>-n </code><code>"Starting php-fpm......"</code>
<code> </code><code>$BINFILE -y $CFGFILE -g ${PIDFILE}</code>
<code> </code><code>RETVAL=$?</code>
<code> </code><code>echo</code>
<code> </code><code>[[ $RETVAL -</code><code>eq</code> <code>0 ]] && </code><code>touch</code> <code>$LOCKFILE</code>
<code> </code><code>return</code> <code>$RETVAL</code>
<code>}</code>
<code>stop() {</code>
<code> </code><code>if</code> <code>[[ `</code><code>ps</code> <code>aux | </code><code>grep</code> <code>php-fpm: | </code><code>grep</code> <code>-</code><code>v</code> <code>grep</code> <code>| </code><code>wc</code> <code>-l` -</code><code>eq</code> <code>0 ]]; </code><code>then</code>
<code> </code><code>echo</code> <code>"The php-fpm is not running."</code>
<code> </code><code>echo</code> <code>-n </code><code>"Shutting down php-fpm......"</code>
<code> </code><code>if</code> <code>[[ -f $PIDFILE ]]; </code><code>then</code>
<code> </code><code>kill</code> <code>-QUIT `</code><code>cat</code> <code>${PIDFILE}`</code>
<code> </code><code>else</code>
<code> </code><code>kill</code> <code>-QUIT `</code><code>ps</code> <code>aux | </code><code>grep</code> <code>php-fpm | </code><code>awk</code> <code>'/master/{print $2}'</code><code>`</code>
<code> </code><code>[[ $RETVAL -</code><code>eq</code> <code>0 ]] && </code><code>rm</code> <code>-f $LOCKFILE $PIDFILE</code>
<code>restart() {</code>
<code> </code><code>stop</code>
<code> </code><code>sleep</code> <code>1</code>
<code> </code><code>while</code> <code>true</code>
<code> </code><code>do</code>
<code> </code><code>if</code> <code>[[ `</code><code>ps</code> <code>aux | </code><code>grep</code> <code>php-fpm: | </code><code>grep</code> <code>-</code><code>v</code> <code>grep</code> <code>| </code><code>wc</code> <code>-l` -</code><code>eq</code> <code>0 ]]; </code><code>then</code>
<code> </code><code>start</code>
<code> </code><code>break</code>
<code> </code><code>fi</code>
<code> </code><code>sleep</code> <code>1</code>
<code> </code><code>done</code>
<code>reload() {</code>
<code> </code><code>echo</code> <code>-n $</code><code>"Reloading php-fpm......"</code>
<code> </code><code>kill</code> <code>-USR2 `</code><code>cat</code> <code>${PIDFILE}`</code>
<code> </code><code>kill</code> <code>-USR2 `</code><code>ps</code> <code>aux | </code><code>grep</code> <code>php-fpm | </code><code>awk</code> <code>'/master/{print $2}'</code><code>`</code>
<code>case</code> <code>"$1"</code> <code>in</code>
<code>start)</code>
<code> </code><code>start</code>
<code> </code><code>;;</code>
<code>stop)</code>
<code>restart)</code>
<code> </code><code>restart</code>
<code>reload)</code>
<code> </code><code>reload</code>
<code>*)</code>
<code> </code><code>echo</code> <code>"Usage: service php-fpm {start|stop|restart|reload}"</code>
<code> </code><code>RETVAL=1</code>
<code>esac</code>
<code>exit</code> <code>$RETVAL</code>
将这个脚本替换掉php-fpm程序提供的脚本,然后在定义资源的时候不要使用资源监控(monitor)不然也会报错,笔者的定义方式如下:
crm configure primitive php-fpm lsb:php-fpm
本文转自qw87112 51CTO博客,原文链接:http://blog.51cto.com/tchuairen/1534231