温馨提示×

Linux下php-fpm如何配置优化

小樊
116
2025-05-05 15:25:56
栏目: 编程语言

在Linux下配置和优化PHP-FPM(FastCGI Process Manager)可以显著提高PHP应用程序的性能。以下是一些常见的配置和优化步骤:

1. 安装PHP-FPM

首先,确保你已经安装了PHP-FPM。你可以使用包管理器来安装,例如在Ubuntu上:

sudo apt-get update
sudo apt-get install php-fpm

2. 配置PHP-FPM

PHP-FPM的配置文件通常位于/etc/php/{version}/fpm/pool.d/www.conf,其中{version}是你的PHP版本号。

2.1 基本配置

  • listen: 指定PHP-FPM监听的地址和端口。通常设置为/run/php/php{version}-fpm.sock127.0.0.1:9000
    listen = /run/php/php{version}-fpm.sock
    
  • listen.ownerlisten.group: 设置监听套接字的属主和属组。
    listen.owner = www-data
    listen.group = www-data
    
  • usergroup: 设置PHP-FPM进程的用户和组。
    user = www-data
    group = www-data
    

2.2 进程管理

  • pm: 进程管理模式,可选dynamicondemandstatic
    pm = dynamic
    pm.max_children = 50
    pm.start_servers = 5
    pm.min_spare_servers = 5
    pm.max_spare_servers = 35
    
  • pm.max_requests: 每个子进程在重启前处理的请求数。
    pm.max_requests = 500
    

2.3 性能优化

  • request_terminate_timeout: 设置请求超时时间。
    request_terminate_timeout = 0
    
  • slowlog: 慢查询日志。
    slowlog = /var/log/php-fpm/www-slow.log
    slowlog_latency = 10s
    

3. 调整PHP配置

编辑/etc/php/{version}/fpm/php.ini文件进行PHP配置优化。

3.1 内存限制

  • memory_limit: 设置每个PHP进程的内存限制。
    memory_limit = 256M
    

3.2 执行时间

  • max_execution_time: 设置脚本的最大执行时间。
    max_execution_time = 30
    

3.3 错误日志

  • error_log: 设置错误日志文件。
    error_log = /var/log/php-fpm/error.log
    

4. 启动和监控PHP-FPM

启动PHP-FPM服务:

sudo systemctl start php{version}-fpm
sudo systemctl enable php{version}-fpm

监控PHP-FPM状态:

sudo systemctl status php{version}-fpm

5. 使用Nginx或Apache作为反向代理

如果你使用Nginx或Apache作为Web服务器,确保正确配置它们以使用PHP-FPM。

Nginx配置示例

server {
    listen 80;
    server_name example.com;

    root /var/www/html;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php{version}-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Apache配置示例

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/html

    <Directory /var/www/html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    <FilesMatch \.php$>
        SetHandler "proxy:unix:/run/php/php{version}-fpm.sock|fcgi://localhost"
    </FilesMatch>
</VirtualHost>

通过以上步骤,你可以有效地配置和优化PHP-FPM,从而提升你的PHP应用程序的性能。

0