CentOS PHP项目如何部署优化
导读:CentOS PHP项目部署与优化实操指南 一 基础环境与安全加固 系统初始化与基础工具 更新系统并安装常用工具:yum update -y && yum install -y wget curl vim net-too...
CentOS PHP项目部署与优化实操指南
一 基础环境与安全加固
- 系统初始化与基础工具
- 更新系统并安装常用工具:
yum update -y & & yum install -y wget curl vim net-tools - 设置主机名:
hostnamectl set-hostname lamp-server
- 更新系统并安装常用工具:
- 防火墙与安全组
- 启动并持久化防火墙:
systemctl start firewalld & & systemctl enable firewalld - 放行必要端口:
firewall-cmd --permanent --add-service={ http,https,ssh} & & firewall-cmd --reload - 云上安全组仅允许可信IP访问SSH,禁用root远程登录,创建普通用户并加入wheel组提权
- 启动并持久化防火墙:
- 用户与权限
- 创建部署用户:
adduser deployer & & passwd deployer - 赋权:
usermod -aG wheel deployer - 编辑
/etc/ssh/sshd_config:PermitRootLogin no,重启sshd
- 创建部署用户:
- SELinux与常见坑
- 排查权限问题时优先确认SELinux是否拦截(不要直接长期禁用),必要时用
semanage fcontext/restorecon修正自定义目录上下文 - 常见坑:防火墙未放行80/443、PHP模块缺失、数据库未执行
mysql_secure_installation、虚拟主机配置错误
- 排查权限问题时优先确认SELinux是否拦截(不要直接长期禁用),必要时用
二 部署架构与组件安装
- LAMP或LEMP选择
- 资源较小或动态内容为主:优先Apache + mod_php/php-fpm
- 高并发静态资源较多:优先Nginx + PHP-FPM
- 安装与启动
- Apache:
yum install -y httpd & & systemctl start httpd & & systemctl enable httpd - MariaDB:
yum install -y mariadb-server mariadb & & systemctl start mariadb & & systemctl enable mariadb - PHP与扩展:
yum install -y php php-mysqlnd php-fpm php-opcache php-gd php-xml php-mbstring
- Apache:
- 数据库安全初始化
- 执行:
mysql_secure_installation,设置强密码、删除匿名用户、禁止root远程、移除测试库
- 执行:
- 虚拟主机与目录
- 示例(Apache):创建
/var/www/myapp,配置/etc/httpd/conf.d/myapp.conf的DocumentRoot与< Directory>,设置AllowOverride All以支持.htaccess - 权限:
chown -R apache:apache /var/www/myapp
- 示例(Apache):创建
- HTTPS与证书
- Let’s Encrypt:
yum install -y certbot python3-certbot-apache - 签发证书:
certbot --apache -d myapp.example.com - 自动续期:
echo "0 3 * * * /usr/bin/certbot renew --quiet" | crontab -
- Let’s Encrypt:
- 静态资源与CDN
- 配置CDN回源到源站IP,静态资源(JS/CSS/图片)设置长期缓存
- Apache启用浏览器缓存示例:
< IfModule mod_expires.c> ExpiresActive On ExpiresByType image/jpg "access plus 1 year" ExpiresByType text/css "access plus 1 month" < /IfModule>
三 PHP与PHP-FPM性能优化
- OPcache加速
- 编辑
/etc/php.ini或/etc/php.d/opcache.ini:opcache.enable=1 opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=4000 opcache.revalidate_freq=60
- 编辑
- PHP运行时关键参数(按应用调整)
memory_limit=256Mupload_max_filesize=32Mpost_max_size=64M(需≥上传大小)max_execution_time=300- 生产环境建议:
display_errors=Off,log_errors=On
- PHP-FPM进程与请求优化(/etc/php-fpm.d/www.conf)
- 进程管理:
pm=dynamic - 并发与回收(示例,需按内存与压测校准):
pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 35 pm.max_requests = 500 request_terminate_timeout = 30s - 慢请求定位:
slowlog = /var/log/php-fpm/slow.log request_slowlog_timeout = 10s - 监听与权限(示例为套接字)
listen = /run/php/php-fpm.sock listen.owner = apache listen.group = apache listen.mode = 0660 user = apache group = apache
- 进程管理:
- 典型Nginx FastCGI示例
location ~ \.php$ { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass unix:/run/php/php-fpm.sock; } - 估算max_children(示例公式)
- 假设单PHP进程常驻内存约40MB,可用内存2GB,为系统与其他服务预留512MB,则:
- 可用于PHP的内存≈1536MB
- 估算:
max_children ≈ 1536 / 40 ≈ 38,可先设为32–40并压测微调
- 假设单PHP进程常驻内存约40MB,可用内存2GB,为系统与其他服务预留512MB,则:
四 Web服务器与网络层优化
- Nginx建议
- 启用HTTP/2:
listen 443 ssl http2; - 启用压缩:
gzip on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; - 高效传输:
sendfile on; tcp_nopush on; tcp_nodelay on; - 静态资源缓存:设置
Cache-Control/Expires与ETag/Last-Modified - 并发与限速:合理设置
worker_processes、worker_connections,对异常来源限流/限速
- 启用HTTP/2:
- Apache建议
- 启用持久连接:
KeepAlive On - 启用压缩:
mod_deflate - 启用缓存与过期:
mod_cache、mod_expires - MPM调优(prefork示例):
StartServers 5、MinSpareServers 5、MaxSpareServers 10、MaxRequestWorkers 150(按内存与并发压测调整)
- 启用持久连接:
- 传输与协议
- 全站HTTPS,优先TLS 1.2/1.3,合理配置加密套件与HSTS
- 启用HTTP/2提升多路复用与首包性能
五 数据库与缓存及运维监控
- MariaDB/MySQL
- 关键内存参数:设置
innodb_buffer_pool_size为可用内存的50%–70%(专用数据库场景) - 查询与索引优化、慢查询日志、定期分析与优化表
- 关键内存参数:设置
- 应用层缓存
- 引入Redis/Memcached做页面/数据缓存,降低数据库压力
- 监控与日志
- 资源监控:
htop、nmon、sar - Web与PHP日志:
tail -f /var/log/httpd/error_log、/var/log/php-fpm/error.log、/var/log/php-fpm/slow.log - 日志轮转:配置
/etc/logrotate.d/httpd与PHP-FPM日志轮转,避免磁盘撑满
- 资源监控:
- 高可用与扩展
- 流量增长时引入负载均衡与多实例,结合健康检查与故障转移
- 备份与回滚
- 数据库:
mysqldump定期备份(含时间点恢复方案) - 代码与配置:Git版本化与定期归档,回滚预案与演练
- 数据库:
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS PHP项目如何部署优化
本文地址: https://pptw.com/jishu/769825.html
