CentOS 7下PHP与Nginx环境配置与优化实战指南

在当今互联网时代,构建一个高性能、稳定的Web服务器环境是每位开发者和技术运维人员的必修课。CentOS 7作为一款广受欢迎的Linux发行版,以其稳定性和安全性著称,而PHP和Nginx则是构建动态网站和应用的黄金搭档。本文将为您提供一份详尽的实战指南,帮助您在CentOS 7环境下配置和优化PHP与Nginx。

一、环境准备

在开始之前,确保您的CentOS 7系统已更新到最新版本,并且已安装必要的开发工具和库。

sudo yum update -y
sudo yum install -y epel-release
sudo yum groupinstall -y "Development Tools"

二、安装Nginx

  1. 安装Nginx

使用Yum包管理器安装Nginx:

   sudo yum install -y nginx
  1. 启动并设置Nginx开机自启
   sudo systemctl start nginx
   sudo systemctl enable nginx
  1. 验证Nginx安装

打开浏览器,访问服务器的IP地址,若看到Nginx的欢迎页面,说明安装成功。

三、安装PHP

  1. 安装PHP及相关扩展

安装PHP 7及其常用扩展:

   sudo yum install -y php php-fpm php-mysql php-gd php-xml php-mbstring php-json
  1. 启动并设置PHP-FPM开机自启
   sudo systemctl start php-fpm
   sudo systemctl enable php-fpm
  1. 配置PHP-FPM

编辑PHP-FPM配置文件,优化性能:

   sudo vi /etc/php-fpm.d/www.conf

找到以下配置项并进行修改:

   listen = 127.0.0.1:9000
   pm = dynamic
   pm.max_children = 50
   pm.start_servers = 10
   pm.min_spare_servers = 5
   pm.max_spare_servers = 35

保存并重启PHP-FPM:

   sudo systemctl restart php-fpm

四、配置Nginx与PHP协同工作

  1. 编辑Nginx配置文件

创建一个新的Nginx配置文件,用于处理PHP请求:

   sudo vi /etc/nginx/conf.d/php.conf

添加以下内容:

   server {
       listen 80;
       server_name your_domain_or_ip;

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

       location / {
           try_files $uri $uri/ /index.php?$query_string;
       }

       location ~ \.php$ {
           include snippets/fastcgi-php.conf;
           fastcgi_pass 127.0.0.1:9000;
       }

       location ~ /\.ht {
           deny all;
       }
   }
  1. 重启Nginx

使配置生效:

   sudo systemctl restart nginx

五、性能优化

  1. 优化Nginx配置

编辑Nginx主配置文件,提升性能:

   sudo vi /etc/nginx/nginx.conf
   worker_processes auto;
   worker_rlimit_nofile 10240;

   events {
       use epoll;
       worker_connections 4096;
   }

   http {
       include       mime.types;
       default_type  application/octet-stream;

       sendfile        on;
       tcp_nopush      on;
       tcp_nodelay     on;
       keepalive_timeout  65;
       types_hash_max_size 2048;

       gzip  on;
       gzip_disable "msie6";
       gzip_vary on;
       gzip_proxied any;
       gzip_comp_level 6;
       gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;
       gzip_buffers 16 8k;
       gzip_http_version 1.1;

       include /etc/nginx/conf.d/*.conf;
   }
  1. 优化PHP配置

编辑PHP配置文件,提升性能:

   sudo vi /etc/php.ini

找到以下配置项并进行修改:

   max_execution_time = 300
   memory_limit = 256M
   upload_max_filesize = 64M
   post_max_size = 64M

保存并重启PHP-FPM:

   sudo systemctl restart php-fpm

六、安全加固

  1. 配置防火墙

开放必要的端口:

   sudo firewall-cmd --permanent --zone=public --add-service=http
   sudo firewall-cmd --permanent --zone=public --add-service=https
   sudo firewall-cmd --reload
  1. 限制目录访问

在Nginx配置中,限制对敏感目录的访问:

   location ~* /(?:uploads|files)/.*\.php$ {
       deny all;
   }
  1. 启用SSL

为Nginx配置SSL证书,提升安全性:

   sudo yum install -y mod_ssl
   sudo vi /etc/nginx/conf.d/ssl.conf

添加以下内容:

   server {
       listen 443 ssl;
       server_name your_domain_or_ip;

       ssl_certificate /etc/ssl/certs/your_certificate.crt;
       ssl_certificate_key /etc/ssl/private/your_private.key;

       ssl_session_timeout 1d;
       ssl_session_cache shared:SSL:50m;
       ssl_session_tickets off;

       ssl_protocols TLSv1.2 TLSv1.3;
       ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
       ssl_prefer_server_ciphers on;

       add_header Strict-Transport-Security "max-age=31536000" always;

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

       location / {
           try_files $uri $uri/ /index.php?$query_string;
       }

       location ~ \.php$ {
           include snippets/fastcgi-php.conf;
           fastcgi_pass 127.0.0.1:9000;
       }

       location ~ /\.ht {
           deny all;
       }
   }

重启Nginx使配置生效:

   sudo systemctl restart nginx

七、总结

通过本文的详细指导,您已在CentOS 7环境下成功配置并优化了PHP与Nginx环境。从基础安装到性能优化和安全加固,每一步都经过精心设计,确保您的Web服务器既高效又安全。希望这份指南能为您的开发工作提供有力支持,助您在互联网浪潮中乘风破浪。

在实际应用中,根据具体需求和场景,您还可以进一步细化和调整配置,以达到最佳效果。祝您使用愉快!