首先安装Nginx、PHP-FPM及必要扩展,配置虚拟主机并启用HTTPS;接着上传网站文件并设置正确权限;然后优化PHP-FPM进程配置;最后通过关闭信息暴露、限制上传、开启Gzip和缓存提升安全与性能。

将PHP网站部署到Nginx服务器需要正确配置Nginx、PHP-FPM,并确保文件权限、安全性和性能都达到生产环境要求。以下是完整的部署与优化方法,适用于常见的LAMP或LNMP架构迁移场景。
1. 安装必要的服务组件
在Linux系统(如Ubuntu/Debian/CentOS)上安装Nginx、PHP及PHP-FPM:
Ubuntu/Debian示例:
CentOS示例:
立即学习“PHP免费学习笔记(深入)”;
- sudo yum install epel-release
- sudo yum install nginx php-fpm php-mysqlnd php-xml php-json -y
安装完成后启动并设置开机自启:
- sudo systemctl start nginx && sudo systemctl enable nginx
- sudo systemctl start php-fpm && sudo systemctl enable php-fpm
2. 配置Nginx虚拟主机支持PHP
创建站点配置文件,例如 /etc/nginx/sites-available/your-site:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
root /var/www/html/your-php-site;
index index.php index.html;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock; # 根据实际PHP版本调整
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}}
启用站点(Ubuntu为例):
- sudo ln -s /etc/nginx/sites-available/your-site /etc/nginx/sites-enabled/
- sudo nginx -t # 检查配置语法
- sudo systemctl reload nginx
3. 上传PHP网站文件并设置权限
将PHP项目文件上传至指定目录,如 /var/www/html/your-php-site:
- sudo chown -R www-data:www-data /var/www/html/your-php-site # Ubuntu
- sudo chmod -R 755 /var/www/html/your-php-site
- 对可写目录(如uploads、cache)适当放宽权限,但避免777
确保PHP进程用户与文件所有者一致,避免运行失败。
4. PHP-FPM优化配置
编辑PHP-FPM池配置(通常位于 /etc/php/{version}/fpm/pool.d/www.conf):
- user = www-data
- group = www-data
- listen.owner = www-data
- listen.group = www-data
- pm = dynamic
- pm.max_children = 20
- pm.start_servers = 4
- pm.min_spare_servers = 2
- pm.max_spare_servers = 10
根据服务器内存调整进程数,避免内存溢出。修改后重启PHP-FPM:
- sudo systemctl restart php7.4-fpm
5. 安全与性能优化建议
提升安全性与响应速度的关键措施:
- 启用HTTPS:使用Let's Encrypt免费证书,通过Certbot自动配置
- 禁用不必要的PHP信息暴露:在php.ini中设置 expose_php = Off
- 限制上传大小:post_max_size 和 upload_max_filesize 设为合理值
- 开启Gzip压缩:在Nginx配置中添加 gzip on; 提升传输效率
- 设置静态资源缓存:对css/js/image等添加expires头
- 防止直接访问敏感文件:如config.php,可在Nginx中用 location ~ 来deny
基本上就这些。只要Nginx能正确转发.php请求给PHP-FPM,权限设置得当,再配合基础优化,大多数PHP网站都能稳定运行。











