当前位置:首页 > PHP教程 > php高级应用 > 列表

学习php-fpm服务启动脚本的方法

发布:smiling 来源: PHP粉丝网  添加日期:2022-07-19 11:30:59 浏览: 评论:0 

这个我自己在用,没问题,有三个path需要自己酌情修改。

先创建自启动文件:/etc/init.d/php-fpm

内容如下:

  1. #! /bin/sh 
  2.  
  3. ### BEGIN INIT INFO 
  4.  
  5. # Provides:     php-fpm 
  6.  
  7. # Required-Start:  $remote_fs $network 
  8.  
  9. # Required-Stop:   $remote_fs $network 
  10.  
  11. # Default-Start:   2 3 4 5 
  12.  
  13. # Default-Stop:   0 1 6 
  14.  
  15. # Short-Description: starts php-fpm 
  16.  
  17. # Description:    starts the PHP FastCGI Process Manager daemon 
  18.  
  19. ### END INIT INFO 
  20.  
  21. prefix=/usr/local/php 
  22.  
  23. exec_prefix=${prefix} 
  24.  
  25. php_fpm_BIN=${exec_prefix}/sbin/php-fpm 
  26.  
  27. php_fpm_CONF=${prefix}/etc/php-fpm.conf 
  28.  
  29. php_fpm_PID=${prefix}/var/run/php-fpm.pid 
  30.  
  31. php_opts="--fpm-config $php_fpm_CONF --pid $php_fpm_PID" 
  32.  
  33. wait_for_pid () { 
  34.  
  35.   try=0 
  36.  
  37.   while test $try -lt 35 ; do 
  38.  
  39.     case "$1" in 
  40.  
  41.       'created'
  42.  
  43.       if [ -f "$2" ] ; then 
  44.  
  45.         try='' 
  46.  
  47.         break 
  48.  
  49.       fi 
  50.  
  51.       ;; 
  52.  
  53.       'removed'
  54.  
  55.       if [ ! -f "$2" ] ; then 
  56.  
  57.         try='' 
  58.  
  59.         break 
  60.  
  61.       fi 
  62.  
  63.       ;; 
  64.  
  65.     esac 
  66.  
  67.     echo -n . 
  68.  
  69.     try=`expr $try + 1` 
  70.  
  71.     sleep 1 
  72.  
  73.   done 
  74.  
  75.  
  76. case "$1" in 
  77.  
  78.   start) 
  79.  
  80.     echo -n "Starting php-fpm " 
  81.  
  82.     $php_fpm_BIN --daemonize $php_opts 
  83.  
  84.     if [ "$?" != 0 ] ; then 
  85.  
  86.       echo " failed" 
  87.  
  88.       exit 1 
  89.  
  90.     fi 
  91.  
  92.     wait_for_pid created $php_fpm_PID 
  93.  
  94.     if [ -n "$try" ] ; then 
  95.  
  96.       echo " failed" 
  97.  
  98.       exit 1 
  99.  
  100.     else 
  101.  
  102.       echo " done" 
  103.  
  104.     fi 
  105.  
  106.   ;; 
  107.  
  108.   stop) 
  109.  
  110.     echo -n "Gracefully shutting down php-fpm " 
  111.  
  112.     if [ ! -r $php_fpm_PID ] ; then 
  113.  
  114.       echo "warning, no pid file found - php-fpm is not running ?" 
  115.  
  116.       exit 1 
  117.  
  118.     fi 
  119.  
  120.     kill -QUIT `cat $php_fpm_PID
  121.  
  122.     wait_for_pid removed $php_fpm_PID 
  123.  
  124.     if [ -n "$try" ] ; then 
  125.  
  126.       echo " failed. Use force-quit" 
  127.  
  128.       exit 1 
  129.  
  130.     else 
  131.  
  132.       echo " done" 
  133.  
  134.     fi 
  135.  
  136.   ;; 
  137.  
  138.   status) 
  139.  
  140.     if [ ! -r $php_fpm_PID ] ; then 
  141.  
  142.       echo "php-fpm is stopped" 
  143.  
  144.       exit 0 
  145.  
  146.     fi 
  147.  
  148.     PID=`cat $php_fpm_PID
  149.  
  150.     if ps -p $PID | grep -q $PID; then 
  151.  
  152.       echo "php-fpm (pid $PID) is running..." 
  153.  
  154.     else 
  155.  
  156.       echo "php-fpm dead but pid file exists" 
  157.  
  158.     fi 
  159.  
  160.   ;; 
  161.  
  162.   force-quit) 
  163.  
  164.     echo -n "Terminating php-fpm " 
  165.  
  166.     if [ ! -r $php_fpm_PID ] ; then 
  167.  
  168.       echo "warning, no pid file found - php-fpm is not running ?" 
  169.  
  170.       exit 1 
  171.  
  172.     fi 
  173.  
  174.     kill -TERM `cat $php_fpm_PID
  175.  
  176.     wait_for_pid removed $php_fpm_PID 
  177.  
  178.     if [ -n "$try" ] ; then 
  179.  
  180.       echo " failed" 
  181.  
  182.       exit 1 
  183.  
  184.     else 
  185.  
  186.       echo " done" 
  187.  
  188.     fi 
  189.  
  190.   ;; 
  191.  
  192.   restart) 
  193.  
  194.     $0 stop 
  195.  
  196.     $0 start 
  197.  
  198.   ;; 
  199.  
  200.   reload) 
  201.  
  202.     echo -n "Reload service php-fpm " 
  203.  
  204.     if [ ! -r $php_fpm_PID ] ; then 
  205.  
  206.       echo "warning, no pid file found - php-fpm is not running ?" 
  207.  
  208.       exit 1 
  209.  
  210.     fi 
  211.  
  212.     kill -USR2 `cat $php_fpm_PID
  213.  
  214.     echo " done" 
  215.  
  216.   ;; 
  217.  
  218.   *) 
  219.  
  220.     echo "Usage: $0 {start|stop|force-quit|restart|reload|status}" 
  221.  
  222.     exit 1 
  223.  
  224.   ;; 
  225.  
  226. esac 

配置php-fpm服务

  1. # 设置权限 
  2.  
  3. chmod 755 /etc/init.d/php-fpm 
  4.  
  5. # php-fpm加入服务 
  6.  
  7. chkconfig --add php-fpm 
  8.  
  9. # php-fpm 234级别下设置为启动 
  10.  
  11. chkconfig php-fpm on 
  12.  
  13. # 查看php-fpm服务当前配置 
  14.  
  15. chkconfig --list php-fpm 
  16.  
  17. php-fpm     0:off  1:off  2:on  3:on  4:on  5:on  6:off 

php-fpm使用方法

  1. # 启动 
  2.  
  3. service php-fpm start 
  4.  
  5. # 关闭 
  6.  
  7. service php-fpm stop 
  8.  
  9. # 重启 
  10.  
  11. service php-fpm restart 
  12.  
  13. # 重载 
  14.  
  15. service php-fpm reload 
  16.  
  17. #检查配置文件 
  18.  
  19. service php-fpm configtest 

脚本说明

  1. # Source function library.  
  2.  
  3. . /etc/rc.d/init.d/functions  
  4.  
  5. # Source networking configuration.  
  6.  
  7. . /etc/sysconfig/network 

以上量行代码有人会疑问他们到底是做什么的,'.'是source类似于程序中的include和require,将functions里面的方法全部倒入到这边,这边程序便可以使用,例如这边用到的daemon、status。第二行的network实际上就几行,如下

NETWORKING=yes

HOSTNAME=E10162

将他们作为变量赋值,判断网卡是否启动,如果你的nginx不走网卡,其实网络这段可以去掉.

Tags: php-fpm php启动脚本

分享到: