Nginx 和 PHP 的部署通常通过 FastCGI 协议(PHP-FPM)实现协作,以下是常见的部署方式及详细步骤:
# Ubuntu/Debian
sudo apt update
sudo apt install nginx php-fpm php-cli php-mysql php-curl php-gd # 根据需求安装其他PHP扩展
# CentOS/RHEL
sudo yum install nginx php-fpm php-mysqlnd php-common
/etc/php/{version}/fpm/pool.d/www.conf
):
ini
listen = /run/php/php-fpm.sock # 使用Unix Socket(推荐)或 listen = 127.0.0.1:9000(TCP端口)
user = www-data
group = www-data
bash
sudo systemctl restart php-fpm
编辑 Nginx 站点配置文件(如 /etc/nginx/sites-available/example.com
):
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.php index.html;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf; # 包含FastCGI通用配置
fastcgi_pass unix:/run/php/php-fpm.sock; # 与PHP-FPM的监听方式一致
# 如果使用TCP端口,则改为:fastcgi_pass 127.0.0.1:9000;
}
location ~ /\.ht {
deny all;
}
}
bash
sudo nginx -t
sudo systemctl restart nginx
/var/www/html/info.php
:
php
<?php phpinfo(); ?>
http://example.com/info.php
,确认显示 PHP 信息页面。性能调优
pm.max_children
, pm.start_servers
)。fastcgi_cache
)。安全性
nginx
location ~ \.php$ {
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_pass unix:/run/php/php-fpm.sock;
}
php.ini
中设置 disable_functions
)。HTTPS 支持
使用 Let's Encrypt 证书配置 SSL:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com
fastcgi_pass
路径/端口与 FPM 配置一致。root
路径正确,且 PHP 文件权限允许 Nginx 读取。.php
文件,且 PHP-FPM 服务正常。通过以上步骤,Nginx 和 PHP-FPM 即可协同工作,高效处理动态和静态内容。根据实际需求调整配置参数以优化性能与安全性。