FastCGI 是一种让交互程序与 Web 服务器通信的协议,相比传统 CGI 模式,它具有以下优势: - 持久化进程,减少进程创建销毁开销 - 更高的并发处理能力 - 更低的内存占用
# Ubuntu/Debian
sudo apt-get install nginx php-fpm
# CentOS/RHEL
sudo yum install nginx php-fpm
编辑 /etc/php-fpm.conf
或 /etc/php/{version}/fpm/php-fpm.conf
:
[global]
pid = /run/php-fpm.pid
error_log = /var/log/php-fpm.log
daemonize = yes
[www]
listen = /run/php-fpm.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
user = www-data
group = www-data
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
编辑 /etc/nginx/sites-available/default
或创建新的虚拟主机配置:
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-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
在 Nginx 配置中添加以下 FastCGI 缓存参数:
fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=PHP_CACHE:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
server {
# ... 其他配置
location ~ \.php$ {
# ... 原有配置
fastcgi_cache PHP_CACHE;
fastcgi_cache_valid 200 60m;
fastcgi_cache_bypass $no_cache;
fastcgi_no_cache $no_cache;
add_header X-Cache $upstream_cache_status;
}
}
# 启动服务
sudo systemctl start php-fpm
sudo systemctl start nginx
# 设置开机启动
sudo systemctl enable php-fpm
sudo systemctl enable nginx
# 创建测试文件
echo "<?php phpinfo(); ?>" > /var/www/html/info.php
# 测试访问
curl http://localhost/info.php
根据服务器资源调整 PHP-FPM 进程数:
pm = dynamic
pm.max_children = (总内存MB / 每个PHP进程平均内存MB) * 1.1
pm.start_servers = CPU核心数 * 2
pm.min_spare_servers = CPU核心数
pm.max_spare_servers = CPU核心数 * 2
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
编辑 /etc/php/{version}/fpm/php.ini
:
[opcache]
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
502 Bad Gateway 错误:
systemctl status php-fpm
/var/log/php-fpm.log
性能问题:
top
或 htop
监控资源使用缓存不生效:
X-Cache
字段通过以上配置,您的 Nginx + PHP + FastCGI 环境将获得显著的性能提升。根据实际应用负载情况,可能需要进一步微调参数。