使用 PHP-FPM(FastCGI Process Manager)可以显著提升基于 Ubuntu 的网站的性能。PHP-FPM 是一个 PHP FastCGI 实现,具有进程管理功能,能够更有效地处理 PHP 请求。以下是使用 PHP-FPM 提升网站速度的详细步骤:
首先,确保你的系统已经安装了 PHP 以及 PHP-FPM。你可以根据需要选择不同的 PHP 版本。以下示例以安装 PHP 8.1 和 PHP-FPM 为例。
sudo apt update
sudo apt install php8.1 php8.1-fpm
如果你需要其他 PHP 扩展,可以使用以下命令安装:
sudo apt install php8.1-mysql php8.1-curl php8.1-xml php8.1-gd
PHP-FPM 的配置文件通常位于 /etc/php/8.1/fpm/
目录下。主要的配置文件包括:
php-fpm.conf
:主配置文件。www.conf
:包含与进程管理相关的设置。默认情况下,PHP-FPM 可能监听 Unix socket 或 TCP socket。对于大多数本地环境,使用 Unix socket 性能更优。编辑 www.conf
文件:
sudo nano /etc/php/8.1/fpm/pool.d/www.conf
找到以下行并取消注释(删除行首的分号):
;listen = /run/php/php8.1-fpm.sock
修改为:
listen = /run/php/php8.1-fpm.sock
根据服务器的内存和负载情况,调整 PHP-FPM 的进程数。编辑 www.conf
文件,找到以下参数并进行适当调整:
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 35
pm.max_children
:允许的最大子进程数,计算公式为:(可用内存 - 1MB) / 单个 PHP 进程的内存占用
。pm.start_servers
、pm.min_spare_servers
和 pm.max_spare_servers
:根据服务器负载动态调整。请求超时:设置合理的请求处理时间,防止长时间运行的脚本占用资源。
request_terminate_timeout = 30s
日志管理:适当调整日志级别,避免过多的日志写入影响性能。
catch_workers_output = yes
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on
修改完成后,保存并退出编辑器。
确保已经安装了 Nginx:
sudo apt install nginx
编辑 Nginx 的站点配置文件,通常位于 /etc/nginx/sites-available/
目录下。例如,编辑默认站点:
sudo nano /etc/nginx/sites-available/default
找到处理 PHP 请求的部分,修改 fastcgi_pass
指向 PHP-FPM 的 Unix socket:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
测试 Nginx 配置并重启服务:
sudo nginx -t
sudo systemctl restart nginx
确保已经安装了 Apache 和必要的 PHP 模块:
sudo apt install apache2 libapache2-mod-fcgid
启用 mod_fcgid
:
sudo a2enmod fcgid
编辑 Apache 的配置文件(例如 /etc/apache2/sites-available/000-default.conf
),添加或修改以下内容:
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php8.1-fpm.sock|fcgi://localhost"
</FilesMatch>
或者,使用 mod_proxy_fcgi
:
<Location "/">
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://localhost/var/www/html/$1
</Location>
调整 Apache 的 FCGI 设置,例如最大请求数、进程数等,以优化性能。
测试 Apache 配置并重启服务:
sudo apache2ctl configtest
sudo systemctl restart apache2
优化 PHP 的 php.ini
文件可以进一步提升性能。编辑 php.ini
文件:
sudo nano /etc/php/8.1/fpm/php.ini
以下是一些常用的优化选项:
内存限制:根据需要调整 memory_limit
。
memory_limit = 256M
错误报告:在生产环境中关闭错误显示,开启日志记录。
display_errors = Off
log_errors = On
文件上传:调整上传文件的大小限制。
upload_max_filesize = 50M
post_max_size = 50M
OPcache:启用并配置 OPcache 以加速 PHP 脚本执行。
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
修改完成后,保存并退出编辑器。
使用 PHP 7.x 或更高版本:新版本的 PHP 在性能和安全性上都有显著提升。
启用 Gzip 压缩:减少传输数据的大小,加快页面加载速度。
使用 CDN:将静态资源(如图片、CSS、JS)托管到内容分发网络,减轻服务器压力。
数据库优化:优化数据库查询,使用缓存机制(如 Redis、Memcached)减少数据库负载。
开启 HTTP/2:提升多路复用和头部压缩,加快页面加载速度。
使用监控工具(如 htop
、php-fpm status
)实时监控服务器和 PHP-FPM 的性能,根据实际情况进一步调整配置参数,以达到最佳性能。
sudo htop
sudo systemctl status php8.1-fpm
通过以上步骤,你可以有效地使用 PHP-FPM 提升基于 Ubuntu 的网站性能。根据具体需求和环境,可能需要进一步调整和优化配置。