实验环境:CentOS7
[root@~ localhost]#yum -y install php-fpm php-fpm包:用于将php运行于fpm模式
#在安装php-fpm时,一般同时安装如下包
[root@~ localhost]#yum -y install php-mbstring php-mcrypt php-mysql
[root@~ localhost]#rpm -ql php-fpm /etc/logrotate.d/php-fpm /etc/php-fpm.conf #服务配置文件 /etc/php-fpm.d /etc/php-fpm.d/www.conf #主配置文件 /etc/sysconfig/php-fpm /run/php-fpm /usr/lib/systemd/system/php-fpm.service /usr/lib/tmpfiles.d/php-fpm.conf /usr/sbin/php-fpm /usr/share/doc/php-fpm-5.4.16 /usr/share/doc/php-fpm-5.4.16/fpm_LICENSE /usr/share/doc/php-fpm-5.4.16/php-fpm.conf.default /usr/share/fpm /usr/share/fpm/status.html #内置的网页状态测试页面 /usr/share/man/man8/php-fpm.8.gz /var/log/php-fpm [root@~ localhost]#vi /etc/php-fpm.conf ;;;;;;;;;;;;;;;;;;;;; ; FPM Configuration ; ;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;; ; Global Options ; #全局配置选项 ;;;;;;;;;;;;;;;;;; [global] ; Pid file ; Default Value: none pid = /run/php-fpm/php-fpm.pid #内存中的进程编号文件 ; Error log file ; Default Value: /var/log/php-fpm.log error_log = /var/log/php-fpm/error.log #错误日志文件 ; Log level ; Possible Values: alert, error, warning, notice, debug ; Default Value: notice ;log_level = notice #定义日志级别 ; Send FPM to background. Set to 'no' to keep FPM in foreground for debugging. ; Default Value: yes daemonize = no #是否以守护进程的方式运行,no表示不是 ;;;;;;;;;;;;;;;;;;;; ; Pool Definitions ; #定义连接池,对应的文件是:/etc/php.-fpm.d/www.conf ;;;;;;;;;;;;;;;;;;;; ; See /etc/php-fpm.d/*.conf
#fpm模式监听的端口是9000
[root@php-fpm.d localhost]#cp -av www.conf{,.bak} #修改配置文件时先备份 ‘www.conf’ -> ‘www.conf.bak’ [root@php-fpm.d localhost]#vi www.conf ; Start a new pool named 'www'. [www] ; Note: This value is mandatory. listen = 127.0.0.1:9000 #监听本地的ip和端口; ; Set listen(2) backlog. A value of '-1' means unlimited. ; Default Value: -1
;listen.backlog = -1 #后援队列:当请求数大于并发数时,设置排队等待的请求数;-1表示无限制
listen.allowed_clients = 127.0.0.1 #授权设置,允许那些主机可以连接本服务主机;若httpd在别的主机,则需要修改
user = apache #运行进程的用户
; RPM: Keep a group allowed to write in log dir.
group = apache #运行进程的组
#运行子进程的方式:static 静态方式 和dynamic 动态方式
; Choose how the process manager will control the number of child processes.
; Possible Values:
; static - a fixed number (pm.max_children) of child processes;
; dynamic - the number of child processes are set dynamically based on the
; following directives:
; pm.max_children - the maximum number of children that can
; number then some children will be killed.
; Note: This value is mandatory.
pm = dynamic #以动态方式运行
; The number of child processes to be created when pm is set to 'static' and the
; maximum number of child processes to be created when pm is set to 'dynamic'.
; This value sets the limit on the number of simultaneous requests that will be
; served. Equivalent to the ApacheMaxClients directive with mpm_prefork.
; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP
; CGI.
; Note: Used when pm is set to either 'static' or 'dynamic'
; Note: This value is mandatory.
pm.max_children = 50 #最大子进程数
; The number of child processes created on startup.
; Note: Used only when pm is set to 'dynamic'
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
pm.start_servers = 5 #服务启动,先创建的服务数量
; The desired minimum number of idle server processes.
; Note: Used only when pm is set to 'dynamic'
; Note: Mandatory when pm is set to 'dynamic'
pm.min_spare_servers = 5 #启动的最小空闲服务数量,应大于启动时创建的服务数
; The desired maximum number of idle server processes.
; Note: Used only when pm is set to 'dynamic'
; Note: Mandatory when pm is set to 'dynamic'
pm.max_spare_servers = 35 #启动的最大空闲服务数量
; The number of requests each child process should execute before respawning.
; This can be useful to work around memory leaks in 3rd party libraries. For
; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
; Default Value: 0
;pm.max_requests = 500 #每个子进程最多响应多少个请求,然后关闭
; The URI to view the FPM status page. If this value is not set, no URI will be
; recognized as a status page. By default, the status page shows the following
; information:
; accepted conn - the number of request accepted by the pool;
; pool - the name of the pool;
; may conflict with a real PHP file.
; Default Value: not set
pm.status_path = /pmstatus #启用此行,内置状态页,改成pmstatus
; may conflict with a real PHP file.
; Default Value: not set
ping.path = /ping #服务器远程健康状况探测,检测服务器是否正常
; This directive may be used to customize the response of a ping request. The
; response is formatted as text/plain with a 200 response code.
; Default Value: pong
ping.response = pong #探测回应
; The timeout for serving a single request after which the worker process will
; be killed. This option should be used when the 'max_execution_time' ini option
; does not stop script execution for some reason. A value of '0' means 'off'.
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
; Default Value: 0
;request_terminate_timeout = 0 #响应超时时间,0表示不超时
; The timeout for serving a single request after which a PHP backtrace will be
; dumped to the 'slowlog' file. A value of '0s' means 'off'.
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
; Set max core size rlimit.
; Possible Values: 'unlimited' or an integer greater or equal to 0
; Default Value: system defined value
;rlimit_core = 0
; prevent configuration mistakes on the web server side. You should only limit
; FPM to .php extensions to prevent malicious users to use other extensions to
; exectute php code.
; Note: set an empty value to allow all extensions.
; Default Value: .php
;security.limit_extensions = .php .php3 .php4 .php5
; Additional php.ini defines, specific to this pool of workers. These settings
; overwrite the values previously defined in the php.ini. The directives are the
; same as the PHP SAPI:
; php_value/php_flag - you can set classic ini defines which can
pm.min_spare_servers = 5
; The desired maximum number of idle server processes.
; Note: Used only when pm is set to 'dynamic'
; Note: Mandatory when pm is set to 'dynamic'
pm.max_spare_servers = 35
; The number of requests each child process should execute before respawning.
; This can be useful to work around memory leaks in 3rd party libraries. For
; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
; Default Value: 0
;pm.max_requests = 500
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session
#服务器端保存的会话的路径,默认没有创建,需手动创建,并将属主和属组修改修改成此进程的属主和属组,即apache:apache
"www.conf" 226L, 10018C
[root@php-fpm.d localhost]#mkdir -pv /var/lib/php/session #创建会话的文件 [root@php-fpm.d localhost]#chown apache:apache /var/lib/php/session #修改文件的属组属组为apache:apache [root@php-fpm.d localhost]#systemctl start php-fpm.service #启动php-fpm服务 [root@php-fpm.d localhost]#ss -ntl |grep "9000" #检查9000端口是否启动 LISTEN 0 128 127.0.0.1:9000 *:* [root@php-fpm.d localhost]#ps aux | grep "php-fpm" #检查主进程和子进程是否按照配置生成 root 43438 0.8 1.1 330704 10440 ? Ss 13:05 0:00 php-fpm: master process (/etc/php-fpm.conf) apache 43440 0.0 0.5 332788 5060 ? S 13:05 0:00 php-fpm: pool www apache 43441 0.0 0.5 332788 5060 ? S 13:05 0:00 php-fpm: pool www apache 43442 0.0 0.5 332788 5060 ? S 13:05 0:00 php-fpm: pool www apache 43443 0.0 0.5 332788 5060 ? S 13:05 0:00 php-fpm: pool www apache 43444 0.0 0.5 332788 5060 ? S 13:05 0:00 php-fpm: pool www root 43465 0.0 0.1 112648 964 pts/5 S+ 13:07 0:00 grep --color=auto php-fpm