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
- 安装Nginx
使用Yum包管理器安装Nginx:
sudo yum install -y nginx
- 启动并设置Nginx开机自启
sudo systemctl start nginx
sudo systemctl enable nginx
- 验证Nginx安装
打开浏览器,访问服务器的IP地址,若看到Nginx的欢迎页面,说明安装成功。
三、安装PHP
- 安装PHP及相关扩展
安装PHP 7及其常用扩展:
sudo yum install -y php php-fpm php-mysql php-gd php-xml php-mbstring php-json
- 启动并设置PHP-FPM开机自启
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
- 配置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协同工作
- 编辑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;
}
}
- 重启Nginx
使配置生效:
sudo systemctl restart nginx
五、性能优化
- 优化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;
}
- 优化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
六、安全加固
- 配置防火墙
开放必要的端口:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
- 限制目录访问
在Nginx配置中,限制对敏感目录的访问:
location ~* /(?:uploads|files)/.*\.php$ {
deny all;
}
- 启用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服务器既高效又安全。希望这份指南能为您的开发工作提供有力支持,助您在互联网浪潮中乘风破浪。
在实际应用中,根据具体需求和场景,您还可以进一步细化和调整配置,以达到最佳效果。祝您使用愉快!