当前位置:首页 > 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.  
  77. case "$1" in 
  78.  
  79.   start) 
  80.  
  81.     echo -n "Starting php-fpm " 
  82.  
  83.     $php_fpm_BIN --daemonize $php_opts 
  84.  
  85.     if [ "$?" != 0 ] ; then 
  86.  
  87.       echo " failed" 
  88.  
  89.       exit 1 
  90.  
  91.     fi 
  92.  
  93.     wait_for_pid created $php_fpm_PID 
  94.  
  95.     if [ -n "$try" ] ; then 
  96.  
  97.       echo " failed" 
  98.  
  99.       exit 1 
  100.  
  101.     else 
  102.  
  103.       echo " done" 
  104.  
  105.     fi 
  106.  
  107.   ;; 
  108.  
  109.   stop) 
  110.  
  111.     echo -n "Gracefully shutting down php-fpm " 
  112.  
  113.     if [ ! -r $php_fpm_PID ] ; then 
  114.  
  115.       echo "warning, no pid file found - php-fpm is not running ?" 
  116.  
  117.       exit 1 
  118.  
  119.     fi 
  120.  
  121.     kill -QUIT `cat $php_fpm_PID` 
  122.  
  123.     wait_for_pid removed $php_fpm_PID 
  124.  
  125.     if [ -n "$try" ] ; then 
  126.  
  127.       echo " failed. Use force-quit" 
  128.  
  129.       exit 1 
  130.  
  131.     else 
  132.  
  133.       echo " done" 
  134.  
  135.     fi 
  136.  
  137.   ;; 
  138.  
  139.   status) 
  140.  
  141.     if [ ! -r $php_fpm_PID ] ; then 
  142.  
  143.       echo "php-fpm is stopped" 
  144.  
  145.       exit 0 
  146.  
  147.     fi 
  148.  
  149.     PID=`cat $php_fpm_PID` 
  150.  
  151.     if ps -p $PID | grep -q $PID; then 
  152.  
  153.       echo "php-fpm (pid $PID) is running..." 
  154.  
  155.     else 
  156.  
  157.       echo "php-fpm dead but pid file exists" 
  158.  
  159.     fi 
  160.  
  161.   ;; 
  162.  
  163.   force-quit) 
  164.  
  165.     echo -n "Terminating php-fpm " 
  166.  
  167.     if [ ! -r $php_fpm_PID ] ; then 
  168.  
  169.       echo "warning, no pid file found - php-fpm is not running ?" 
  170.  
  171.       exit 1 
  172.  
  173.     fi 
  174.  
  175.     kill -TERM `cat $php_fpm_PID` 
  176.  
  177.     wait_for_pid removed $php_fpm_PID 
  178.  
  179.     if [ -n "$try" ] ; then 
  180.  
  181.       echo " failed" 
  182.  
  183.       exit 1 
  184.  
  185.     else 
  186.  
  187.       echo " done" 
  188.  
  189.     fi 
  190.  
  191.   ;; 
  192.  
  193.   restart) 
  194.  
  195.     $0 stop 
  196.  
  197.     $0 start 
  198.  
  199.   ;; 
  200.  
  201.   reload) 
  202.  
  203.     echo -n "Reload service php-fpm " 
  204.  
  205.     if [ ! -r $php_fpm_PID ] ; then 
  206.  
  207.       echo "warning, no pid file found - php-fpm is not running ?" 
  208.  
  209.       exit 1 
  210.  
  211.     fi 
  212.  
  213.     kill -USR2 `cat $php_fpm_PID` 
  214.  
  215.     echo " done" 
  216.  
  217.   ;; 
  218.  
  219.   *) 
  220.  
  221.     echo "Usage: $0 {start|stop|force-quit|restart|reload|status}" 
  222.  
  223.     exit 1 
  224.  
  225.   ;; 
  226.  
  227. 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启动脚本

分享到: