; 该文件中的所有配置均以分号 (;) 开头,代表注释行或不使用的指令
; 全局配置
[global]
; 进程 ID 文件位置,默认none
pid = /var/run/php-fpm.pid
; 错误日志文件位置,默认#INSTALL_PREFIX#/log/php-fpm.log
error_log = /var/log
Nginx Unit 初探及其性能对比分析
1. Nginx Unit 初探
Nginx Unit 是一个开源的,以 Nginx 为基础、支持多语言的 Web 服务器,它支持 Python,PHP,Go 等多语言应用程序,可以在不中断服务的情况下完成部署配置更改,以多种语言运行代码。而它运行多种语言的能力是基于内部路由器进程之间的隔离,路由器进程可终止传入的 HTTP 请求,以及应用程序进程的分组,路由器进程是持久的,不重新启动。
它具有以下特征:
使用 RESTful JSON API 进行动态重配置服务器;
同时支持多语言,多版本应用;
即将支持的特性有:
动态语言的进程管理功能;
TLS 支持;
TCP,HTTP,HTTPS,HTTP/2 路由和代理。…
译共享APC或OPcache:为什么多个PHP-FPM主机更好
前面我们说了,设置多个php-fpm进程池来分离网站。今天来聊聊多PHP-FPM主机。
您可能不知道APC或OPcache实际上是由PHP中的主进程持有的。APC的任何配置都需要来自.INI配置,以后不能通过ini_set()或php_admin_value覆盖。这是因为生成的PHP-FPM进程对APC缓存的大小或配置没有影响,因为它由主进程启动和管理。
这本质上意味着APC / OPcache缓存在所有PHP-FPM池之间共享。如果您只有一个网站可供服务,那就没问题了。如果您通过PHP-FPM在同一台服务器上有几十个站点,您应该知道它们都共享相同的APC / OPcache缓存。然后,APC或OPcache大小应该足够大,以保存所有站点的操作码缓存。
为避免这种情况,每个PHP-FPM池也可以单独启动并拥有自己的主进程。这意味着每个站点都可以拥有自己的APC或OPcache,并且可以独立于所有其他PHP-FPM池启动/停止。当需要激活新配置时,一个池配置的更改不会导致重新加载所有其他FPM池,这是“/etc/init.d/php-fpm reload”的默认行为(它将重新加载所有池)。…
原为PHP-FPM和nginx设置多个进程池而安全地运行多个网站
为PHP-FPM和nginx设置多个进程池而安全地运行多个网站
在本文中,我们将向您展示在不同Linux用户的LEMP上运行站点的安全性和隔离性优势。这将通过为每个nginx服务器块(站点或虚拟主机)创建不同的php-fpm进程池来完成。
设置安全LEMP的原因
在常见的LEMP设置下,只有一个php-fpm进程池为同一用户下的所有站点运行所有PHP脚本。这带来两个主要问题:
- 如果一个nginx服务器块上的Web应用程序(即子域或单独的站点)受到攻击,此服务器上的所有站点也将受到影响。攻击者能够读取其他站点的配置文件,包括数据库详细信息,甚至可以更改其文件。
- 如果您想让用户访问服务器上的站点,您几乎可以访问所有站点。例如,您的开发人员需要处理开发环境。但是,即使拥有非常严格的文件权限,您仍然可以在相同的服务器上访问所有站点,包括您的主站点。
原nginx不同站点的php-fpm的PHP_ADMIN_VALUE值会覆盖其它站点值的问题!
让我们看看这两个Nginx配置:
server {
listen 80;
server_name example.com;
location / {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME /var/www/html/site1/i.php;
fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root:/var/www/html/site1:/tmp/:/proc/"; #禁止跨目录访问
include fastcgi_params;
}
}
server {
listen 80;
server_name example.net;
location / {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME /var/www/html/site2/i.php;
include fastcgi_params;
}
… PHP-FPM 调优: 用 ‘pm static’ 达到最大性能
让我们来迅速了解一下怎样设置 PHP-FPM,以便达到高吞吐,低延迟以及稳定的使用 CPU 和内存的完美状态。在默认的情况下,大多数设置都将 PHP-FPM PM(进程管理器)设置为 dynamic
,或者当你有可用内存的问题时常建议你使用ondemand
。接下来,让我们根据 php.net 的官方文档来比较一下这两个管理选项和我最常用的设置 —— static
之间的区别:
- pm = dynamic:子进程的数量是根据以下指令来动态生成的:
pm.max_children
,pm.start_servers
,pm.min_spare_servers
,pm.max_spare_servers
. - pm = ondemand:在服务启动的时候根据
pm.start_servers
指令生成进程,而非动态生成。 - pm = static:子进程的数量是由
pm.max_children
指令来确定的。
查看…
【译】一行代码就将你的PHP-FPM内存占用降低至少一半
标题直译:如何减少
PHP-FPM
(php5-fpm
)内存占用50%
原标题:How to reduce PHP-FPM (php5-fpm) RAM usage by about 50%
英文原文:http://linuxbsdos.com/2015/02...
PHP-FPM
是PHP
的FastCGI
过程管理器。在类Unix
操作系统(包括Linux
以及BSD
系统)中,PHP-FPM
通过安装php5-fpm
(Linux
)或者php56-fpm
(FreeBSD 10.1
…
php-fpm优化方法详解
php-fpm优化方法
php-fpm存在两种方式,一种是直接开启指定数量的php-fpm进程,不再增加或者减少;
另一种则是开始时开启一定数量的php-fpm进程,当请求量变大时,动态的增加php-fpm进程数到上限,当空闲时自动释放空闲的进程数到一个下限。
这两种不同的执行方式,可以根据服务器的实际需求来进行调整。…
启用php-fpm状态详解
php-fpm和nginx一样内建了一个状态页,对于想了解php-fpm的状态以及监控php-fpm非常有帮助。为了后续的zabbix监控,我们需要先了解php-fpm状态页是怎么回事。
1. 启用php-fpm状态功能
1
2
|
# cat /usr/local/php-5.5.10/etc/php-fpm.conf | grep status_path
pm.status_path = /status
|
默认情况下为/status,当然也可以改成其他的,例如/ttlsa_status等等。
2. nginx配置
在默认主机里面加上location或者你希望能访问到的主机里面。
1
2
3
4
5
6
7
8
9
10
|
server {
listen * |
php-fpm解读-进程管理的三种模式
《我是程序媛》系列——php-fpm进程管理,感谢大表哥亲情赞助时间,读了php-fpm源码。
php-fpm进程管理一共有三种模式:ondemand、static、dynamic,我们可以在同一个fpm的master配置三种模式,看下图1。php-fpm的工作模式和nginx类似,都是一个master,多个worker模型。每个worker都在accept本pool内的监听套接字(linux已不存在惊群现象)。…
近期评论