這是我在實驗中碰到的問題,我們在定義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