首页主机资讯CentOS PHP项目如何部署优化

CentOS PHP项目如何部署优化

时间2025-12-11 21:48:03发布访客分类主机资讯浏览1315
导读: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_configPermitRootLogin no,重启sshd
  • SELinux与常见坑
    • 排查权限问题时优先确认SELinux是否拦截(不要直接长期禁用),必要时用semanage fcontext/restorecon修正自定义目录上下文
    • 常见坑:防火墙未放行80/443、PHP模块缺失、数据库未执行mysql_secure_installation、虚拟主机配置错误

二 部署架构与组件安装

  • 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
  • 数据库安全初始化
    • 执行:mysql_secure_installation,设置强密码、删除匿名用户、禁止root远程、移除测试库
  • 虚拟主机与目录
    • 示例(Apache):创建/var/www/myapp,配置/etc/httpd/conf.d/myapp.confDocumentRoot< Directory> ,设置AllowOverride All以支持.htaccess
    • 权限:chown -R apache:apache /var/www/myapp
  • 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 -
  • 静态资源与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=256M
    • upload_max_filesize=32M
    • post_max_size=64M(需≥上传大小)
    • max_execution_time=300
    • 生产环境建议:display_errors=Offlog_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并压测微调

四 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/ExpiresETag/Last-Modified
    • 并发与限速:合理设置worker_processesworker_connections,对异常来源限流/限速
  • Apache建议
    • 启用持久连接:KeepAlive On
    • 启用压缩:mod_deflate
    • 启用缓存与过期:mod_cachemod_expires
    • MPM调优(prefork示例):StartServers 5MinSpareServers 5MaxSpareServers 10MaxRequestWorkers 150(按内存与并发压测调整)
  • 传输与协议
    • 全站HTTPS,优先TLS 1.2/1.3,合理配置加密套件与HSTS
    • 启用HTTP/2提升多路复用与首包性能

五 数据库与缓存及运维监控

  • MariaDB/MySQL
    • 关键内存参数:设置innodb_buffer_pool_size为可用内存的50%–70%(专用数据库场景)
    • 查询与索引优化、慢查询日志、定期分析与优化表
  • 应用层缓存
    • 引入Redis/Memcached做页面/数据缓存,降低数据库压力
  • 监控与日志
    • 资源监控:htopnmonsar
    • 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
centos selinux如何限制进程权限 如何监控CentOS PHP应用性能

游客 回复需填写必要信息